У меня есть сервер OpenVPN. Клиент, подключающийся к этому серверу, получает внутренний IPv4-адрес (10.2.52.X) и внешний IPv6-адрес. Мне нужно выполнить маскировку (NAT) для IPv4, но мне не нужно ничего выполнять для IPv6 (может блокировать входящие соединения, кроме выбранных портов).
В настоящее время, если я systemctl stop firewalld
, соединение IPv6 работает нормально: я могу ping6
адреса или я могу открывать подключения к 80 порту, используя telnet
или браузер. Но если я включу firewalld, то смогу только ping6-адреса. Исходящие TCP-соединения кажутся заблокированными.
eth0
это мой внешний интерфейс, tun0
это мой внутренний интерфейс VPN. До сих пор я назначал внешние / внутренние зоны интерфейсам (это включало маскировку для IPv4) и добавил службу openvpn во внешнюю зону (чтобы разрешить входящие UDP-соединения на порт 1194)
# firewall-cmd --get-active-zones
internal
interfaces: tun0
external
interfaces: eth0
Получается, что firewalld по умолчанию отклоняет все в цепочке FORWARD, и я не нашел простого способа это изменить. Я создал «прямое» правило.
firewall-cmd --permanent --direct --add-rule ipv6 filter FORWARD_direct 0 -i tun0 -o eth0 -j ACCEPT
Теперь все работает как положено.