У меня есть файл правил iptable, в цепочке INPUT

-A INPUT -i em1 -p tcp -m tcp --dport 54000 -j ACCEPT
-A INPUT -i em1 -p tcp -m tcp --dport 30000 -j ACCEPT
-A INPUT -i em1 -p udp -m udp --dport 54000 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_direct 
-A INPUT -j INPUT_ZONES
-A INPUT -p icmp -j ACCEPT

затем я iptables-restore < rule_file и запустил UDP-сервер на порту 30000, который не является разрешенным UDP-портом 54000 но UDP-сервер все еще получает входящие UDP-пакеты на 30000, что с этим не так?

Кстати, iptables -L -n , я получаю:

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination 
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:54000
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:30000
    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:54000
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ES
    TABLISHED
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
    INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     icmp --  0.0.0.0/0 

Я использую Nmap с другой машины, чтобы исследовать эту машину

nmap -port 30000

или же

nmap -port 54000

результаты показывают, что эти два порта закрыты!

3 ответа3

1

Помните, что когда вы проверяете порты с помощью nmap/telnet и получаете сообщения "закрыто" или "отказано в соединении" или подобные ошибки, это означает, что вы, возможно, не разрешили порт ИЛИ у вас есть порт, но служба не прослушивает его.

Я бы лично написал правила так:

-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //if you want allow "familiar" packets
-A INPUT -p icmp -j ACCEPT
-A INPUT -i em1 -p tcp -m tcp --dport 54000 -j ACCEPT //the interface is optional if your pc has only one network card
-A INPUT -i em1 -p tcp -m tcp --dport 30000 -j ACCEPT
-A INPUT -i em1 -p udp -m udp --dport 54000 -j ACCEPT
-A INPUT -j INPUT_direct 
-A INPUT -j INPUT_ZONES
1
Chain INPUT (policy ACCEPT)

Ваши правила никогда не совпадают, так как вы принимаете все

Проверьте пакеты, которые совпадают с:

iptables -nvL

РЕДАКТИРОВАТЬ etagenklo: iptables пройти все правила в цепочке сверху вниз. Если ни одно правило не соответствует вашему пакету, iptables сделает то, что определено как политика для цепочки (в вашем случае это ACCEPT)

Чтобы изменить свою политику: iptables -P CHAIN RULE

iptables -P INPUT DROP
0

Измените свою политику для цепочки на DROP:

iptables -P INPUT DROP

Конечно, вам нужно убедиться, что есть правило ПРИНЯТЬ для всего, что вам нужно.

Объяснение:

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

Так что это должна быть стандартная конфигурация брандмауэра: вы хотите, чтобы он принимал все, что указано в правиле, и отбрасывал все остальное.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .