Задать вопрос
@WebAirStudio

Как прокинуть входящий UDP порт Wireguard docker на Ubuntu?

Здравствуйте. Хочу открыть и прокинуть UDP 3658
Раньше использовал OpenVPN без Docker и просто делал так:
iptables -t nat -A PREROUTING -d 85.193.94.176 -p udp --dport 3658 -j DNAT --to-dest 10.8.0.2:3658
iptables -t filter -A INPUT -p udp -d 10.8.0.2 --dport 3658 -j ACCEPT


Но перешел на Wireguard GUI (wg-easy) правила предыдущие не помогают, так как через Docker.

Интерфейсы:
IPv4 address for docker0: 172.17.0.1
IPv4 address for eth0:    85.193.94.176


iptables -S
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 51821 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p udp -m udp --dport 51820 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN


VPN профиль всё так же на 10.8.0.2, но не отображается в списке интерфейсов ubuntu, так как в докере, как я понимаю.

P.S. Это для NFS Underground, не смейтесь ) Возможности использовать белый IP нет.
  • Вопрос задан
  • 647 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Добавьте ещё один порт в пробрасываемые контейнеру
-p 3658:3658/udp \
А в самом контейнере надо после каждого его старта/рестарта добавлять правило iptables:
sudo nsenter -n -t $(docker inspect -f '{{.State.Pid}}' wg-easy) iptables -t nat -A PREROUTING -d $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' wg-easy) -p udp --dport 3658 -j DNAT --to-dest 10.8.0.2:3658
sudo nsenter -n -t $(docker inspect -f '{{.State.Pid}}' wg-easy) iptables -t filter -A INPUT -p udp -d 10.8.0.2 --dport 3658 -j ACCEPT

Правила можно собрать в один шелл скрипт и запускать его одной командой.
P.S. NFS Underground 2 очень плохо себя вёл при джиттере.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы