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

LXF169: Соз­дание се­ти

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «Категория: Учебники '''Сеть. За­ста­вим ком­пь­ю­те­ры с Linux об­щать­ся друг с дру­гом.'…»)
 
м (Olkol переименовал страницу LXF168: Соз­дание се­ти в LXF169: Соз­дание се­ти)
 
(не показаны 3 промежуточные версии 1 участника)
Строка 1: Строка 1:
 
[[Категория: Учебники]]
 
[[Категория: Учебники]]
 
'''Сеть. За­ста­вим ком­пь­ю­те­ры с Linux об­щать­ся друг с дру­гом.'''
 
'''Сеть. За­ста­вим ком­пь­ю­те­ры с Linux об­щать­ся друг с дру­гом.'''
 +
== Сеть: Построим мар­шру­ти­за­тор ==
  
''Сеть: Построим мар­шру­ти­за­тор''
 
 
''По­зна­ко­мив вас с кир­пи­чи­ка­ми, из ко­то­рых стро­ят се­ти, Джо­на­тан Ро­бертс скла­ды­ва­ет из них ре­аль­но ра­бо­таю­щую сеть.''
 
''По­зна­ко­мив вас с кир­пи­чи­ка­ми, из ко­то­рых стро­ят се­ти, Джо­на­тан Ро­бертс скла­ды­ва­ет из них ре­аль­но ра­бо­таю­щую сеть.''
 
[[Файл:Jonathan_opt.png |100px|left|thumb| '''Наш эксперт''' Джо­на­тан Ро­бертс сбе­жал из Ба­шен Linux Format, что­бы по­ис­кать сча­стья в ка­че­­ст­ве си­сад­ми­на.
 
[[Файл:Jonathan_opt.png |100px|left|thumb| '''Наш эксперт''' Джо­на­тан Ро­бертс сбе­жал из Ба­шен Linux Format, что­бы по­ис­кать сча­стья в ка­че­­ст­ве си­сад­ми­на.
Строка 18: Строка 18:
 
За­тем по­вто­ри­те те же ша­ги для вто­рой ВМ, убе­див­шись, что она под­клю­че­на к той же внут­ренней се­ти. Соз­дав вир­ту­аль­ные ма­ши­ны с дву­мя та­ки­ми се­те­вы­ми ин­тер­фей­са­ми, как у нас, мы сде­ла­ем так, что они обе смо­гут под­клю­чать­ся к Ин­тернету (че­рез NAT по умол­чанию), но так­же смо­гут и взаи­мо­дей­ст­во­вать друг с дру­гом на­пря­мую по внут­ренней се­ти, ко­то­рую мы до­ба­ви­ли. Эта внут­рен­няя сеть эк­ви­ва­лент­на под­клю­чению двух вир­ту­аль­ных ма­шин к од­но­му ком­му­та­то­ру [switch] или про­сто­му со­единению их се­те­вым ка­бе­лем.
 
За­тем по­вто­ри­те те же ша­ги для вто­рой ВМ, убе­див­шись, что она под­клю­че­на к той же внут­ренней се­ти. Соз­дав вир­ту­аль­ные ма­ши­ны с дву­мя та­ки­ми се­те­вы­ми ин­тер­фей­са­ми, как у нас, мы сде­ла­ем так, что они обе смо­гут под­клю­чать­ся к Ин­тернету (че­рез NAT по умол­чанию), но так­же смо­гут и взаи­мо­дей­ст­во­вать друг с дру­гом на­пря­мую по внут­ренней се­ти, ко­то­рую мы до­ба­ви­ли. Эта внут­рен­няя сеть эк­ви­ва­лент­на под­клю­чению двух вир­ту­аль­ных ма­шин к од­но­му ком­му­та­то­ру [switch] или про­сто­му со­единению их се­те­вым ка­бе­лем.
  
Ба­зо­вая на­строй­ка се­ти
+
===Ба­зо­вая на­строй­ка се­ти===
  
 
За­вер­шив уста­нов­ку на обо­их ком­пь­ю­те­рах, под­клю­чим обо­их к Ин­тернету че­рез сеть NAT по умол­чанию. Это даст нам воз­мож­ность по­зна­ко­мить­ся с се­те­вы­ми кон­фи­гу­ра­ци­он­ны­ми фай­ла­ми Red Hat и осве­жить кое-что, о чем мы го­во­ри­ли в про­шлый раз.
 
За­вер­шив уста­нов­ку на обо­их ком­пь­ю­те­рах, под­клю­чим обо­их к Ин­тернету че­рез сеть NAT по умол­чанию. Это даст нам воз­мож­ность по­зна­ко­мить­ся с се­те­вы­ми кон­фи­гу­ра­ци­он­ны­ми фай­ла­ми Red Hat и осве­жить кое-что, о чем мы го­во­ри­ли в про­шлый раз.
Строка 35: Строка 35:
  
 
Вто­рая стро­ка оп­ре­де­ля­ет, ка­кой про­то­кол дол­жен ис­поль­зо­вать­ся для по­лу­чения IP-ад­ре­са. Здесь мы ука­за­ли DHCP (Dynamic Host Configuration Protocol – про­то­кол ди­на­ми­че­­ской на­строй­ки хоста). Это оз­на­ча­ет, что ВМ по­лу­чит IP-ад­рес, шлюз и ин­фор­ма­цию о DNS-сер­ве­рах ав­то­ма­ти­че­­ски с уда­лен­но­го сер­ве­ра. В дан­ном слу­чае это не уда­лен­ный сер­вер, а VirtualBox, ко­то­рый эму­ли­ру­ет его.
 
Вто­рая стро­ка оп­ре­де­ля­ет, ка­кой про­то­кол дол­жен ис­поль­зо­вать­ся для по­лу­чения IP-ад­ре­са. Здесь мы ука­за­ли DHCP (Dynamic Host Configuration Protocol – про­то­кол ди­на­ми­че­­ской на­строй­ки хоста). Это оз­на­ча­ет, что ВМ по­лу­чит IP-ад­рес, шлюз и ин­фор­ма­цию о DNS-сер­ве­рах ав­то­ма­ти­че­­ски с уда­лен­но­го сер­ве­ра. В дан­ном слу­чае это не уда­лен­ный сер­вер, а VirtualBox, ко­то­рый эму­ли­ру­ет его.
 +
{{Врезка|left|Ширина=40%|Заголовок=Соз­да­ем вир­ту­аль­ную ма­ши­ну |Содержание= 1 Да­дим сво­ей ВМ имя>
 +
 +
На­жми­те на кноп­ку Соз­дать [New] в ле­вом верхнем уг­лу ок­на VirtualBox. За­дай­те имя ВМ и вы­бе­ри­те Linux и Red Hat (вме­сте с со­от­вет­ст­вую­щей ар­хи­тек­ту­рой) из вы­па­даю­щих спи­сков.
 +
 +
2 Вы­бе­рем объ­ем па­мя­ти>
 +
 +
За­дай­те объ­ем па­мя­ти в 512 МБ – для про­стейших се­те­вых за­дач это бо­лее чем доста­точ­но.
 +
 +
3 Соз­да­дим вир­ту­аль­ный диск>
 +
 +
Раз­мер мо­жет быть лю­бым, но не менее 8 ГБ. Ди­на­ми­че­­ски на­зна­чен­ный диск сэ­ко­но­мит вре­мя при соз­дании вир­ту­аль­ной ма­ши­ны, но мо­жет ра­бо­тать мед­леннее.
 +
 +
4 До­ба­вим сеть>
 +
 +
Вы­де­лив но­вую ВМ, вы­бе­ри­те Settings [На­строй­ки], за­тем Network [Сеть]. Пе­ре­клю­чи­тесь на Adapter 2 [Адап­тер 2], по­ставь­те га­лоч­ку Enable [Вклю­чить] и убе­ди­тесь, что он под­клю­чен ко внут­ренней се­ти.
 +
 +
5 Вы­бе­рем диск>
 +
 +
В раз­де­ле Storage [Уст­рой­ст­во хранения дан­ных] ме­ню Settings [На­строй­ки] вы­бе­ри­те Empty [Пустой] ря­дом с IDE controller [Кон­трол­лер IDE], за­тем щелкните на икон­ке CD спра­ва и от­крой­те за­гру­жен­ный ISO-об­раз CentOS.
 +
 +
6 Ус­та­но­вим CentOS
 +
 +
На­конец, на­жми­те Start [На­чать] и прой­ди­те про­це­ду­ру уста­нов­ки CentOS.
 +
}}
  
 
Воз­мож­ны и дру­гие зна­чения па­ра­мет­ра BOOTPROTO, в том чис­ле static, ес­ли вы хо­ти­те вруч­ную на­зна­чить это­му ком­пь­ю­те­ру по­сто­ян­ный IP-ад­рес.
 
Воз­мож­ны и дру­гие зна­чения па­ра­мет­ра BOOTPROTO, в том чис­ле static, ес­ли вы хо­ти­те вруч­ную на­зна­чить это­му ком­пь­ю­те­ру по­сто­ян­ный IP-ад­рес.
  
 
На­конец, ONBOOT го­во­рит, что ин­тер­фейс дол­жен за­пускать­ся при ка­ж­дом за­пуске скрип­тов инициа­ли­за­ции се­ти на этом ком­пь­ю­те­ре, то есть при за­груз­ке сис­те­мы или пе­ре­за­пуске се­те­во­го сер­ви­са. Про­верь­те это са­ми, вы­полнив от имени root ко­ман­ду /etc/init.d/network restart, и убе­див­шись, что сеть ра­бо­та­ет так, как долж­на. Для это­го мож­но по­про­бо­вать от­пра­вить па­ке­ты на по­пуляр­ный сайт, на­при­мер, на Google, ко­ман­дой ping: ping google.com.
 
На­конец, ONBOOT го­во­рит, что ин­тер­фейс дол­жен за­пускать­ся при ка­ж­дом за­пуске скрип­тов инициа­ли­за­ции се­ти на этом ком­пь­ю­те­ре, то есть при за­груз­ке сис­те­мы или пе­ре­за­пуске се­те­во­го сер­ви­са. Про­верь­те это са­ми, вы­полнив от имени root ко­ман­ду /etc/init.d/network restart, и убе­див­шись, что сеть ра­бо­та­ет так, как долж­на. Для это­го мож­но по­про­бо­вать от­пра­вить па­ке­ты на по­пуляр­ный сайт, на­при­мер, на Google, ко­ман­дой ping: ping google.com.
 +
{{Врезка|left|Ширина=98%|Заголовок=NAT |Содержание=
 +
В этой ста­тье мы упо­мя­ну­ли нечто под на­званием NAT и со­от­вет­ст­вую­щую кон­цеп­цию, на­зы­вае­мую мас­ки­ро­ванием. На­вер­ное, вам бу­дет по­лез­но уз­нать, что же та­кое NAT, осо­бен­но ес­ли учесть, что вы поч­ти на­вер­ня­ка уже поль­зуе­тесь им до­ма.
 +
 +
NAT – со­кра­щение от “Network Address Translation [Пре­об­ра­зо­вание се­те­во­го ад­ре­са]”. Что­бы по­нять, что это оз­на­ча­ет на са­мом де­ле, пред­ставь­те се­бе свое до­машнее ин­тернет-под­клю­чение. Ваш про­вай­дер вы­да­ет вам внешний IP-ад­рес, по­сред­ст­вом ко­то­ро­го сай­ты и дру­гие ком­пь­ю­те­ры в Ин­тернете мо­гут об­щать­ся с ва­ми. Но поч­ти на­вер­ня­ка больше одного ад­реса про­вай­дер вам не даст.
 +
 +
» Про­бле­ма нехват­ки ад­ре­сов IPv4 При­чи­на в том, что се­го­дня ад­ре­сов IPv4 оста­лось ма­ло. Все­го их 4294967296, и с ви­ду это огромное количество, но пер­во­на­чаль­но адреса вы­де­ля­лись бло­ка­ми и всем же­лаю­щим, что при­ве­ло к бы­ст­ро­му со­кра­щению их за­па­сов. Имен­но по­это­му ваш про­вай­дер ограничился вы­дачей вам одного IP-ад­реса.
 +
 +
Но, как и у боль­шин­ст­ва лю­дей, у вас до­ма ско­рее все­го несколь­ко уст­ройств, под­клю­чен­ных к Ин­тернету: у вас вполне может быть несколь­ко мо­биль­ных те­ле­фо­нов, несколь­ко но­ут­бу­ков, план­шет, на­столь­ный ком­пь­ю­тер и те­ле­ви­зор Smart TV. А у тех­на­рей их и то­го боль­ше! Как они все под­клю­ча­ют­ся к Ин­тернету, ес­ли IP-ад­рес все­го один?
 +
 +
» Тай­ные ад­ре­са От­вет – NAT. Этот един­ст­вен­ный IP-ад­рес на­зна­ча­ет­ся ро­уте­ру, ко­то­рый в свою оче­редь на­зна­ча­ет уникаль­ные, ча­ст­ные IP-ад­ре­са всем уст­рой­ст­вам в до­ме. Когда од­но из этих уст­ройств хо­чет под­клю­чить­ся к Ин­тернету, под­клю­чение про­из­во­дит­ся че­рез шлюз по умол­чанию – ваш ро­утер. За­тем ро­утер из­ме­ня­ет со­дер­жи­мое па­ке­тов, за­ме­няя ча­ст­ный IP-ад­рес пуб­лич­ным ад­ре­сом ро­уте­ра. По­сле это­го он от­прав­ля­ет па­кет в Ин­тернет к мес­ту на­зна­чения. За­од­но он сле­дит за тем, ка­кой па­кет от­но­сит­ся к ка­ко­му уст­рой­ст­ву, и при по­лу­чении от­ве­та сно­ва из­ме­ня­ет ад­рес по­лу­ча­те­ля. Но на этот раз он пе­ре­на­прав­ля­ет от­вет из­вне на ис­ход­ное уст­рой­ст­во, на­чавшее диа­лог.
 +
 +
На на­шем уро­ке пер­вая виртуальная машина вы­сту­па­ет как ро­утер для вто­рой, вы­пол­няя пре­об­ра­зо­вание се­те­во­го ад­ре­са для ее па­ке­тов и от­прав­ляя их во внешний Ин­тернет. Хит­рость здесь и в том, что пер­вая виртуальная машина то­же на­хо­дит­ся за соб­ст­вен­ным NAT VirtualBox, ко­то­рый, ве­ро­ят­но, то­же на­хо­дит­ся за NAT ро­уте­ра.
  
 +
> По­пы­тав­шись по­пин­го­вать хост в дру­гой по отно­ше­нию к вам се­ти, вы по­лу­чи­те в от­вет лишь мол­ча­ние.
 +
}}
 
Не­мно­го ве­зения, и ва­ши па­ке­ты вер­нут­ся – это зна­чит, что вы под­клю­че­ны к Ин­тернету, сле­до­ва­тель­но, ва­ши IP-ад­рес, мас­ка под­се­ти (или пре­фикс), шлюз по умол­чанию и DNS – все, что нуж­но для под­клю­чения под­се­ти – за­да­ны вер­но и ра­бо­та­ют пра­виль­но.
 
Не­мно­го ве­зения, и ва­ши па­ке­ты вер­нут­ся – это зна­чит, что вы под­клю­че­ны к Ин­тернету, сле­до­ва­тель­но, ва­ши IP-ад­рес, мас­ка под­се­ти (или пре­фикс), шлюз по умол­чанию и DNS – все, что нуж­но для под­клю­чения под­се­ти – за­да­ны вер­но и ра­бо­та­ют пра­виль­но.
  
 
Про­смот­реть все эти на­строй­ки мож­но, за­гля­нув в раз­лич­ные кон­фи­гу­ра­ци­он­ные фай­лы или с по­мо­щью ути­лит, о ко­то­рых мы го­во­ри­ли в про­шлый раз. На­при­мер, ко­ман­да ip route вы­ве­дет шлюз по умол­чанию (в дан­ном слу­чае, вир­ту­аль­ный шлюз, пре­достав­ляе­мый VirtualBox); в /etc/resolv.conf мож­но най­ти сер­вер имен; а ко­ман­да ip a вы­ве­дет ва­ши IP-ад­рес и пре­фикс. По­вто­ри­те все эти дей­ст­вия для вто­ро­го ком­пь­ю­те­ра.
 
Про­смот­реть все эти на­строй­ки мож­но, за­гля­нув в раз­лич­ные кон­фи­гу­ра­ци­он­ные фай­лы или с по­мо­щью ути­лит, о ко­то­рых мы го­во­ри­ли в про­шлый раз. На­при­мер, ко­ман­да ip route вы­ве­дет шлюз по умол­чанию (в дан­ном слу­чае, вир­ту­аль­ный шлюз, пре­достав­ляе­мый VirtualBox); в /etc/resolv.conf мож­но най­ти сер­вер имен; а ко­ман­да ip a вы­ве­дет ва­ши IP-ад­рес и пре­фикс. По­вто­ри­те все эти дей­ст­вия для вто­ро­го ком­пь­ю­те­ра.
  
Ста­ти­че­­ские ад­ре­са
+
===Ста­ти­че­­ские ад­ре­са===
  
 
В пре­ды­ду­щем раз­де­ле боль­шую часть труд­ной ра­бо­ты сде­ла­ли про­то­кол DHCP и VirtualBox. Те­перь мы на­стро­им се­те­вое со­единение ме­ж­ду дву­мя вир­ту­аль­ны­ми ма­ши­на­ми, но все на­строй­ки бу­дем до­бав­лять са­ми.
 
В пре­ды­ду­щем раз­де­ле боль­шую часть труд­ной ра­бо­ты сде­ла­ли про­то­кол DHCP и VirtualBox. Те­перь мы на­стро­им се­те­вое со­единение ме­ж­ду дву­мя вир­ту­аль­ны­ми ма­ши­на­ми, но все на­строй­ки бу­дем до­бав­лять са­ми.
Строка 82: Строка 120:
 
Ес­ли до­ба­вить их в файл /etc/hosts на обо­их ком­пь­ю­те­рах, вы долж­ны уви­деть, что ком­пь­ю­те­ры пин­гу­ют­ся по име­нам lxf-network-1 и lxf-network-2, и вас пе­ре­на­прав­ля­ют на нуж­ный ком­пь­ю­тер – так-то луч­ше.
 
Ес­ли до­ба­вить их в файл /etc/hosts на обо­их ком­пь­ю­те­рах, вы долж­ны уви­деть, что ком­пь­ю­те­ры пин­гу­ют­ся по име­нам lxf-network-1 и lxf-network-2, и вас пе­ре­на­прав­ля­ют на нуж­ный ком­пь­ю­тер – так-то луч­ше.
  
Соз­да­ем ро­утер
+
===Соз­да­ем ро­утер===
  
 
По­ка мы не за­да­ва­ли шлюз ни на од­ном из на­ших ком­пь­ю­те­ров, поскольку по­лу­ча­ли его от DHCP из се­ти NAT VirtualBox по умол­чанию вме­сте с дан­ны­ми DNS, и таким образом на­ши ком­пь­ю­те­ры под­клю­ча­лись к внешнему Ин­тернету. Что­бы про­де­мон­ст­ри­ро­вать еще кое-ка­кие воз­мож­но­сти се­ти, от­клю­чим со­единение NAT на вто­рой вир­ту­аль­ной ма­шине и на­стро­им пер­вую как ро­утер для пре­достав­ления досту­па в Ин­тернет.
 
По­ка мы не за­да­ва­ли шлюз ни на од­ном из на­ших ком­пь­ю­те­ров, поскольку по­лу­ча­ли его от DHCP из се­ти NAT VirtualBox по умол­чанию вме­сте с дан­ны­ми DNS, и таким образом на­ши ком­пь­ю­те­ры под­клю­ча­лись к внешнему Ин­тернету. Что­бы про­де­мон­ст­ри­ро­вать еще кое-ка­кие воз­мож­но­сти се­ти, от­клю­чим со­единение NAT на вто­рой вир­ту­аль­ной ма­шине и на­стро­им пер­вую как ро­утер для пре­достав­ления досту­па в Ин­тернет.
Строка 114: Строка 152:
 
Ес­ли вы хо­ти­те под­робнее уз­нать об IPTables, про­чти­те несколь­ко HowTo на сай­те Netfilter: http://netfilter.org/documentation/.
 
Ес­ли вы хо­ти­те под­робнее уз­нать об IPTables, про­чти­те несколь­ко HowTo на сай­те Netfilter: http://netfilter.org/documentation/.
  
Вот и все, на что у нас хва­ти­ло мес­та в этом ме­ся­це. Но не от­чаи­вай­тесь: за по­следние два уро­ка вы мно­гое уз­на­ли о се­ти. Про­явив немно­го тер­пения, вы смо­же­те чи­тать дру­гие ру­ко­во­дства и соз­да­вать го­раз­до бо­лее слож­ные кон­фи­гу­ра­ции, точ­но со­от­вет­ст­вую­щие ва­шим по­треб­но­стям. |
+
Вот и все, на что у нас хва­ти­ло мес­та в этом ме­ся­це. Но не от­чаи­вай­тесь: за по­следние два уро­ка вы мно­гое уз­на­ли о се­ти. Про­явив немно­го тер­пения, вы смо­же­те чи­тать дру­гие ру­ко­во­дства и соз­да­вать го­раз­до бо­лее слож­ные кон­фи­гу­ра­ции, точ­но со­от­вет­ст­вую­щие ва­шим по­треб­но­стям.  
 +
 
 +
{{Врезка|left|Ширина=98%|Заголовок=Ди­ст­ри­бу­ти­вы на ба­зе Debian |Содержание=
 +
В этой ста­тье мы занима­лись кон­фи­гу­ра­цией, спе­ци­фич­ной для Red Hat, а в CentOS ис­поль­зу­ет­ся именно эта мо­дель. Конеч­но, ди­ст­ри­бу­ти­вы на ба­зе Red Hat – не един­ст­вен­ное достой­ное решение для сер­ве­ров; мно­гие пред­по­чи­та­ют Debian или его бо­лее мо­ло­дой и по­пу­ляр­ный ва­ри­ант Ubuntu.
 +
 
 +
Од­на­ко в ди­ст­ри­бу­ти­вах на ба­зе Debian ис­поль­зу­ет­ся дру­гой под­ход. Все ути­ли­ты, о ко­то­рых мы вам рас­ска­за­ли – на­бор команд ip, ping и т. д. – здесь ра­бо­та­ют. Бо­лее то­го, фай­лы вро­де /etc/resolv.conf и /etc/hosts на­хо­дят­ся в тех же мес­тах.
 +
 
 +
За­то раз­ли­чие есть в фай­лах на­строй­ки ин­тер­фей­са. Вме­сто раз­биения кон­фи­гу­ра­ции на от­дель­ные фай­лы, та­кие как ifcfg-eth0 и ifcfg-eth1 в Red Hat, в ди­ст­ри­бу­ти­вах на ба­зе Debian ис­поль­зу­ет­ся файл /etc/network/interfaces, где на­хо­дят­ся на­строй­ки всех ин­тер­фей­сов. Вот при­мер это­го фай­ла:
 +
 
 +
auto eth0
 +
 
 +
iface eth0 inet static
 +
 
 +
address 192.168.1.2
 +
 
 +
netmask 255.255.255.0
 +
 
 +
Пер­вая стро­ка auto eth0 го­во­рит, что ин­тер­фейс eth0 нуж­но вклю­чить при вы­полнении ко­ман­ды ifup -a или при за­груз­ке сис­те­мы.
 +
 
 +
Сле­дую­щие па­ра­мет­ры, на­чи­ная с iface, со­дер­жат под­роб­ные па­ра­мет­ры кон­фи­гу­ра­ции ин­тер­фей­са. Сна­ча­ла ука­зы­ва­ет­ся ин­тер­фейс, за­тем про­то­кол под­клю­чения. Здесь воз­мож­ны несколь­ко ва­ри­ан­тов, но са­мый по­пу­ляр­ный – inet, оз­на­чаю­щий IP-се­ти.
 +
 
 +
Сло­во static – это «ме­тод» по­лу­чения ад­ре­са; дру­гие ва­ри­ан­ты – dhcp и bootp. Ме­то­ды мо­гут принимать до­полнитель­ные па­ра­мет­ры, и они при­во­дят­ся да­лее с от­сту­па­ми под за­го­лов­ком. Наш при­мер очень про­стой, в нем за­да­ют­ся IP-ад­рес и мас­ка под­се­ти для это­го ин­тер­фей­са.
 +
 
 +
Бо­лее под­роб­ную ин­фор­ма­цию и воз­мож­ные па­ра­мет­ры мож­но най­ти на странице man /etc/network/interfaces.
 +
}} |

Текущая версия на 09:39, 14 ноября 2018

Сеть. За­ста­вим ком­пь­ю­те­ры с Linux об­щать­ся друг с дру­гом.

Содержание

[править] Сеть: Построим мар­шру­ти­за­тор

По­зна­ко­мив вас с кир­пи­чи­ка­ми, из ко­то­рых стро­ят се­ти, Джо­на­тан Ро­бертс скла­ды­ва­ет из них ре­аль­но ра­бо­таю­щую сеть.

(thumbnail)
Наш эксперт Джо­на­тан Ро­бертс сбе­жал из Ба­шен Linux Format, что­бы по­ис­кать сча­стья в ка­че­­ст­ве си­сад­ми­на.

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

На дан­ном уро­ке мы по­ка­жем, как эти эле­мен­ты со­че­та­ют­ся друг с дру­гом в на­стоя­щих се­тях. Спер­ва за­ста­вим два ком­пь­ю­те­ра взаи­мо­дей­ст­во­вать друг с дру­гом на­пря­мую, за­тем про­де­мон­ст­ри­ру­ем, как пре­вра­тить ком­пь­ю­тер с Linux в мар­шру­ти­за­тор (он же – ро­утер). Парк ком­пь­ю­те­ров вам не по­тре­бу­ет­ся – все это мы бу­дем де­лать в VirtualBox, но вы долж­ны уметь при­ме­нять те же са­мые тех­но­ло­гии к на­стоя­щим се­тям.

В на­ших при­ме­рах мы восполь­зу­ем­ся CentOS – он осно­ван на Red Hat Enterprise Linux и яв­ля­ет­ся по­пу­ляр­ной плат­фор­мой для сер­ве­ров. Ес­ли вам ин­те­ре­сен Ubuntu или дру­гие ди­ст­ри­бу­ти­вы на осно­ве Debian, за­гляните во врез­ку «Ди­ст­ри­бу­ти­вы на ба­зе Debian».

Пре­ж­де чем пе­рей­ти к се­ти, соз­да­дим сис­те­му, в ко­то­рой мы бу­дем прак­ти­ко­вать­ся. Сна­ча­ла уста­но­ви­те VirtualBox. Он дол­жен быть в ре­по­зи­то­ри­ях боль­шин­ст­ва ди­ст­ри­бу­ти­вов, так что для его уста­нов­ки про­сто восполь­зуй­тесь менед­же­ром па­ке­тов сво­его ди­ст­ри­бу­ти­ва. По­сле это­го за­гру­зи­те минималь­ный уста­но­воч­ный диск CentOS 6.3 (http://bit.ly/1446qQO).

Те­перь соз­дай­те две но­вых вир­ту­аль­ных ма­ши­ны (ВМ) в VirtualBox, сле­дуя на­ше­му по­ша­го­во­му ру­ко­во­дству на со­седней странице, по­за­бо­тив­шись до­ба­вить все необ­хо­ди­мые се­те­вые ин­тер­фей­сы.

За­тем по­вто­ри­те те же ша­ги для вто­рой ВМ, убе­див­шись, что она под­клю­че­на к той же внут­ренней се­ти. Соз­дав вир­ту­аль­ные ма­ши­ны с дву­мя та­ки­ми се­те­вы­ми ин­тер­фей­са­ми, как у нас, мы сде­ла­ем так, что они обе смо­гут под­клю­чать­ся к Ин­тернету (че­рез NAT по умол­чанию), но так­же смо­гут и взаи­мо­дей­ст­во­вать друг с дру­гом на­пря­мую по внут­ренней се­ти, ко­то­рую мы до­ба­ви­ли. Эта внут­рен­няя сеть эк­ви­ва­лент­на под­клю­чению двух вир­ту­аль­ных ма­шин к од­но­му ком­му­та­то­ру [switch] или про­сто­му со­единению их се­те­вым ка­бе­лем.

[править] Ба­зо­вая на­строй­ка се­ти

За­вер­шив уста­нов­ку на обо­их ком­пь­ю­те­рах, под­клю­чим обо­их к Ин­тернету че­рез сеть NAT по умол­чанию. Это даст нам воз­мож­ность по­зна­ко­мить­ся с се­те­вы­ми кон­фи­гу­ра­ци­он­ны­ми фай­ла­ми Red Hat и осве­жить кое-что, о чем мы го­во­ри­ли в про­шлый раз.

По­сле за­груз­ки вир­ту­аль­ной ма­ши­ны пер­вым де­лом на­до пе­рей­ти в ка­та­лог /etc/sysconfig/network-scripts. В ди­ст­ри­бу­ти­вах на ба­зе Red Hat этот ка­та­лог со­дер­жит скрип­ты за­пуска и фай­лы на­строй­ки всех се­те­вых уст­ройств, под­клю­чен­ных к ком­пь­ю­те­ру. Ес­ли вы сле­до­ва­ли на­ше­му по­ша­го­во­му ру­ко­во­дству, вы долж­ны уви­деть два кон­фи­гу­ра­ци­он­ных фай­ла – ifcfg-eth0 и ifcfg-eth1 (в дру­гих вер­си­ях Red Hat это мо­гут быть ifcfg-em1 и ifcfg-em2). Eth0 – пер­вое се­те­вое уст­рой­ст­во, и оно долж­но ссы­лать­ся на пер­вый адап­тер (Adapter 1) в на­строй­ках VirtualBox – это сеть NAT.

От­крой­те в Vi файл ifcfg-eth0 и убе­ди­тесь, что в нем есть та­кие па­ра­мет­ры со свои­ми зна­чения­ми:

NM_CONTROLLED=”no”

BOOTPROTO=”dhcp”

ONBOOT=”yes”

Пер­вая стро­ка го­во­рит о том, что менед­жер се­ти (NetworkManager) не дол­жен управ­лять этим ин­тер­фей­сом – раз мы пы­та­ем­ся де­лать это вруч­ную, его вме­ша­тель­ст­во мо­жет внести пу­таницу, по­это­му мы его от­клю­ча­ем.

Вто­рая стро­ка оп­ре­де­ля­ет, ка­кой про­то­кол дол­жен ис­поль­зо­вать­ся для по­лу­чения IP-ад­ре­са. Здесь мы ука­за­ли DHCP (Dynamic Host Configuration Protocol – про­то­кол ди­на­ми­че­­ской на­строй­ки хоста). Это оз­на­ча­ет, что ВМ по­лу­чит IP-ад­рес, шлюз и ин­фор­ма­цию о DNS-сер­ве­рах ав­то­ма­ти­че­­ски с уда­лен­но­го сер­ве­ра. В дан­ном слу­чае это не уда­лен­ный сер­вер, а VirtualBox, ко­то­рый эму­ли­ру­ет его.

Воз­мож­ны и дру­гие зна­чения па­ра­мет­ра BOOTPROTO, в том чис­ле static, ес­ли вы хо­ти­те вруч­ную на­зна­чить это­му ком­пь­ю­те­ру по­сто­ян­ный IP-ад­рес.

На­конец, ONBOOT го­во­рит, что ин­тер­фейс дол­жен за­пускать­ся при ка­ж­дом за­пуске скрип­тов инициа­ли­за­ции се­ти на этом ком­пь­ю­те­ре, то есть при за­груз­ке сис­те­мы или пе­ре­за­пуске се­те­во­го сер­ви­са. Про­верь­те это са­ми, вы­полнив от имени root ко­ман­ду /etc/init.d/network restart, и убе­див­шись, что сеть ра­бо­та­ет так, как долж­на. Для это­го мож­но по­про­бо­вать от­пра­вить па­ке­ты на по­пуляр­ный сайт, на­при­мер, на Google, ко­ман­дой ping: ping google.com.

Не­мно­го ве­зения, и ва­ши па­ке­ты вер­нут­ся – это зна­чит, что вы под­клю­че­ны к Ин­тернету, сле­до­ва­тель­но, ва­ши IP-ад­рес, мас­ка под­се­ти (или пре­фикс), шлюз по умол­чанию и DNS – все, что нуж­но для под­клю­чения под­се­ти – за­да­ны вер­но и ра­бо­та­ют пра­виль­но.

Про­смот­реть все эти на­строй­ки мож­но, за­гля­нув в раз­лич­ные кон­фи­гу­ра­ци­он­ные фай­лы или с по­мо­щью ути­лит, о ко­то­рых мы го­во­ри­ли в про­шлый раз. На­при­мер, ко­ман­да ip route вы­ве­дет шлюз по умол­чанию (в дан­ном слу­чае, вир­ту­аль­ный шлюз, пре­достав­ляе­мый VirtualBox); в /etc/resolv.conf мож­но най­ти сер­вер имен; а ко­ман­да ip a вы­ве­дет ва­ши IP-ад­рес и пре­фикс. По­вто­ри­те все эти дей­ст­вия для вто­ро­го ком­пь­ю­те­ра.

[править] Ста­ти­че­­ские ад­ре­са

В пре­ды­ду­щем раз­де­ле боль­шую часть труд­ной ра­бо­ты сде­ла­ли про­то­кол DHCP и VirtualBox. Те­перь мы на­стро­им се­те­вое со­единение ме­ж­ду дву­мя вир­ту­аль­ны­ми ма­ши­на­ми, но все на­строй­ки бу­дем до­бав­лять са­ми.

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

По­это­му, как и пре­ж­де, начнем с ка­та­ло­га /etc/sysconfig/network-scripts. Вам по­на­до­бит­ся файл ifcfg-eth1, но он бу­дет вы­гля­деть не так, как в про­шлый раз:

NM_CONTROLLED=”no”

BOOTPROTO=”static”

IPADDR=”192.168.1.2”

PREFIX=24

ONBOOT=”yes”

Про­то­кол за­груз­ки те­перь уста­нов­лен в static [ста­ти­че­­ский] – это оз­на­ча­ет, что вме­сто ав­то­ма­ти­че­­ско­­го по­лу­чения IP-ад­ре­са нам при­дет­ся за­дать его вруч­ную. Это де­ла­ет­ся в па­ра­мет­рах IPADDR и PREFIX. IP-ад­рес мо­жет быть лю­бым, но при­ня­то, что­бы он на­чи­нал­ся с 10 (8-бит­ный пре­фикс), 172.16 (12- бит­ный пре­фикс) или 192.168 (16- бит­ный пре­фикс). Эти ад­ре­са вы­де­ле­ны для «ча­ст­но­го» ис­поль­зо­вания, и у боль­шин­ст­ва ро­уте­ров они за­кры­ты для досту­па из­вне. Кро­ме то­го, не за­бы­вай­те, что пер­вый (для 24-бит­но­го пре­фик­са – .0) и по­следний (.255) ад­ре­са за­ре­зер­ви­ро­ва­ны как ад­рес се­ти и ши­ро­ко­ве­ща­тель­ный ад­рес, по­это­му их на­зна­чать нель­зя.

Что­бы вы­брать пре­фикс, взгляните на врез­ку «Под­робнее про IP-ад­ре­са» из про­шлой ста­тьи и за­тем при­ми­те ре­шение. Помните, что для 24-бит­но­го пре­фик­са толь­ко по­следний ок­тет иден­ти­фи­ци­ру­ет хост, а осталь­ные – сеть; для 16-бит­но­го пре­фик­са, два по­следних ок­те­та пред­став­ля­ют хост, а пер­вые два – сеть. Мы восполь­зу­ем­ся 24-бит­ным пре­фик­сом.

По­сле это­го сбрось­те сеть, как рань­ше.

За­тем по­пы­тай­тесь по­пин­го­вать со вто­рой вир­ту­аль­ной ма­ши­ны пер­вую по ее но­во­му IP-ад­ре­су: 192.168.1.2. Ни один из па­ке­тов не дол­жен вер­нуть­ся. Что­бы со­единение мож­но бы­ло уста­но­вить, нуж­но дать вто­ро­му ком­пь­ю­те­ру IP-ад­рес с точ­но та­ким же пре­фик­сом (или мас­кой под­се­ти). Мы со­ве­ту­ем ис­поль­зо­вать 192.168.1.3. До­бавь­те его в со­от­вет­ст­вую­щий файл /etc/sysconfig/network-scripts и пе­ре­за­пусти­те сеть.

Ес­ли те­перь по­пин­го­вать ад­рес 192.168.1.2 со вто­ро­го ком­пь­ю­те­ра, па­ке­ты долж­ны воз­вра­щать­ся. Бо­лее то­го, ес­ли пе­рей­ти на пер­вый ком­пь­ю­тер и по­про­бо­вать по­пин­го­вать 192.168.1.3, это то­же долж­но ра­бо­тать. Под­клю­чение по SSH так­же долж­но ра­бо­тать, и ес­ли за­пустить web-сер­вер на од­ной из вир­ту­аль­ных ма­шин, он дол­жен быть досту­пен с дру­гой.

Те­перь два ком­пь­ю­те­ра мо­гут взаи­мо­дей­ст­во­вать. От­лич­но! Но при ка­ж­дом под­клю­чении на­би­рать IP-ад­ре­са неудоб­но. Обыч­но ком­пь­ю­те­рам на­зна­ча­ют име­на, ко­то­рые про­ще за­помнить и лег­че на­би­рать. Это мож­но сде­лать несколь­ки­ми спо­со­ба­ми. На­при­мер, в се­ти с боль­шим ко­ли­че­­ст­вом ком­пь­ю­те­ров сто­ит соз­дать свой сер­вер DNS (Domain Name System – сис­те­ма до­мен­ных имен), но это вы­хо­дит да­ле­ко за рам­ки на­шего уро­ка.

Так как у нас все­го два ком­пь­ю­те­ра, их име­на мож­но за­дать го­раз­до про­ще – по­мес­тить их в файл /etc/hosts. Этот файл со­дер­жит спи­сок IP-ад­ре­сов и их алиа­сов, по­это­му в него мож­но до­ба­вить за­пи­си для двух на­ших ком­пь­ю­те­ров:

192.168.1.2 lxf-network-1

192.168.1.3 lxf-network-2

Ес­ли до­ба­вить их в файл /etc/hosts на обо­их ком­пь­ю­те­рах, вы долж­ны уви­деть, что ком­пь­ю­те­ры пин­гу­ют­ся по име­нам lxf-network-1 и lxf-network-2, и вас пе­ре­на­прав­ля­ют на нуж­ный ком­пь­ю­тер – так-то луч­ше.

[править] Соз­да­ем ро­утер

По­ка мы не за­да­ва­ли шлюз ни на од­ном из на­ших ком­пь­ю­те­ров, поскольку по­лу­ча­ли его от DHCP из се­ти NAT VirtualBox по умол­чанию вме­сте с дан­ны­ми DNS, и таким образом на­ши ком­пь­ю­те­ры под­клю­ча­лись к внешнему Ин­тернету. Что­бы про­де­мон­ст­ри­ро­вать еще кое-ка­кие воз­мож­но­сти се­ти, от­клю­чим со­единение NAT на вто­рой вир­ту­аль­ной ма­шине и на­стро­им пер­вую как ро­утер для пре­достав­ления досту­па в Ин­тернет.

Сна­ча­ла вы­полним ко­ман­ду ifdown eth0 для вы­клю­чения ин­тер­фей­са NAT на вто­рой вир­ту­аль­ной ма­шине. Те­перь, когда ин­тер­фейс на­стро­ен, эта ко­ман­да вме­сте со сво­ей на­парницей ifup мо­жет ис­поль­зо­вать­ся для вклю­чения и вы­клю­чения ин­тер­фей­сов.

По­том по­про­буй­те по­пин­го­вать Google с это­го ком­пь­ю­те­ра, и вы уви­ди­те, что это боль­ше не ра­бо­та­ет. Что­бы все за­ра­бо­тало сно­ва, нуж­но внести из­менения в кон­фи­гу­ра­цию пер­вой вир­ту­аль­ной ма­ши­ны.

Сна­ча­ла ей нуж­но раз­ре­шить пе­ре­на­прав­лять па­ке­ты с од­но­го се­те­во­го ин­тер­фей­са на дру­гой – это са­мое важ­ное и един­ст­вен­ное, для че­го ну­жен ро­утер. В Linux та­кое мож­но, но по умол­чанию эта функ­ция от­клю­че­на. Что­бы сно­ва ее вклю­чить, от­крой­те файл /etc/sysctl.conf – он управ­ля­ет раз­лич­ны­ми ас­пек­та­ми ра­бо­ты яд­ра, и уста­но­ви­те net.ipv4.ip_forward = 1. За­тем за­пусти­те sysctl -p /etc/sysctl.conf для за­груз­ки но­вой кон­фи­гу­ра­ции.

По­сле это­го вам по­на­до­бит­ся на­стро­ить соб­ст­вен­ный NAT, или се­те­вое мас­ки­ро­вание; в Linux это де­ла­ет­ся с по­мо­щью IPTables – бранд­мау­эра, встро­ен­но­го в яд­ро.

IPTables пу­га­ют мно­гих, но на са­мом де­ле все очень про­сто: это лишь на­бор пра­вил, на ко­то­рые смот­рит яд­ро при об­ра­бот­ке па­ке­та. Ес­ли па­кет со­от­вет­ст­ву­ет лю­бо­му из этих пра­вил, яд­ро при­ме­ня­ет к нему дей­ст­вие, ука­зан­ное в пра­ви­ле. Дей­ст­вия мо­гут вклю­чать от­бра­сы­вание или при­ем па­ке­та или манипу­ля­цию с ним для из­менения его ис­точника или мес­та на­зна­чения.

В на­шем слу­чае, когда па­кет при­бы­ва­ет на пер­вую вир­ту­аль­ную ма­ши­ну со вто­рой на ин­тер­фейс eth1, мы хо­тим при­менить к нему дей­ст­вие masquerade – то есть на­пра­вить его во внешний мир че­рез ин­тер­фейс eth0, пред­ста­вив, что па­кет при­шел с пер­вой, а не со вто­рой вир­ту­аль­ной ма­ши­ны:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Раз­бе­рем это:

» -t nat оп­ре­де­ля­ет, на ка­кой на­бор пра­вил в ка­кой таб­ли­це пра­вил нуж­но по­смот­реть.

» -A POSTROUTING – под­на­бор пра­вил, ко­то­рые нуж­но про­смот­реть, ина­че из­вест­ный как це­поч­ка. Це­поч­ка оп­ре­де­ля­ет, в ка­кой точ­ке про­цес­са мар­шру­ти­за­ции долж­но при­ме­нять­ся пра­ви­ло.

» -o eth1 оп­ре­де­ля­ет, что это пра­ви­ло долж­но при­ме­нять­ся ко всем па­ке­там, ко­то­рые бу­дут вы­хо­дить из ин­тер­фей­са eth1.

» -j MASQUERADE го­во­рит, что нуж­но «пе­ре­прыг­нуть» на дей­ст­вие MASQUERADE, когда лю­бой па­кет со­от­вет­ст­ву­ет это­му пра­ви­лу.

С этим пра­ви­лом до­бавь­те шлюз по умол­чанию GATEWAY = 192.168.1.2 в файл /etc/sysconfig/network (в ко­то­ром хранит­ся об­щая се­те­вая кон­фи­гу­ра­ция для всех ин­тер­фей­сов) на вто­рой вир­ту­аль­ной ма­шине, за­дай­те по­пу­ляр­ный внешний сер­вер имен в /etc/resolv.conf, до­ба­вив ту­да nameserver 8.8.8.8 (IP-ад­рес сер­ве­ра имен Google), и у вас долж­но по­лу­чит­ся пол­но­стью ра­бо­чее ин­тернет-под­клю­чение, несмот­ря на то, что ника­ко­го пря­мо­го под­клю­чения у вас нет.

Ес­ли вы хо­ти­те под­робнее уз­нать об IPTables, про­чти­те несколь­ко HowTo на сай­те Netfilter: http://netfilter.org/documentation/.

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


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