Я не понимаю, почему мои правила 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. Попробуйте сами.
Этот набор правил мне подходит. Это должно сработать и для вас.
С уважением!