При добавлении нового порта для SSH возникает ошибка при подключении:
$ ssh -p 2222 user@77.***.***.20 ssh: connect to host 77.***.***.20 port 2222: No route to host
Хотя правило в IPTABLES
добавлено:
# iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -j ACCEPT
И присутствует в списке:
# iptables -L -n --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ... 20 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 21 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222 state NEW
Тут следует обратить внимание на порядок правил – 20-ым указано “REJECT all
“, тогда как при добавлении правила с опцией -A
оно будет append, т.е. – добавлено в конец списка.
Соответственно, первым срабатывает правило REJECT
, и пакет до порта 2222 просто не доходит.
Что бы исправить это – удаляем старое правило:
# iptables -D INPUT 21
И добавляем его заново, но с опцией -I
(insert) и с указанием номера:
# iptables -I INPUT 20 -p tcp --dport 2222 -m state --state NEW -j ACCEPT
Смотрим список сейчас:
# iptables -L -n --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ... 20 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222 state NEW 21 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Теперь правило с REJECT
переместилось на 21 место, и подключение работает нормально:
$ ssh -p 2222 user@77.***.***.20 user@77.***.***.20's password: Last login: Thu Jul 3 09:33:13 2014 from 37.115.113.56 [user@venti ~]$
Не забываем сохранить правила:
# service iptables save iptables: Правила межсетевого экрана сохраняются в /etc/sys[ OK ]ptables: