Я предпочитаю использовать config вместо пакетного запуска или прямого запуска iptables в любом случае. И я всегда устанавливаю DROP в качестве действия по умолчанию для INPUT и OUTPUT в таблице фильтров. Поэтому мое решение заключается в следующем.
нац
...
-A INPUT -p tcp --dport 2222 -m connmark ! --отметка 1234
-A PREROUTING -p tcp --dport 22 -j ПЕРЕНАПРАВЛЕНИЕ --на -порт 2222
фильтр
...
-p TCP --dport 2222 -m connmark --метка 1234 -j ACCEPT
Поэтому я решил перезагрузиться, но перед перезагрузкой я сбросил параметры ядра во время выполнения в файл, а затем повторил настройку iptables/sysctl
, и на этот раз это сработало!
После сравнения вывода sysctl я вижу, что net.ipv4.conf.eth0.forwarding
равно 0, хотя net.ipv4.ip_forward
равно 1. Я не знал, что переадресация может быть включена или отключена для одной сетевой карты. Похоже, игра с firewall-cmd
установила неправильное значение для параметра ядра среды выполнения, а firewall-cmd
по какой-то причине не смог вернуть его обратно.