Журнал LinuxFormat - перейти на главную

LXF162:Руб­ри­ка си­сад­ми­на

Материал из Linuxformat
Перейти к: навигация, поиск


(thumbnail)
Д-р Крис Браун Доктор обучает, пишет и консультирует по Linux. Ученая степень по физике элементарных частиц ему в этом совсем не помогает.

По рецептам доктора Брауна

Эзо­те­ри­че­ское сис­тем­ное ад­ми­ни­ст­ри­ро­ва­ние из при­чуд­ли­вых за­во­ро­тов ки­шок сер­вер­ной

Ту­ман­ные та­ри­фы

Вы­бор об­лач­ных сер­ви­сов на AWS ста­но­вит­ся та­ким же слож­ным, как и за­каз ко­фе в Стар­бак­се.

На за­ре эпо­хи Amazon Web Services все бы­ло про­сто: соз­даете несколь­ко эк­зем­п­ля­ров ком­пь­ю­те­ров, под­клю­чаете к ним же­ст­кие дис­ки – и за па­ру се­кунд готов по­ча­со­вой та­риф для вашей кон­фи­гу­ра­ции. Увы, все ме­ня­ет­ся. Те­перь, ес­ли вы не за­щи­ти­ли док­тор­скую дис­сер­та­цию по те­ме «Гео­де­зи­че­­ская пол­но­та бес­конеч­но диф­фе­рен­ци­руе­мых Ри­ма­но­вых про­странств», рас­чет та­ри­фа сведет вас с ума.

Но не бой­тесь – по­мощь ря­дом. У Amazon на http://calculator.s3.amazonaws.com/calc5.html есть «Про­стой каль­ку­ля­тор ме­сяч­но­го та­ри­фа». Узнав, сколь­ко вам нуж­но эк­зем­п­ля­ров ком­пь­ю­те­ров по тре­бо­ванию и сколь­ко за­ре­зер­ви­ро­ван­ных эк­зем­п­ля­ров, и ка­кие из 12 доступ­ных ти­пов эк­зем­п­ля­ров, сколь­ко эла­стич­ных IP-ад­ре­сов, и ка­кой объ­ем мес­та на дис­ке (и ка­кая его часть будет «из­бы­точ­ной») мо­гут вам по­на­до­бить­ся, сколь­ко за­про­сов PUT и GET вы вы­полните и сколь­ко VPN-со­единений уста­но­ви­те, а так­же... и... (в об­щем, спи­сок до­воль­но длин­ный, но, уве­рен, вы по­ня­ли идею), каль­ку­ля­тор по­счи­та­ет стои­мость. На рисун­ке внизу по­ка­за­на толь­ко од­на из 17 вкла­док по сер­ви­сам Amazon. Это ка­кое-то но­вое зна­чение сло­ва «про­стой», рань­ше я о нем не знал.

У Rackspace то­же есть каль­ку­ля­тор стои­мо­сти (http://www.rackspace.co.uk/cloudhosting/learn-more/calculator); он го­раз­до про­ще, пре­ж­де все­го по­то­му, что на­бор сер­ви­сов здесь го­раз­до беднее.

До­пустим, я понимаю пре­иму­ще­ст­ва бы­ст­рой мас­шта­би­руе­мо­сти и по­ча­со­вой та­ри­фи­ка­ции, а так­же пе­ре­но­са ка­пи­таль­ных за­трат в опе­ра­ци­он­ные, но мне все же ин­те­рес­но: когда, на­конец, кто-нибудь ска­жет, что рас­хо­да­ми управ­лять про­ще, имея соб­ст­вен­ный да­та-центр?

А что ду­маю я? Мне, по­жа­луй­ста, обез­жи­рен­ный вен­те мок­ка фрап­пу­чи­но с 50 % со­дер­жанием ко­феи­на, с со­бой.

Итак, вы хо­ти­те стать си­сад­ми­ном?

Вто­рая часть се­рии, ко­то­рая пре­вра­тит вас из но­вич­ка в звез­ду сис­тем­но­го ад­ми­ни­ст­ри­ро­ва­ния. Пого­во­рим о на­строй­ке се­ти.

В про­шлом ме­ся­це мы го­во­ри­ли о спо­со­бах уда­лен­но­го под­клю­чения к сер­ве­рам, ко­то­рые вы ад­минист­ри­руе­те. Мы об­су­ди­ли та­кие ути­ли­ты, как ssh и VNC. На сей раз мы по­го­во­рим об осно­вах на­строй­ки се­ти на сер­ве­ре. Вы нау­чи­тесь:

» За­да­вать IP-ад­рес, мас­ку под­се­ти и дру­гие па­ра­мет­ры се­те­вых ин­тер­фей­сов

» За­да­вать мар­шрут по умол­чанию

» За­да­вать ста­ти­че­­ские мар­шру­ты к за­дан­ным се­тям

» За­да­вать рас­по­ло­жение DNS-сер­ве­ров

» На­страи­вать Linux для ра­бо­ты в ка­че­­ст­ве мар­шру­ти­за­то­ра

Во всех стать­ях этой се­рии мы ра­бо­та­ем с CentOS 6.2. Ес­ли вы хо­ти­те по­сле­до­вать на­ше­му при­ме­ру (что я на­стоя­тель­но со­ве­тую сде­лать), уста­но­ви­те CentOS (на­при­мер, в вир­ту­аль­ную ма­ши­ну), как опи­са­но на пре­ды­ду­щем уро­ке. Итак, начнем...

Сер­ве­ры (по оп­ре­де­лению) су­ще­ст­ву­ют не изо­ли­ро­ван­но, а под­клю­ча­ют­ся к се­тям. На глав­ном ри­сун­ке по­ка­за­на ти­пич­ная си­туа­ция, в ко­то­рой мо­жет ока­зать­ся сер­вер. Ос­нов­ные пер­со­на­жи на­шей ис­то­рии (по­ка­зан­ные на ри­сун­ке) та­ко­вы:

A: Глав­ный ге­рой на­шей ис­то­рии. Это ком­пь­ю­тер с Linux, ко­то­рый мы на­страи­ва­ем. Он на­хо­дит­ся в се­ти 10.1.3.0/24, од­ной из внут­ренних се­тей ком­пании.

B: Ком­пь­ю­тер во внут­ренней се­ти 10.1.2.0/24.

C: Мар­шру­ти­за­тор, ко­то­рый свя­зы­ва­ет на­шу внут­рен­нюю сеть с кор­по­ра­тив­ной ма­ги­ст­ра­лью, се­тью 10.1.1.0/24. Как и осталь­ные мар­шру­ти­за­то­ры на ри­сун­ке, он мо­жет быть и спе­цуст­рой­ст­вом от из­го­то­ви­те­лей вро­де Cisco, и ком­пь­ю­те­ром с Linux. На его при­ме­ре мы рас­смот­рим на­строй­ку мар­шру­ти­за­то­ра Linux.

D: Мар­шру­ти­за­тор, свя­зы­ваю­щий внут­рен­нюю сеть с кор­по­ра­тив­ной ма­ги­ст­ра­лью.

E: Мар­шру­ти­за­тор, свя­зы­ваю­щий две внут­ренние се­ти.

F: DNS-сер­вер ком­пании (соб­ст­вен­ные DNS-сер­ве­ры есть не у всех ком­паний, но у этой есть).

G: Дру­гой ком­пь­ю­тер на кор­по­ра­тив­ной ма­ги­ст­ра­ли.

H: Мар­шру­ти­за­тор, свя­зы­ваю­щий всю ком­панию с Ин­тернетом. Его внешний IP-ад­рес – един­ст­вен­ный доступ­ный из­вне ад­рес на ри­сун­ке. Все осталь­ные на­хо­дят­ся в диа­па­зоне 10.0.0.0/8, вы­де­лен­ном толь­ко для внут­реннего ча­ст­но­го ис­поль­зо­вания.

(thumbnail)
Се­те­вая ар­хи­тек­ту­ра, ис­поль­зуе­мая для при­ме­ров в этой ста­тье. Кру­жоч­ки со стрел­ка­ми обо­зна­ча­ют мар­шру­ти­за­то­ры.

Ос­нов­ная часть на­строй­ки се­ти – за­дание IP-ад­ре­са и мас­ки под­се­ти се­те­во­го ин­тер­фей­са на­ше­го сер­ве­ра. В боль­шин­ст­ве ди­ст­ри­бу­ти­вов Linux это мож­но сде­лать в гра­фи­че­­ских ути­ли­тах, но мы пред­по­ла­га­ем, что на сер­ве­ре нет гра­фи­че­­ско­­го ра­бо­че­го сто­ла. По­это­му по­смот­рим, как из­менить со­от­вет­ст­вую­щие кон­фи­гу­ра­ци­он­ные фай­лы. Все это обыч­ные тек­сто­вые фай­лы, и слож­ностью они не отличаются.

В фай­ле /etc/sysconfig/network за­да­ют­ся неко­то­рые ба­зо­вые сис­тем­ные на­строй­ки, то есть те, что при­ме­ня­ют­ся ко всем се­те­вым ин­тер­фей­сам сер­ве­ра, а не толь­ко к од­но­му. Файл обыч­но очень ко­рот­кий, нечто вро­де это­го:

NETWORKING=yes

HOSTNAME=centos62.example.com

На­строй­ки для от­дель­ных се­те­вых ин­тер­фей­сов, в дан­ном слу­чае для eth0, за­да­ют­ся в фай­лах с име­на­ми ти­па /etc/sysconfig/network-scripts/ifcfg-eth0. Со­дер­жи­мое фай­ла в CentOS 6.2 за­ви­сит от на­стро­ек се­ти, за­дан­ных во вре­мя уста­нов­ки сис­те­мы, но в нем ско­рее все­го бу­дет сле­дую­щая стро­ка:

NM_CONTROLLED=”yes”

Она оз­на­ча­ет, что ин­тер­фейс на­хо­дит­ся под управ­лением NetworkManager – ути­ли­ты из Red Hat (пе­ре­ня­той дру­ги­ми ди­ст­ри­бу­ти­ва­ми), ко­то­рая пы­та­ет­ся под­дер­жать ак­тив­ное се­те­вое со­единение для ком­пь­ю­те­ров, ко­то­рые час­то пе­ре­ме­ща­ют­ся ме­ж­ду раз­лич­ны­ми се­тя­ми, с минима­льным вме­ша­тель­ст­вом поль­зо­ва­те­ля или во­об­ще без него. Об­на­ру­жив про­вод­ное Ethernet-со­единение, она ак­ти­ви­ру­ет его, а ес­ли сде­лать это не уда­ст­ся, то она под­клю­чит­ся к се­ти Wi-Fi, к ко­то­рой вы под­клю­ча­лись ранее. Эта ути­ли­та весь­ма удоб­на для но­ут­бу­ков, но для сер­ве­ров не го­дит­ся. По­это­му мы из­ба­вим­ся от NetworkManager и на­стро­им все вруч­ную.

Спер­ва оста­но­вим NetworkManager и от­меним его за­пуск во вре­мя за­груз­ки:

  1. service NetworkManager stop
  1. chkconfig NetworkManager off

Про­щай, NetworkManager. Да­лее от­кро­ем файл ifcfgeth0 и за­да­дим нуж­ные па­ра­мет­ры. Ес­ли вы сле­дуе­те за на­ми, помните, что IP-ад­рес, ко­то­рый вы уста­но­ви­те, дол­жен со­от­вет­ст­во­вать ва­шей се­ти и ско­рее все­го не сов­па­дет с ука­зан­ным здесь. Вот про­стой при­мер:

DEVICE=”eth0”

ONBOOT=yes

BOOTPROTO=none

IPADDR=10.1.3.8

NETMASK=255.255.255.0

IPV6INIT=no

Будь­те внима­тель­ны с син­так­си­сом фай­ла. Он об­ра­ба­ты­ва­ет­ся на­пря­мую обо­лоч­кой, по­это­му син­так­сис дол­жен быть вер­ным. В ча­ст­но­сти, во­круг зна­ка ра­вен­ст­ва не до­пуска­ют­ся про­бе­лы. Это сле­ду­ет со­блю­дать стро­го. Из­менив этот файл, пе­ре­за­пусти­те сеть, что­бы из­менения во­шли в си­лу:

  1. system network restart

Эта ко­ман­да оста­но­вит, а за­тем пе­ре­за­пустит все се­те­вые ин­тер­фей­сы (в дан­ном слу­чае их два – ин­тер­фейс об­рат­ной пет­ли и eth0). Ес­ли у вас несколь­ко се­те­вых ин­тер­фей­сов, то мож­но пе­ре­за­пустить толь­ко необ­хо­ди­мые ин­тер­фейсы, следующим об­ра­зом:

  1. ifdown eth0
  1. ifup eth0

Ка­кой бы спо­соб вы ни вы­бра­ли, те­перь нуж­но про­ве­рить, что ин­тер­фейс ак­ти­вен – это делается та­к:

  1. ifconfig eth0

eth0 Link encap:Ethernet HWaddr 08:00:27:6D:55:56

inet addr:10.1.3.8 Bcast:10.1.3.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500

Metric:1

Для крат­ко­сти я уда­лил несколь­ко строк вы­во­да, но здесь важ­но то, что кар­те на­зна­чен ад­рес IPV4. Как ви­ди­те, ин­тер­фейс ак­ти­вен и име­ет по­ла­гаю­щий­ся ему IP-ад­рес. Да, я знаю, что на man-странице ifconfig го­во­рит­ся, что та­кие ад­ре­са уже уста­ре­ли. Но все про­дол­жа­ют ими поль­зо­вать­ся. Как на­пи­сал Марк Твен, про­чи­тав свой нек­ро­лог в «Нью-Йорк Таймс»: «Слу­хи о мо­ей смер­ти силь­но пре­уве­ли­че­ны».

Еще один спо­соб ощу­тить те­п­лое, при­ят­ное и тре­пет­ное ощу­щение то­го, что ин­тер­фейс жив – по­про­бо­вать по­пин­го­вать его с дру­го­го ком­пь­ю­те­ра. Ес­ли сер­вер Linux за­пу­щен на вир­ту­аль­ной ма­шине, по­про­буй­те по­пин­го­вать его с хоста:

  1. ping -c1 10.1.3.8

PING 10.1.3.8 (10.1.3.8) 56(84) bytes of data.

64 bytes from 10.1.3.8: icmp_req=1 ttl=64 time=11.6 ms

--- 10.1.3.8 ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 11.661/11.661/11.661/0.000 ms

Фи­наль­ные штри­хи

Сле­дую­щая за­да­ча – оп­ре­де­лить шлюз по умол­чанию. На этот шлюз мы бу­дем пе­ре­на­прав­лять па­ке­ты, пред­на­зна­чен­ные для ком­пь­ю­те­ров вне на­шей се­ти, при усло­вии, что бо­лее точ­но­го мар­шру­та не за­да­но. По су­ти, шлюз по умол­чанию – по­следнее при­бе­жи­ще. На на­шей схе­ме се­ти шлюз по умол­чанию для сер­ве­ра Linux – это нижнее под­клю­чение к мар­шру­ти­за­то­ру C. Шлюз по умол­чанию мож­но ука­зать в фай­ле ifcfg-eth0 следующим об­ра­зом:

GATEWAY=10.1.3.254

На­ко­нец, нуж­но ска­зать сер­ве­ру, где на­хо­дят­ся его DNS-сер­ве­ры. Для это­го нуж­но до­ба­вить в файл /etc/resolv.conf стро­ку

nameserver 10.1.1.200

В дан­ном слу­чае мы поль­зу­ем­ся ме­ст­ным DNS-сер­ве­ром на на­шей кор­по­ра­тив­ной ма­ги­ст­ра­ли. Ско­рее все­го этот сер­вер бу­дет толь­ко кэ­ши­ро­вать за­про­сы, пе­ре­на­прав­ляя их на DNS-сер­вер бо­лее вы­со­ко­го уров­ня и за­по­ми­ная по­сле­до­ва­тель­ные за­про­сы одних и тех же дан­ных, ко­то­рые мож­но со­хранить в локаль­ном кэ­ше и за­тем бы­ст­ро из­влечь от­ту­да. Ес­ли у вас нет локаль­но­го сер­ве­ра DNS, ука­жи­те внешний.

Ка­ким бы ни был основ­ной сер­вер DNS, сто­ит ука­зать вто­рич­ный (про­сто до­бавь­те еще од­ну стро­ку nameserver в resolv.conf), что­бы раз­ре­шение имен про­дол­жа­ло ра­бо­тать, ес­ли основ­ной сер­вер вый­дет из строя. Это один из немно­гих слу­ча­ев, когда для сме­ны кон­фи­гу­ра­ции не нуж­но от­прав­лять сиг­нал де­мо­ну или что-то пе­ре­за­пускать. Из­менен­ный файл resolv.conf бу­дет про­чи­тан ав­то­ма­ти­че­­ски при вы­полнении сле­дую­ще­го за­про­са DNS.

На этом ба­зо­вая на­строй­ка сер­ве­ра за­кон­че­на. Од­на­ко кое-что мож­но улуч­шить. В дан­ной кон­фи­гу­ра­ции наш ком­пь­ю­тер об­ра­тит­ся к се­ти 10.1.2.0/24, прой­дя че­рез шлюз по умол­чанию C, а за­тем че­рез мар­шру­ти­за­тор D. Но, конеч­но, есть и бо­лее ко­рот­кий путь – че­рез мар­шру­ти­за­тор E. Что­бы сер­вер знал об этом мар­шру­те, нуж­но до­ба­вить при­мер­но та­кую стро­ку в файл /etc/sysconfig/network-scripts/routeeth0:

10.1.2.0/24 via 10.1.3.252

Таб­ли­цу мар­шру­ти­за­ции сер­ве­ра мож­но про­смот­реть так:

$ netstat -nr

Kernel IP routing table

Destination Gateway Genmask Iface

10.1.3.0 0.0.0.0 255.255.255.0 eth0

10.1.2.0 10.1.3.252 255.255.255.0 eth0

169.254.0.0 0.0.0.0 255.255.0.0 eth0

0.0.0.0 10.1.3.254 0.0.0.0 eth0

Я немно­го со­кра­тил вы­вод для эко­но­мии мес­та. Таб­ли­ца марш­ру­ти­за­ции ис­поль­зу­ет­ся так: когда вхо­дя­щий па­кет по­сту­па­ет на уро­вень об­ра­бот­чи­ка про­то­ко­ла IP яд­ра, он сравнива­ет­ся с ка­ж­дым мар­шру­том в таб­ли­це по оче­ре­ди. Сравнение вы­пол­ня­ет­ся пу­тем по­би­то­во­го объ­е­динения по «И» IP-ад­ре­са на­зна­чения па­ке­та со зна­чением Genmask в таб­ли­це, а за­тем сравнением ре­зуль­та­та со зна­чением Destination. Ес­ли они рав­ны, па­кет со­от­вет­ст­ву­ет пра­ви­лу. Из со­от­вет­ст­вую­щих пра­ви­лу па­ке­тов вы­би­ра­ет­ся са­мый кон­крет­ный мар­шрут (с са­мой длин­ным зна­чением Genmask).

В пер­вой стро­ке таб­ли­цы за­да­на сеть, на­пря­мую под­клю­чен­ная к на­шей (шлюз ука­зан как 0.0.0.0). Во вто­рой стро­ке оп­ре­де­ля­ет­ся мар­шрут к се­ти 10.1.2.0 (это сле­ду­ет из стро­ки, ко­то­рую мы по­мес­ти­ли в route-eth0). Тре­тью стро­ку до­ба­вил де­мон Avahi, реа­ли­зую­щий ар­хи­тек­ту­ру Zeroconf Apple; она не от­но­сит­ся к на­шей ис­то­рии. Чет­вер­тая стро­ка – мар­шрут по умол­чанию. Лю­бой па­кет, для ко­то­ро­го не на­шлось бо­лее точ­но­го мар­шру­та, бу­дет со­от­вет­ст­во­вать это­му пра­ви­лу, так как по­би­то­вое объ­е­динение по «И» лю­бо­го ад­ре­са с Genmask 0.0.0.0 бу­дет со­от­вет­ст­во­вать Destination 0.0.0.0.

На­строй­ка мар­шру­ти­за­то­ра

О сер­ве­ре Linux, с его един­ст­вен­ным се­те­вым ин­тер­фей­сом, мы по­го­во­ри­ли вдо­воль. По­ста­вим се­бе бо­лее ам­би­ци­оз­ную цель: на­стро­им ком­пь­ю­тер с Linux так, что­бы он иг­рал роль мар­шру­ти­за­то­ра C на схе­ме. Это очень про­сто. У это­го ком­пь­ю­те­ра два се­те­вых ин­тер­фей­са, eth0 и eth1. Пусть eth1 – верхний ин­тер­фейс с IP-ад­ре­сом 10.1.1.1, а eth0 – нижний с IP-ад­ре­сом 10.1.3.254. Вам по­на­до­бит­ся соз­дать два кон­фи­гу­ра­ци­он­ных фай­ла ifcfg-eth0 и ifcfg-eth1, ука­зав в ка­ж­дом со­от­вет­ст­вую­щий IP-ад­рес. Так­же не за­будь­те из­менить стро­ку DEVICE= в со­от­вет­ст­вии с именем ин­тер­фей­са. Един­ст­вен­ное, что оста­лось сде­лать для пре­вра­щения ком­пь­ю­те­ра в мар­шру­ти­за­тор – вклю­чить пе­ре­на­прав­ление IP-па­ке­тов (под этим я понимаю при­ем па­ке­та на один се­те­вой ин­тер­фейс и его пе­ре­на­прав­ление на дру­гой). Яд­ро Linux не де­ла­ет это­го по умол­чанию, но вклю­чить его лег­ко – про­сто про­пи­ши­те 1 в со­от­вет­ст­вую­щий па­ра­метр яд­ра та­ким об­ра­зом:

  1. echo 1 > /proc/sys/net/ipv4/ip_forward

То же са­мое мож­но сде­лать и по­ко­ро­че:

  1. sysctl -w net.ipv4.ip_forward=1

Эта ко­ман­да вклю­чит пе­ре­на­прав­ление IP-па­ке­тов. Что­бы из­менения ста­ли по­сто­ян­ны­ми, про­сто до­бавь­те та­кую стро­ку в /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Го­то­во! Вы толь­ко что на­строи­ли мар­шру­ти­за­тор! Ес­ли вы за­хо­ти­те по­про­бо­вать это на VMWare, VirtualBox или дру­гой тех­но­ло­гии вир­туа­ли­за­ции, до­ба­вить еще один се­те­вой ин­тер­фейс в ок­нах на­строй­ки вир­ту­аль­ной ма­ши­ны мож­но па­рой щелч­ков мы­ши. На са­мом де­ле, при же­лании мож­но соз­дать це­лую вир­ту­аль­ную се­те­вую ин­фра­струк­ту­ру.

Че­рез ме­сяц мы по­го­во­рим об управ­лении хранили­ща­ми дан­ных. Мы нау­чим­ся до­бав­лять дис­ки, раз­би­вать их на раз­де­лы, соз­да­вать фай­ло­вые сис­те­мы и мно­гое дру­гое. Уви­дим­ся! |

> Се­те­вая ар­хи­тек­ту­ра, ис­поль­зуе­мая для при­ме­ров в этой ста­тье. Кру­жоч­ки со стрел­ка­ми обо­зна­ча­ют мар­шру­ти­за­то­ры.

Персональные инструменты
купить
подписаться
Яндекс.Метрика