Предупреждение :
Этот документ находится в разработке, и его пока не следует считать официальным.
|
Руководство по развертыванию домашнего маршрутизатора
1.
Введение
По признанию Linksys, сборка собственного маршрутизатора из старых деталей
имеет множество преимуществ перед покупкой специализированного
маршрутизатора. Одним из самых больших является контроль над
соединениями. Другие преимущества оставим вашему воображению. Все, что может
быть сделано по этому руководству, будет хорошим подспорьем для этого.
В этом руководстве рассказывается, как вам создать трансляцию сетевых
адресов (NAT) на маршрутизаторе (на базе ядра Linux и iptables), добавить и
настроить распространенные сервисы (систему доменных имен (DNS) с помощью
dnsmasq, протокол динамической конфигурации хоста (DHCP) с помощью dhcpcd,
ADSL с помощью rp-pppoe) и завершить настройку более детальной разработкой и
интересными вещами (проброс портов, ограничение трафика, прокси/кэширование
и многое другое...).
Перед тем, как начать, вы должны отвечать нескольким базовым
требованиям. Во-первых, вам понадобится компьютер, в котором установлены не
менее 2 сетевых карт (NIC). Во-вторых, вам понадобятся параметры настроек
вашего соединения к интернету (возможно, включая параметры
IP/DNS/шлюза/имени пользователя/пароля). Наконец, вам понадобится немного
времени и любовь к ОС Gentoo.
Соглашения, используемые в данном руководстве:
- eth0 — сетевая карта, подключенная к локальной вычислительной сети
(LAN)
- eth1 — сетевая карта, подключенная внешней сети (WAN)
- в LAN используется частная сеть с адресами 192.168.0.xxx
- маршрутизатору в соответствии со стандартами присвоен IP-адрес 192.168.0.1
- маршрутизатор работает под управлением ОС Linux с ядром 2.4 или 2.6; вы
можете попробовать у себя ядра 2.0/2.2
Важно:
Из соображений безопасности, я настоятельно рекомендую вам отключить
ненужные сервисы на маршрутизаторе, пока мы не установим межсетевой экран и
не заставим его работать. Чтобы просмотреть запущенные сервисы, наберите
rc-status.
|
2.
Настройка ядра (сначала познай себя)
Вашему ядру нужны драйверы, работающие для обеих сетевых карт. Чтобы
просмотреть, определены ли ваши карты системой, наберите
ifconfig. Ваш вывод программы может несколько отличаться от
нижеприведенного, это нормально. Важно то, что интерфейсы полностью
отображены.
Листинг 2.1: Проверка сетевых карт |
# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:60:F5:07:07:B8
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:11 Base address:0x9800
eth1 Link encap:Ethernet HWaddr 00:60:F5:07:07:B9
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:10 Base address:0x9400
|
Если вы не увидели ваши две карты и вы не уверены, какие карты у вас есть,
попробуйте запустить lspci | grep Ethernet из пакета
pciutils. Как только вы получите эту информацию, переходите к
конфигурированию ядра и добавьте поддержку соответствующих драйверов.
Следующим шагом включите поддержку межсетевого экрана iptables и NAT (а
также ограничителя пакетов, если вам он нужен). Приведенный список разделен
на обязательные (*), обязательные для ADSL через PPPoE (a), рекомендуемые
(x) функции и функции для ограничителя трафика (s). Неважно, как вы будете
осуществлять их поддержку — в самом ядре или в качестве модулей, если
функция будет затребована, соответствующий модуль будет загружен (загрузка
модуля оставлена для читателя как занимательное для любого упражнение).
Листинг 2.2: Сетевые функции |
Networking options --->
[*] TCP/IP networking
[*] IP: advanced router
[*] Network packet filtering (replaces ipchains)
[*] Socket Filtering
IP: Netfilter Configuration --->
[*] Connection tracking (required for masq/NAT)
[x] FTP protocol support
[x] IRC protocol support
[*] IP tables support (required for filtering/masq/NAT)
[*] IP range match support
[x] MAC address match support
[*] Multiple port match support
[*] Packet filtering
[*] REJECT target support
[x] REDIRECT target support
[*] Full NAT
[*] MASQUERADE target support
[s] Packet mangling
[s] MARK target support
[x] LOG target support
QoS and/or fair queueing --->
[s] QoS and/or fair queueing
[s] HTB packet scheduler
[s] Ingress Qdisc
[a] PPP (point-to-point protocol) support
[a] PPP filtering
[a] PPP support for async serial ports
[a] PPP support for sync tty ports
[a] PPP Deflate compression
[a] PPP BSD-Compress compression
[a] PPP over Ethernet
|
Примечание:
Что-то может немного отличаться между ядрами веток 2.4 и 2.6, но вы в этом
разберетесь сами :). Даже для ядер 2.6 эти параметры имеют тенденцию
перемещаться по меню. Так что удачи!
|
3.
Подключение к WAN (или к интернету)
Введение
Есть множество способов подключиться к интернету, поэтому я рассмотрю те, в
которых хорошо разбираюсь сам. Остановимся на ADSL (PPPoE) и кабельном
подключении (с использованием статических/динамических IP-адресов). Если
другие способы не описаны здесь, смело пишите небольшое руководство и
отправляйте мне по электронной почте. Вы можете смело пропускать следующие
разделы, не касающиеся вас. В этой главе описывается подключение
маршрутизатора к интернету через интерфейс eth1.
ADSL и PPPoE
Все разнообразное ПО для PPPoE было объединено в один замечательный
маленький пакет, именуемый ныне Roaring Penguin (Хохочущий
Пингвин — прим. пер.). Просто наберите emerge rp-pppoe и
вы будете на правильном пути. Помните, я говорил, что вам может понадобиться
информация о имени пользователя и пароле? Что ж, я не лгал и я надеюсь, что
она у вас есть! Загрузите /etc/ppp/pppoe.conf в ваш любимый
текстовый редактор и внесите ее в файл.
Примечание:
Для того, чтобы следующие настройки работали, у вас должен быть установлен
baselayout-1.11.14 или выше в вашей системе.
|
Листинг 3.1: Настройка eth1 |
# nano /etc/ppp/pap-secrets
"vla9h924" * "password"
# nano /etc/conf.d/net
config_eth1=( "adsl" )
user_eth1=( "vla9h924" )
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start
|
Предупреждение:
Когда поднимется DSL-интерфейс, создастся устройство ppp0. Хотя ваша сетевая
карта называется eth1, IP-адрес на самом деле будет привязан к ppp0. Теперь,
когда вы увидете в примерах использование «eth1», замените его
на «ppp0».
|
Кабельное соединение и/или динамические/статические IP-адреса
Если у вас статический IP-адрес, то, по сравнению с динамическим IP-адресом,
вам потребуется несколько больше параметров настроек. Дополнительно вам
понадобится ваш IP-адрес, адреса шлюза и DNS-серверов.
Листинг 3.2: Настройка eth1 |
# emerge dhcpcd
# nano /etc/conf.d/net
config_eth1=( "dhcp" )
# nano /etc/conf.d/net
config_eth1=( "66.92.78.102 broadcast 66.92.78.255 netmask 255.255.255.0" )
routes_eth1=( "default gw 66.92.78.1" )
# nano /etc/resolv.conf
nameserver 123.123.123.123
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start
|
У вас должно все работать, чтобы вы могли идти дальше.
4.
Подключение к LAN (приведите несколько друзей)
Этот шаг сравним с одним из предыдущих.
Листинг 4.1: Настройка eth0 |
# nano /etc/conf.d/net
config_eth0=( "192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0" )
# rc-update add net.eth0 default
# /etc/init.d/net.eth0 start
|
5.
Сервисы LAN (потому что мы славные люди)
DHCP-сервер
Уверен, было бы славно, если любой в вашем доме мог просто подключить свой
компьютер к сети и сразу начать работать. Нет нужды запоминать бесполезные
детали или тратить время, путаясь в диалогах конфигураций! Жизнь должна быть
хороша, не правда ли? Введение в протокол динамической конфигурации хоста
(DHCP) и почему вы должны об этом позаботиться.
DHCP полностью оправдывает свое название. Это протокол, позволяющий вам
автоматически настраивать другие компьютеры. Вы запускаете DHCP-сервер
(dhcpd) на маршрутизаторе, даете ему всю информацию о вашей сети (доступные
IP-адреса, серверы DNS, шлюзы и т. д...), а затем, когда начнет загружаться
другой компьютер, он запустит DHCP-клиент и автоматически настоится. Ни
суматохи, ни беспорядка! Для более детальной информации вы всегда можете
посетить Википедию.
Мы воспользуемся пакетом dnsmasq, который предоставляет оба сервиса DHCP и
DNS. Сейчас перенесем свое внимание на DHCP. Помните, что если вы хотите
запустить отдельный сервер DHCP, то вы найдете другой пример в главе
Забавные вещи. Также если вы хотите отточить настройки DHCP-сервера, просто
прочтите комментарии в /etc/dnsmasq.conf. Настройки по
умолчанию должны работать великолепно.
Листинг 5.1: Настройка DHCP-сервера |
# emerge dnsmasq
# nano /etc/dnsmasq.conf
dhcp-range=192.168.0.100,192.168.0.250,72h
interface=eth0
# rc-update add dnsmasq default
# /etc/init.d/dnsmasq start
|
Теперь ваш маленький маршрутизатор еще и DHCP-сервер! Подключите несколько
компьютеров и понаблюдайте за их работой! Для систем с ОС Windows вам
выбрать параметры «Obtain an IP address automatically»
(«Получать IP-адреса автоматически») и «Obtain DNS server
address automatically» («Получать адреса DNS-серверов
автоматически») в настройках соединения. Изменения не будут
мгновенными, поэтому запустите командную строку и введите в ней ipconfig
/release и ipconfig /renew. Но довольно о Windows, вернемся назад
к нашим любимым пингвинам.
DNS-сервер
Когда люди хотят посетить место в интернете, они запоминают названия, а не
набор бесполезных цифр. В конце концов, что проще запомнить — ebay.com
или 66.135.192.87? Вот здесь появляется система доменных имен —
Domain Name System (DNS). DNS-серверы работают по всему интернету, и если
кто-нибудь захочет посетить ebay.com, то они заменят ebay.com (понятный для
нас) на 66.135.192.87 (понятный для компьютеров). Для более детальной
информации о DNSвы можете всегда посетить Википедию.
Мы использовали пакет dnsmasq в качестве DHCP-сервера, но он также содержит
и DNS-сервер, и вам больше ничего не надо делать! Ваш маленький
маршрутизатор уже предоставляет услуги DNS для своих клиентов DHCP. Держу
пари, что вы хотели бы, чтобы все было так просто ;).
Вы можете выбрать другой сервер DNS, если он более удобен для вас, но
причина использования dnsmasq заключается в том, что он разработан
специально для того, что хотим мы и ничего более. Это небольшой
кэширующий/пробрасывающий сервер DNS для локальных сетей. Нам не нужно
предоставлять DNS для нашего домена, просто осуществлять простые операции с
DNS вне нашей локальной сети.
NAT (или IP-маскарадинг)
На данный момент люди вашей сети могут общаться друг с другом и могут
преобразовывать имена узлов с помощью DNS, но они все еще не могут по
настоящему выйти в интернет. Вы можете подумать, что это великолепно (больше
канала для вас!), но я готов поспорить, что они так не считают.
Вот здесь на сцену выходит трансляция сетевых адресов (Network Address
Translation — NAT). NAT — это способ подключить множество
компьютеров в частной сети к интернету, если у вас в распоряжении есть
только небольшой набор IP-адресов. Обычно вы получаете от провайдера только
1 IP-адрес, но вы хотите позволить всему вашему дому подключаться к
интернету. NAT —это то самое колдовство, делающее это возможным. Для
более детальной информации о NAT вы всегда можете посетить Википедию.
Примечание:
Перед тем, как начать, удостоверьтесь, что в вашей системе есть
iptables. Несмотря на то, что он автоматически устанавливается в большинстве
систем, у вас он может не быть. Если у вас его нет, просто наберите
emerge iptables.
|
Листинг 5.2: Настройка iptables |
# iptables -F
# iptables -t nat -F
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP
# export LAN=eth0
# export WAN=eth1
# iptables -I INPUT 1 -i ${LAN} -j ACCEPT
# iptables -I INPUT 1 -i lo -j ACCEPT
# iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
# iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
# iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
# iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_dynaddr = 1
|
Как только все это будет написано, остальные из вашей сети смогут
пользоваться интернетом так, как будто сами подключены напрямую к нему.
Параметр ip_dynaddr полезен для систем с соединением по необходимости или в
случаях, когда ваш провайдер предоставляет динамические адреса. Благодаря
этому решается проблема попытки подключения до полного запуска сетевого
интерфейса. На деле это просто упрощает жизнь пользователям за вашим
маршрутизатором.
6.
Забавные вещи (во время дождливых дней)
Введение
Верите ли или нет, но вы все уже сделали :). Начиная с этого раздела, я
опишу несколько полезных тем, которые могут быть полезными для вас. Любая из
этих глав необязательна.
Пробрасывание портов
Когда-нибудь вам может потребоваться сервисы на компьютере за
маршрутизатором или же вы просто хотите сделать жизнь проще, подключаясь к
локальной сети из интернета. Возможно, вы захотите запустить серверы FTP,
HTTP, SSH или VNC на одном или нескольких компьютерах за вашим
маршрутизатором и подключаться к ним всем. Есть только одно ограничение
— вы можете запускать только по одному сервису на компьютере на каждый
порт. Например, невозможно настроить три FTP-сервера за вашим
маршрутизатором и попробовать подключиться ко всем трем из интернета через
порт 21; только один из них будет на порту 21, когда как остальные будут
использовать, скажем, порты 123 и 567.
Все правила проброса портов имеют вид iptables -t nat -A PREROUTING [-p
протокол] --dport [внешний порт маршрутизатора] -i ${WAN} -j DNAT --to
[IP-адрес/порт для проброса]. К сожалению, iptables не принимает имена
узлов при пробросе портов. Если вы пробрасываете внешний порт на порт с тем
же номером для внутреннего компьютера, то вы можете опустить порт
назначения. См. страницу помощи iptables(8) для большей информации.
Листинг 6.1: Выполнение команд iptables |
# export LAN=eth0
# export WAN=eth1
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -I PREROUTING -p tcp --dport 5900 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 5901 -i ${WAN} -j DNAT --to 192.168.0.3:5900
# iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55
# iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -A PREROUTING -p tcp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
# iptables -t nat -A PREROUTING -p udp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
# iptables -t nat -A PREROUTING -p tcp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 88 -i ${WAN} -j DNAT --to 192.168.0.69
|
Примечание:
Если у вас есть полезные/интересные примеры, пишите мне.
|
identd (для IRC)
Ретранслируемые интернет-чаты (Internet Relay Chat, IRC) усиленно используют
сервис ident. Теперь, когда IRC-клиенты находятся за маршрутизатором, нам
нужен способ настроить свой ident для маршрутизатора и клиентов. Подобный
сервер называется midentd.
Листинг 6.2: Настройка и запуск ident |
# emerge midentd
# rc-update add midentd default
# /etc/init.d/midentd start
|
В портеже есть и другие серверы ident. В зависимости от ваших нужд,
рекомендую попробовать oidentd и fakeidentd.
Сервер времени
Сохранять системное время точным является неотъемлемой частью сопровождения
хорошей системы. Одним из самых распространенных способов сделать это
являются протокол сетевого времени (Network Time Protocol, NTP) и пакет ntp
(содержащий реализации как сервера, так и клиента).
Многие запускают клиенты NTP на своих компьютерах. Очевидно, что множество
клиентов по всему миру сильно загружают серверы NTP, обращаясь к ним. В
условиях домашней сети мы можем помочь снизить нагрузку общедоступных
серверов, предоставляя в свою очередь время нашим компьютерам. А в качестве
бонуса обновление в локальной сети будет происходить намного быстрее! Все,
что нам нужно, — запустить NTP-сервер на маршрутизаторе, который будет
синхронизироваться с общедоступными серверами и предоставлять время другим
компьютерам в локальной сети. Чтобы начать, просто наберите emerge
ntp на маршрутизаторе.
Листинг 6.3: Настройка и запуск сервера NTP |
# nano /etc/conf.d/ntp-client
# rc-update add ntp-client default
# nano /etc/ntp.conf
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
# nano /etc/conf.d/ntpd
# rc-update add ntpd default
# /etc/init.d/ntp-client start
# /etc/init.d/ntpd start
|
Примечание:
Удостоверьтесь, что разрешили входящие и исходящие соединения на порт ntp
(123/udp) при настройке сервера. Клиентам требуется только исходящий доступ
на порт 123 через udp.
|
Теперь на клиентах также наберите emerge ntp. А дальше просто
запустите ntp-клиент, потому что настройка элементарна.
Листинг 6.4: Настройка и запуск клиента NTP |
# nano /etc/conf.d/ntp-client
# rc-update add ntp-client default
# /etc/init.d/ntp-client start
|
Сервер rsync
Вы сможете уберечь тех, кто использует машины с ОС Gentoo в локальной сети,
от синхронизации каждой машины посредством emerge sync с удаленными
серверами. Запустив локальный rsync, вы снизите свой трафик и загруженность
канала rsync-серверов Gentoo. Это сделать очень просто.
Примечание:
Для более детальной информации о rsync, посетите официальное руководство по rsync
|
Хотя каждый компьютер с установленной ОС Gentoo нуждается в rsync, нет
необходимости устанавливать его на всех клиентах. Отредактируйте
/etc/rsyncd.conf файл, раскомментируйте раздел
[gentoo-portage], и удостоверьтесь, что добавили параметр
address. Остальные настройки подходят по умолчанию.
Листинг 6.5: Настройка сервера rsync |
pid file = /var/run/rsyncd.pid
use chroot = yes
read only = yes
address = 192.168.0.1
[gentoo-portage]
path = /mnt/space/portage
comment = Gentoo Linux Portage tree
exclude = /distfiles /packages
|
Теперь вам необходимо стартовать сервис (и снова, настройки по умолчанию
подойдут).
Листинг 6.6: Запуск сервера rsync |
# /etc/init.d/rsyncd start
# rc-update add rsyncd default
|
Все, что остается вам, — сообщить вашим клиентам синхронизироваться с
маршрутизатором.
Листинг 6.7: Настройка SYNC в файле make.conf на клиентской машине |
SYNC="rsync://192.168.0.1/gentoo-portage"
|
Почтовый сервер
Когда-нибудь будет неплохо запустить на маршрутизаторе собственный сервер
SMTP (Simple Mail Transfer Protocol — простой протокол передачи
почты). У вас могут быть есть свои причины сделать это, но я запускаю его
для того, чтобы пользователи видели, как их почта быстро уходит, а вся
работа по получении/маршрутизации перекладывалась на почтовый сервер. К тому
же некоторые провайдеры не разрешают трансляцию почты для учетных записей,
не являющихся частью их собственных сетей (например Verizon). Также, вы
можете просто регулировать доставку почты, и большие вложения не будут
постоянно забивать ваш канал на полчаса.
Листинг 6.8: Настройка и запуск SMTP |
# emerge qmail
# ebuild /var/db/pkg/*-*/qmail-1.03-r*/*.ebuild config
# iptables -I INPUT -p tcp --dport smtp -i ! ${LAN} -j REJECT
# ln -s /var/qmail/supervise/qmail-send /service/qmail-send
# ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
# cd /etc
# nano tcp.smtp
192.168.0.:allow,RELAYCLIENT=""
# tcprules tcp.smtp.cdb rules.tmp < tcp.smtp
# rc-update add svscan default
# /etc/init.d/svscan start
|
Я прожженный фанат qmail, но вы вольны использовать другой MTA :). Как
только вы настроите электронную почту для узлов вашей сети, сообщите им, что
теперь их почтовый сервер имеет адрес 192.168.0.1 и теперь все будет по
первому разряду. Вам можете посетить домашнюю
страницу qmail для более подробной документации.
Полный DHCP-сервер
Ранее мы использовали dnsmasq для предоставления сервиса DHCP всем нашим
клиентам. Для большинства людей, работающих в небольших локальных сетях,
этого более чем достаточно. Но вам может понадобиться что-то с более
широкими возможностями. Для этого мы перейдем к полноценному DHCP-серверу,
разработанному людьми из ISC.
Листинг 6.9: Настройка dhcpd |
# emerge dhcp
# nano /etc/dhcp/dhcpd.conf
authoritative;
ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.250;
default-lease-time 259200;
max-lease-time 518400;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1;
}
# nano /etc/conf.d/dhcpd
# rc-update add dhcpd default
# /etc/init.d/dhcpd start
|
Это минимальные настройки, необходимые для замены DHCP-возможностей от
dnsmasq, использованного нами ранее. Кстати, не забыли ли вы отключить
возможности DHCP в dnsmasq? Если да, то вы должны сделать это сейчас (просто
закомментируйте настройки dhcp-range в /etc/dnsmasq.conf
и перезапустите сервис).
Подключение другой локальной сети (или двух, или трех, или...)
Когда-нибудь вам понадобится подключить к маршрутизатору другую локальную
сеть. Возможно, что вы хотите собрать в отдельную группу своих друзей, или
вы перфекционист и хотите разделить сеть на группы компьютеров, или вы
просто на самом деле заскучали. Как бы то ни было, расширение маршрутизатора
еще одной сетью должно быть довольно простым и понятным. Вы следующих
примерах предположим, что новая сеть подключена к третье сетевой карте с
именем eth2.
Сначала вам понадобится настроить интерфейс. Просто следуйте инструкциям в
примере 4.1, заменяя eth0 на
eth2, а 192.168.0 на 192.168.1.
Затем вам понадобиться подправить dnsmasq для обслуживания нового
интерфейса. Просто отредактируйте файл /etc/conf.d/dnsmasq
снова и добавьте -i eth2 к DNSMASQ_OPTS; использование ключа -i
несколько раз допустимо. Затем отредактируйте
/etc/dnsmasq.conf и добавьте новую строку, подобную строке
dhcp-range в примере 5.1, заменив
192.168.0 на 192.168.1. Наличие нескольких строк dhcp-range
тоже в порядке вещей.
И наконец, посмотрите правила межсетевого экрана в в примере 5.2 и продублируйте те, что имеют
подстроку -i ${LAN}. Вам может понадобиться создать новую переменную,
например LAN2, чтобы упростить жизнь.
7.
Проблемы
Полезные утилиты
Если у вас проблемы в подключении компьютеров к сети, вы можете попробовать
устранить их с помощью следующих утилит (всех их можно найти в портежах в
категории net-analyzer):
| Утилиты |
Описание |
| wireshark |
Графическая утилита, позволяющая просмотреть весь низкоуровневый сетевой
трафик, распределенный по фильтрам |
| tcpdump |
Консольная утилита для дампа всего низкоуровневого сетевого трафика,
распределенного по фильтрам |
| iptraf |
Основанный на ncurses монитор IP-трафика LAN |
| ettercap |
Основанный на ncurses сетевой монитор |
Ошибки DHCP при старте
При первом старте init.d-сценария dhcp вы можете получить ошибку загрузки
без какой-либо полезной информации.
Листинг 7.1: Пример ошибки DHCP |
# /etc/init.d/dhcp start
* Setting ownership on dhcp.leases ... [ ok ]
* Starting dhcpd ... [ !! ]
|
Все дело в том, что надо знать, куда dhcpd направляет свой вывод. Просто
просмотрите /var/log и почитайте log-файлы. В зависимости от того,
какой пакет вы используете в качестве syslog, попробуйте запустить grep -Rl
dhcpd /var/log для того, чтобы сузить поиск. Возможно, вы случайно
совершили ошибку в конфигурационном файле. Также вы можете попробовать
запустить dhcpd -d -f (для быстрой отладки/запуска) и исправить на
основе вывода ошибки.
Некорректное значение MTU
Если вы сталкиваетесь со странными ошибками (например, не загружаются
определенные web-страницы), возможно, у вас проблема Path MTU
Discovery. Быстрый способ проверить это — запустить эту команду
iptables:
Листинг 7.2: Определение проблем с MTU |
# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
|
Это повлияет на все новые соединения, поэтому для теста просто обновите
страницу, с которой у вас проблемы. Если это поможет, то стандартным
значением MTU для 100 Мбит/с сетей является 1500, когда как для
PPPoE-соединений — 1492. Для более детальной информации
прочтите главу 15 из документа Linux
Advanced Routing & Traffic Control HOWTO.
Невозможно подключить два компьютера напрямую
Если вы хотите связать два компьютера напрямую между собой (неважно,
зачем) без использования концентратора или коммутатора, то обычный кабель,
скорее всего, не подойдет. Исключение составляет специальный Auto MDI/MDI-X
(также известный как «autosensing») сетевой адаптер. Вам
понадобится специальный перекрестный (crossover) кабель. Более подробная
информация о различии разных типов кабелей может быть найдена на странице
Википедии
(англ.).
8.
Послесловие
У меня нет послесловия, если не считать того, что если вы испытываете
проблемы с этим руководством, пожалуйста, свяжитесь со мной или отправьте файл с ошибкой через
систему управления изменениями
Gentoo. Если у вас есть интересная информация и вы хотите расширить
данное руководство, в любом случае, направляйте ее мне для добавления.
Текст этого документа распространяется на условиях лицензии
Creative Commons
- Attribution / Share Alike.
|