LINUX.ORG.RU
решено ФорумAdmin

Проблемы с DHCP: клиент не получает адрес

 ,


0

1

На шлюзе поднят dnsmasq, он дает подсети 192.168.0.0/24 на eth0 адреса из 192.168.1.0/24 на eth1. iptables настроен обычно, с той лишь фишкой, что клиентов на 80-м порту, ломящихся в интернет, перенаправляет на прокси-сервер шлюза:

*nat
:PREROUTING ACCEPT [66:8933]
:INPUT ACCEPT [66:8933]
:OUTPUT ACCEPT [14:1710]
:POSTROUTING ACCEPT [14:1710]
-A PREROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE
COMMIT

*mangle
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1300:1500 -j TCPMSS --clamp-mss-to-pmtu
-A OUTPUT -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1300:1500 -j TCPMSS --clamp-mss-to-pmtu
COMMIT

*filter
:INPUT DROP [954:230773]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [763:211059]
-A INPUT -i lo -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth1 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -i eth1 -j ACCEPT
COMMIT
При этом /etc/init.d/dnsmasq restart проходит без каких-либо проблем:
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      3765/dnsmasq    
tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      3765/dnsmasq    
tcp6       0      0 ::1:53                  :::*                    LISTEN      3765/dnsmasq    
udp        0      0 127.0.0.1:53            0.0.0.0:*                           3765/dnsmasq    
udp        0      0 192.168.0.1:53          0.0.0.0:*                           3765/dnsmasq    
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           1174/avahi-daemon: 
udp6       0      0 ::1:53                  :::*                                3765/dnsmasq    
udp6       0      0 :::5353                 :::*                                1174/avahi-daemon: 
/etc/network/interfaces:
auto lo
iface lo inet loopback
     post-up iptables-restore </etc/iptables.conf
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
     address 192.168.0.1
     netmask 255.255.255.0
/etc/dnsmasq.conf:
interface=eth1
listen-address=192.168.0.1
bind-interfaces
domain=linux.lan
dhcp-range=192.168.0.2,192.168.0.254,255.255.255.0,24h
dhcp-option=3,192.168.0.1

Что может быть, подскажите?



Последнее исправление: bsb (всего исправлений: 2)

Еще вот, что отметил бы: если клиента напрямую подцепить мимо шлюза, а потом отключить и подключить через шлюз - он нормально подцепится.

bsb
() автор топика
Ответ на: комментарий от anton_jugatsu

упс, а он на 69-м разве?

Я тут копаюсь потихоньку, но до сих пор не работает:

*nat
:PREROUTING ACCEPT [66:8933]
:INPUT ACCEPT [66:8933]
:OUTPUT ACCEPT [14:1710]
:POSTROUTING ACCEPT [14:1710]
-A PREROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE
COMMIT

*mangle
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1300:1500 -j TCPMSS --clamp-mss-to-pmtu
-A OUTPUT -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1300:1500 -j TCPMSS --clamp-mss-to-pmtu
COMMIT

*filter
:INPUT DROP [954:230773]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [763:211059]
-A INPUT -i lo -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth1 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -i eth1 -j ACCEPT
-A INPUT -p udp -m udp -i eth1 --dport 68 -j ACCEPT
-A OUTPUT -p udp -m udp -o eth1 --dport 67 --sport 68 -j ACCEPT
COMMIT

bsb
() автор топика
Ответ на: комментарий от bsb

dhcp находится ниже iptables, он уровень L2. Так что твои потуги в виде:

--dport 68 -j ACCEPT

Не имеют скорее всего смысла...

Ebtables — средство для фильтрации пакетов для программных мостов Linux. ebtables похоже на iptables, но отличается тем, что работает преимущественно не на третьем (сетевом), а на втором (канальном) уровне сетевого стека.

Но если ты в него не лазил, то просто на iptables можешь забить. Смотри логи dhcp сервера.

DALDON ★★★★★
()
Ответ на: комментарий от DALDON

Вас понял! Спасибо за разъяснения!

bsb
() автор топика
Ответ на: комментарий от bsb

Нет, на 67-ом. Смотрите логи, допустим, /var/log/messages. Там есть сообщения от dnsmasq-dhcp? Можно добавить в конфиг опцию ″log-dhcp″.

mky ★★★★★
()
Ответ на: комментарий от bsb

опс, ошибочка на 67, один хрен у тебя dnsmasq на этом порту не висит.

anton_jugatsu ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.