?

Log in

No account? Create an account

Previous Entry Share Next Entry
DNS + iptables = Connection timed out while waiting to read
Linux
sanmai
Если я после всех разрешающих правил добавляю -j LOG в цепочку INPUT, то при каждом DNS-запросе вылезает следующее:
kernel: IN=eth0 OUT= MAC= SRC=1.2.3.4 DST=4.3.2.1 LEN=266 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=UDP SPT=53 DPT=xxxxx LEN=246 
kernel: IN=eth0 OUT= MAC= SRC=1.2.3.4 DST=4.3.2.1 LEN=327 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=UDP SPT=53 DPT=xxxxx LEN=307 
где 1.2.3.4 - адрес моего DNS-сервера и 4.3.2.1 - мой адрес.

Что это? Почему? Как разрешить в правилах?

Ситуация осложняется тем что модуля state на сервере нет и не будет.

Update, возможные решения без модуля state:
1. Указать в /etc/ssh/sshd_config следующую директиву:
UseDNS no
2. iptables -A INPUT -m udp -p udp --sport 53 -j ACCEPT

  • 1
iptables -I INPUT XX -p udp -m udp --sport 53 -j ACCEPT
где XX - номер, каким это правило вставить. по желанию добавить -s 1.2.3.4 -d 4.3.2.1 -i eth0

Как-то слишком разрешающе, разве нет?

верно, но по желанию можно добавить -s 1.2.3.4 -d 4.3.2.1 -i eth0 ))
iptables -I INPUT XX -s 1.2.3.4 -d 4.3.2.1 -i eth0 -p udp -m udp --sport 53 -j ACCEPT

Ага, а если вдруг у DNS-сервера поменяется адрес, то я окажусь без ssh :)

$ ssh user@example.com
Connection to 4.3.2.1 timed out while waiting to read


ммм... да, это паранойа )
есть DHCP, есть DynDNS, в конце концов можно IP своего сервера то запомнить ))

o_0 это то тут при чём? или я что-то недопонимаю.

В смысле, вывод с ключем -v точно такой же.

так. а ДНС тут при чём?

"When connecting to an OpenSSH server, one of the first things that the server does is to perform a reverse DNS loopuk on the client’s IP"

Обновил пост.

  • 1