Назад | Перейти на главную страницу

правила iptables не работают

Я не понимаю, почему мои правила iptable блокируют доступ к https://example.com:9700 несмотря accept добавляемое правило

Я начинаю с выяснения всего

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

Затем отбрасываем все, добавляем исключение для ssh и моего порта 9700

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 9700 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9700 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Сервис работает после очистки и перестает работать после второго набора правил.

Обратите внимание, что правило для SSH работает отлично. Я могу повторно подключиться к своему серверу через SSH после добавления правила

Проблема с DNS Подтвержденный DNS не работает согласно одному из ответов. Однако это не объясняет, почему я до сих пор не могу получить к нему доступ через IP-адрес: https://xx.xxx.xx.x:9700

Можете ли вы разрешить имя example.com? Если вы заблокируете доступ к какой-либо службе имен, ваш компьютер не сможет подключиться к example.com - вам придется добавить хост example.com и его IP-адрес в / etc / hosts или добавить исключение iptables для вашего DNS. .

Как опубликовано Вот, исключение для поиска DNS будет:

iptables -A INPUT -p udp --source-port 53 -j ACCEPT

РЕДАКТИРОВАТЬ:

Поскольку вы устранили проблемы с DNS, я изучил ваше правило глубже, и, насколько я понимаю, iptables не работает. Вы разрешаете ВХОДНОЙ трафик (на ваш компьютер) на порт назначения 9700 (на вашем компьютере!) И ВЫХОДНОЙ трафик (с вашего компьютера на внешний) с вашего локального порта 9700.

Вы хотите прямо противоположное (или я ошибаюсь?): Вы хотите, чтобы ваша машина подключилась к внешнему серверу через порт 9700, и вы хотите, чтобы этот сервер мог вам отвечать.

Итак, ваши последние два правила должны быть такими:

iptables -A OUTPUT -p tcp -m tcp --dport 9700 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

Это разрешает трафик, который начинается с любого порта (потому что вы не можете контролировать, какой порт протокол будет использовать для исходящего трафика) на вашем компьютере на любой другой компьютер на порту 9700, и разрешает трафик с любого другого компьютера в мире на ваш компьютер ЕСЛИ пакеты являются частью уже установленного соединения.

Пытаться:

iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

iptables -t filter -A INPUT -i lo -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 9700 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 9700 -m state --state ESTABLISHED -j ACCEPT

Я предполагаю, что DNS-сервер, который разрешает IP-адрес example.com, не является той же машиной.

Кроме того, я не думаю, что это действительно проблема, чтобы установить политику цепочки OUTPUT как ACCEPT. Попробуйте сами.

Этот набор правил мне подходит. Это должно сработать и для вас.

С уважением!