Рейтинг:1

означает ли добавление правила в iptables, что оно вступает в силу немедленно?

флаг in

я бегу sudo iptables -A INPUT -p tcp -m tcp --dport 2222 -j ПРИНЯТЬ в bash, а затем попытался подключиться к этой машине через другую машину в той же локальной сети / подсети через порт 2222 с помощью PuTTY, и это не сработало.

Может быть, мне нужно перезапустить iptables после того, как я добавлю правило, чтобы оно вступило в силу? Если да, то как бы я это сделал?

Вот результат iptables -S:

-P ВВОД ПРИНЯТЬ
-P ПАДЕНИЕ ВПЕРЕД
-P ВЫВОД ПРИНЯТЬ
-N ДОКЕР
-N DOCKER-ИЗОЛЯЦИЯ-ЭТАП-1
-N DOCKER-ИЗОЛЯЦИЯ-СТАДИЯ-2
-N DOCKER-ПОЛЬЗОВАТЕЛЬ
-A ВХОД -p tcp -m tcp --dport 2222 -j ПРИНЯТЬ
-A FORWARD -j DOCKER-USER
-A ВПЕРЕД -j DOCKER-ИЗОЛЯЦИЯ-ЭТАП-1
-A FORWARD -o docker0 -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
-A ВПЕРЕД -o docker0 -j DOCKER
-A ВПЕРЕД -i docker0 ! -o docker0 -j ПРИНЯТЬ
-A ВПЕРЕД -i docker0 -o docker0 -j ПРИНЯТЬ
-A FORWARD -o br-4f5770ea8905 -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
-A ВПЕРЕД -o br-4f5770ea8905 -j ДОКЕР
-A ВПЕРЕД -i br-4f5770ea8905 ! -o br-4f5770ea8905 -j ПРИНЯТЬ
-A ВПЕРЕД -i br-4f5770ea8905 -o br-4f5770ea8905 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.2/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 3306 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.3/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 8080 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.3/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 443 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.7/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 6379 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.8/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 3306 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.10/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 3306 -j ПРИНЯТЬ
-A ДОКЕР -d 172.18.0.3/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 80 -j ПРИНЯТЬ
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-4f5770ea8905 ! -o br-4f5770ea8905 -j DOCKER-ИЗОЛЯЦИЯ-ЭТАП-2
-A DOCKER-ISOLATION-STAGE-1 -j ВОЗВРАТ
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-4f5770ea8905 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j ВОЗВРАТ
-A DOCKER-USER -j ВОЗВРАТ

Вот результат sudo iptables --line-numbers -L ВВОД:

Сеть INPUT (политика ACCEPT)
num target prot opt ​​источник пункт назначения
1 ПРИНЯТЬ tcp -- где угодно tcp dpt:2222
флаг in
[Этот ответ, полученный несколько лет назад] (https://askubuntu.com/a/243180/1222991), актуален и сегодня. Как правило, если вы хотите, чтобы что-то вступало в силу немедленно, вам нужен инструмент `ufw`. Он запишет изменение правила в iptables и тихо применит его в фоновом режиме.
Doug Smythies avatar
флаг gn
Да, добавленные правила iptables вступают в силу немедленно. Нам нужно, чтобы вы опубликовали весь набор правил iptables, чтобы иметь возможность попытаться помочь в дальнейшем. Но может случиться так, что вам нужно вставить, а не добавить это правило на более раннем этапе.
флаг in
@DougSmythies - я добавил весь набор правил iptables. Спасибо!
флаг in
@matigo - я безуспешно пробовал `sudo ufw allow 2222`. Я прочитаю этот ответ, иаб - мне нужно выполнить несколько быстрых поручений. Спасибо!
Doug Smythies avatar
флаг gn
Ваш набор правил iptables не проблема. Вы уверены, что компьютер прослушивает порт 2222?
Рейтинг:6
флаг in

Да, добавление правил с помощью команды iptables вступает в силу немедленно.

Предположительно, вы хотите добавить правило ACCEPT для порта, потому что вы хотите переопределить правило, которое блокирует все или большинство портов.

Однако вы добавили правило с который добавит правило в таблицу. Поскольку у вас уже есть блокирующее правило (например, DROP или REJECT), после этого будет добавлено новое правило, что сделает его неэффективным.

Если вы хотите, чтобы это работало, вам нужно либо вставить правило (-I #) перед блокирующим правилом, либо добавить правило в правильную позицию в файле конфигурации и перезагрузить все правила. (Или используйте что-то вроде ufw или firewalld, чтобы сделать это за вас). Вы можете получить пронумерованный список правил с помощью iptables --line-numbers -L ВВОД и вставьте новое правило в позицию вашего правила блокировки или перед ней.

Если предположение, что у вас есть блокирующее правило, неверно, вам нужно вернуться и проверить, не открыл ли что-нибудь порт. Ты можешь использовать нетстат -nl | группа 2222 или же сс-нлт | группа 2222 а если его нет в списке, то порт ничего не слушает.

Из вывода, который вы добавили к своему вопросу, таблица INPUT в основном пуста (за исключением вашего правила принятия) и -P ВВОД ПРИНЯТЬ говорит принять все, что не соответствует правилам во входной таблице.

флаг in
Вот мой вывод `sudo iptables -S`: https://pastebin.com/4We0DhaP. Ничто не похоже на правило блокировки для меня, но я боюсь сказать, что я действительно не очень хорошо знаю iptables.
флаг in
`sudo iptables --line-numbers -L INPUT` возвращает https://pastebin.com/VcVveE8W
user10489 avatar
флаг in
Похоже, у вас нет правил блокировки на входе, а порт, который вы пытаетесь открыть в брандмауэре, уже открыт. Я думаю, что вы решаете не ту проблему, и вам нужно объяснить, чего вы пытаетесь достичь вместо этого. Вероятно, ничего не прослушивается в порту.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.