Я пытаюсь разрешить исходящий SSH в моем скрипте, но когда я тестирую его, он не реагирует.

Я делаю это: iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

Входящий SSH работает нормально, и я делаю то же самое, но только с

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Это потому, что я разрешаю только установленные соединения?

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

1 ответ1

2

Как вы сказали. Ответ на ваш исходящий SSH будет от порта 22, и не на порт 22, а на случайный порт, который был выбран с исходным исходящим соединением. Так что ни одно правило не будет соответствовать. И я полагаю, у вас есть политика по умолчанию DROP, иначе не было бы этого вопроса.

Просто добавьте то же правило в цепочку OUTPUT:

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Именно это правило превращает брандмауэр в состояние с сохранением состояния, используя conntrack для автоматического разрешения обратного потока.

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