Настройка внешней сети
Теперь мы готовы к настройке внешней сети. Иногда этот процесс бывает довольно сложным - это зависит от того, насколько хорошо ваш провайдер поддерживает Linux. Если у вас возникли трудности, читайте "ADSL mini-HOWTO". Если я смогу обнаружить где-нибудь Мини-HOWTO по кабельным модемам, то я добавлю здесь ссылку и на него.
Одной из основных проблем, возникающей с внешними соединениями, является получение IP-адреса. Некоторые провайдеры выделяют статические IP-адреса кабельным или ADSL-клиентам - в этом случае настройка будет достаточно простой. Однако, большинство провайдеров перешли на динамическую настройку при помощи (вы уже наверное угадали...) DHCP. Это означает, что скорее всего ваш Linux будет DHCP-сервером на интерфейсе eth1, и, одновременно, DHCP-клиентом на интерфейсе eth0.
Более того, некоторые провайдеры применяют специализированные нестандартные методы, предполагая, что их клиенты будут использовать Windows. Некоторые из таких случаев будут описаны в конце раздела 3.3.2.
Со статическим IP-адресом
Если ваш провайдер выделил вам статический IP-адрес, то у вас все достаточно просто. Во-первых, создайте новый файл конфигурации интерфейса /etc/sysconfig/network-scripts/ifcfg-eth0 и внесите в него следующее:
DEVICE=eth0 IPADDR=x.x.x.x NETMASK=y.y.y.y ONBOOT=yes
Подставьте вместо x.x.x.x и y.y.y.y значения, данные вашим провайдером. Затем отредактируйте файл /etc/resolv.conf, внеся в него следующее:
search provider_domain_here nameserver n.n.n.n nameserver m.m.m.m
Значение поля "домен_провайдера" должно быть предоставлено провайдером. Вместо m.m.m.m и n.n.n.n подставьте адреса первичного и вторичного DNS-сервера провайдера соответственно. Если вы настроили свой Linux в качестве кэширующего DNS-сервера, то добавьте перед строками nameserver строку nameserver 127.0.0.1. В результате этого ваш Linux будет сначала обращаться к своему кэширующему DNS-серверу перед обращением к внешним серверам.
С использованием DHCP
Если ваш провайдер использует автоконфигурирование при помощи DHCP, то вам надо создать новый файл конфигурации интерфейса /etc/sysconfig/network-scripts/ifcfg-eth0, и написать в нем следующее:
DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes
Теперь убедитесь в том, что клиентский демон dhcpcd установлен в вашей системе. Перейдите на CD с дистрибутивом вашего Linux и установите RPM-пакет dhcpcd.
Наступило время испытать вашу новую конфигурацию сети. Дайте команду /etc/rc.d/init.d/network restart. Попробуйте увидеть внешний компьютер в Интернете, например, www.yahoo.com и посмотрите, получаете ли вы ответ.
Хитрости и проблемы
В вашем конкретном случае ситуация может отличаться от вышеописанной. Ниже приведены несколько коротких примечаний о различных сложностях, а также ссылки на более авторитетные ресурсы по этой теме. Спасибо John Mellor за предоставленные ссылки и настойчивые требования написать эту главу.
PPP по Ethernet (PPPoE)
Некоторые ADSL-провайдеры (например Bell Atlantic) с недавних пор начали настаивать на том, чтобы их новые пользователи подключались к ним при помощи протокола "PPP по Ethernet" (PPPoE). К этому они прилагают клиентскую программу для Windows: это не совсем удобно для пользователей Linux. К счастью, PPPoE - достаточно простой протокол, и существует несколько способов его поддержки и в Linux.
Хитрые свойства DHCP
Одним из излюбленных глуповатых трюков сетевых провайдеров является привязывание вашего сервиса к конкретному имени машины или даже к конкретной сетевой карте. Это делается обычно ради того, чтобы вы не подключали к интернету через хаб несколько компьютеров (конечно, использование Linux и маскарадинга вам позволит это сделать и без ведома компании-провайдера, к тому же значительно более защищенным образом!).
Если провайдер дал вам имя машины и настаивает на том, чтобы вы назвали свой Windows именно этим именем в сети для использования сервиса подключения к интернету, то вы должны сделать так, чтобы ваш Linux посылал это имя при запросе адреса с DHCP-сервера.
Клиент DHCP в Red Hat вызывается в том случае, если вы установите в файле конфигурации интерфейса переменную BOOTPROTO в значение "dhcp", но это производится без предоставления DHCP-серверу имени машины. Чтобы предоставить ему такое имя, отредактируйте файл /etc/sysconfig/network и измените строку:
HOSTNAME=
на
HOSTNAME=your_isp_assigned_name
В некоторых вариантах Red Hat это может и не сработать. Если такой вариант не пройдет, откройте скрипт /sbin/ifup, найдите в нем вызов dhcpcd и pump и добавьте к ним опцию -h $HOSTNAME. Если таких строк в нем нет, то добавьте их: /sbin/dhcpcd -i $DEVICE -h $HOSTNAME и /sbin/pump -i $DEVICE -h $HOSTNAME.
"Road Runner"
В кабельном сервисе " Road Runner" для получения возможности использования сервера должна запускаться специальная процедура входа. К счастью, существует детально описывающий эту тему "
Linux Road Runner HOWTO".
Изучаем настройки сети
Теперь вы можете полюбоваться своей сетью. Запустите команду ifconfig, чтобы увидеть настройку всех ваших сетевых устройств. На моем шлюзе это выглядит примерно так:
eth0 Link encap:Ethernet HWaddr 00:60:67:4A:02:0A inet addr:24.65.182.43 Bcast:24.65.182.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:487167 errors:0 dropped:0 overruns:0 frame:0 TX packets:467064 errors:0 dropped:0 overruns:0 carrier:0 collisions:89 txqueuelen:100 Interrupt:10 Base address:0xe400 eth1 Link encap:Ethernet HWaddr 00:80:C8:D3:30:2C inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:284112 errors:0 dropped:0 overruns:0 frame:1 TX packets:311533 errors:0 dropped:0 overruns:0 carrier:0 collisions:37938 txqueuelen:100 Interrupt:5 Base address:0xe800 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:12598 errors:0 dropped:0 overruns:0 frame:0 TX packets:12598 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
Заметьте, что у eth0 имеется красивый внешний IP-адрес, а у eth1 - частный внутренний.
Вы также можете взглянуть на маршруты пакетов командой route. На моем шлюзе это выглядит примерно так:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 255.255.255.255 * 255.255.255.255 UH 0 0 0 eth1 192.168.1.0 * 255.255.255.0 U 0 0 0 eth1 24.65.182.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 24.65.182.1 0.0.0.0 UG 0 0 0 eth0
Теперь у нас настроена внешняя и внутренняя сети, сетевые устройства, специальный широковещательный адрес 255.255.255.255, и маршрут по умолчанию указывает на шлюз провайдера. Великолепно!
Теперь у вас есть внешняя и внутренняя стороны. Все что осталось настроить - это дверь между ними. Самое главное - мы должны убедиться в том, что чудовища извне к нам не проникнут.
Содержание раздела