Я установил isc-dhcp-server на Ubuntu 12.10 и пытаюсь настроить DHCP-сервер на головном узле для шести рабочих компьютеров в локальной сети. Сам головной узел является DHCP-клиентом, получающим IP-адрес 192.168.20.1 (на eth0) от другого компьютера в сети.
Пересылка IPv4 IP включена на головном узле. В /etc/sysctl.conf была добавлена следующая строка:
net.ipv4.ip_forward = 1
В /etc/rc.local установлены следующие правила:
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE
Более того, INTERFACES="eth0"
устанавливается в / etc / default / isc-dhcp-server.
Файл dhcpd.conf содержит (на данный момент в файле только один рабочий компьютер):
ddns-update-style none;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.2 192.168.20.200
host hostName {
hardware ethernet macOfHost;
fixed-address 192.168.20.20;
}
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.20.255;
option routers 192.168.20.1;
}
Рабочий узел фактически получает IP-адрес 192.168.20.20, но у него нет подключения к Интернету. Проверка связи с 192.168.20.1 прошла успешно, а также проверка связи с компьютером, который служит DHCP-сервером для головного узла (проверка связи с 192.168.1.1). Проблема, похоже, не связана с DNS, поскольку ping на IP-адрес (например, 8.8.4.4) не работает.
Обновить
Топология сети следующая. Есть коммутатор, соединяющий компьютер (с доступом в Интернет и запущенным DHCP-сервером, IP-адрес 192.168.1.1) и 7 других компьютеров. Один из этих 7 компьютеров получает IP от компьютера 192.168.1.1. Он получает IP-адрес 192.168.20.1, и Интернет на этом компьютере работает нормально. Теперь у нас есть DHCP-сервер, работающий на 192.168.20.1, чтобы обеспечить доступ в Интернет для остальных 6 компьютеров, но это не удается. Они получают IP-адреса, но не имеют доступа в Интернет. Нам не разрешено что-либо изменять на узле 192.168.1.1, поэтому должно быть возможно заставить Интернет работать с этой настройкой.
Кто-нибудь знает, в чем может быть проблема?
Вывод / sbin / route -n на клиенте:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.20.1 0.0.0.0 UG 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth1
192.168.20.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1
Вывод sudo iptables -L -v -n: Цепочка INPUT (политика ACCEPT 2146 пакетов, 1551 Кбайт) pkts bytes target prot opt in source destination
Chain FORWARD (policy ACCEPT 59 packets, 3762 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1908 packets, 213K bytes)
pkts bytes target prot opt in out source destination
Вывод ip ro sh по умолчанию через 192.168.1.1 dev eth0 proto static 169.254.0.0/16 dev eth0 scope link metric 1000 192.168.0.0/16 dev eth0 proto kernel scope link src 192.168.20.1 metric 1
Сейчас все работает. Оказалось, проблема в DNS; изменение option routers
к option routers 192.168.1.1
исправил проблему. Пинги, должно быть, были заблокированы где-то в сети, поскольку ответы никогда не приходили, но был возможен серфинг в браузере на определенный IP-адрес, что заставило меня понять, что проблема была в DNS. Спасибо всем за вашу помощь.
на мои комментарии ...
Вы пытаетесь использовать одни и те же IP-адреса на eth0 и eth1 ..
Измените подсеть на eth1 на что-то вроде 10.10.0.0 /255.255.255.0, и все будет готово.
Документация Ubuntu довольно подробно описывает это в своем руководстве по совместному использованию соединений:
https://help.ubuntu.com/community/Internet/ConnectionSharing
необходимо включить пересылку:
sysctl -w net.ipv4.ip_forward=1
строка выше будет работать немедленно. но исчезнет при следующей перезагрузке системы.
для постоянной настройки поместите следующее в /etc/sysctl.conf
(но вступит в силу только после перезагрузки):
net.ipv4.ip_forward=1