3

Я использую провайдера VPN, который использует OpenVPN. Я не покидаю свой трафик, поэтому я настроил свои iptables следующим образом:

iptables -P INPUT DROP 
iptables -P FORWARD DROP 
iptables -P OUTPUT DROP 

### Inbound rules
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

### Outbound rules
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

Я просто разрешаю трафик OpenVPN и поиск DNS (для соединения OpenVPN). Связь идет просто отлично.

Проблема возникает, когда я пытаюсь посетить http сайты. Время соединения истекло. Но https работает! Если я делаю iptables -P OUTPUT ACCEPT все работает просто отлично!

Я проверил с Wireshark при использовании как iptables -P OUTPUT DROP и iptables -P OUTPUT ACCEPT но я не вижу ничего, что отличается, за исключением того, что при использовании DROP не могут быть получены http сайты.

В чем может быть проблема?

1 ответ1

2

Возможно, вы захотите провести двойное тестирование других элементов ваших правил - мне кажется, что они не принимают ни трафик HTTP, ни HTTPS - мне интересно, если во время игры с правилами вы добавили (и, возможно, впоследствии удалили) трафик HTTPS - оставив "УСТАНОВЛЕНО" соединение в такт и дает вам ложное чтение. Вы можете проверить эту теорию, используя iptables -vnL и наблюдая, как изменяются счетчики для правил при выполнении различных запросов.

Я ожидаю, что вам нужно добавить

> iptables -A OUTPUT -o tun+ -p tcp --dport 80 -j ACCEPT 
> iptables -A OUTPUT -o tun+ -p tcp --dport 80 -j ACCEPT

Или, если вы хотите более общее решение, которое позволит всему вашему трафику по туннелю работать

> iptables -A output -o tun+ -j ACCEPT

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