У меня есть тестовый сервер со следующей конфигурацией IPtables:
[root@rhel64 /]# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Когда я попытался получить доступ к приложению, прослушивающему порт 8445, оно было отклонено. Как только я добавил правило, специально разрешающее трафик TCP на 8445, я смог получить к нему доступ. У меня вопрос: почему приведенная выше конфигурация не разрешает порт 8445 по умолчанию, если у меня есть правило «ПРИНЯТЬ все - где угодно и где угодно»?
Из-за давнего недостатка конструкции с iptables
-L
/--list
команда. Полное правило брандмауэра не отображается, если вы не используете -v
/--verbose
вариант. Как только вы это сделаете, вы увидите, что это правило принимает весь трафик - на lo
интерфейс!