Контейнер Docker подключает iptables к прокси

У меня есть два VPS, первая машина (прокси-сервер) предназначена для прокси, а вторая машина (док-станция) - это хост докера. Я хочу перенаправить весь трафик, генерируемый внутри самого док- контейнера, через прокси, чтобы не подвергать стыковочные машины общедоступным IP-адресам.

Так как соединение между VPS осуществляется через Интернет, локальное соединение отсутствует, и туннель между ними создал ip tunnel следующим образом:

На прокси:

ip tunnel add tun10 mode ipip remote x.x.x.x local y.y.y.y dev eth0
ip addr add 192.168.10.1/24 peer 192.168.10.2 dev tun10
ip link set dev tun10 mtu 1492
ip link set dev tun10 up

На доке:

ip tunnel add tun10 mode ipip remote y.y.y.y local x.x.x.x dev eth0
ip addr add 192.168.10.2/24 peer 192.168.10.1 dev tun10
ip link set dev tun10 mtu 1492
ip link set dev tun10 up

PS: Не знаю, можно ли использовать ip tunnel для производства, это другой вопрос, так или иначе планируя использовать libreswan или openvpn в качестве туннеля между VPS.

После этого добавили правила SNAT в iptables на VPS и некоторые правила маршрутизации следующим образом:

На прокси:

iptables -t nat -A POSTROUTING -s 192.168.10.2/32 -j SNAT --to-source y.y.y.y

На доке:

iptables -t nat -A POSTROUTING -s 172.27.10.0/24 -j SNAT --to-source 192.168.10.2
ip route add default via 192.168.10.1 dev tun10 table rt2
ip rule add from 192.168.10.2 table rt2

И, наконец, что не менее важно, была создана докерская сеть с одним тестовым контейнером, следующим образом:

docker network create --attachable --opt com.docker.network.bridge.name=br-test --opt com.docker.network.bridge.enable_ip_masquerade=false --subnet=172.27.10.0/24 testnet
docker run --network testnet alpine:latest /bin/sh

К сожалению, все это закончилось безуспешно. Так что вопрос в том, как это отладить? Это правильный путь? Как бы вы сделали перенаправление через прокси?

Несколько слов о теории: трафик из подсети 172.27.10.0/24 соответствует правилу SNAP iptables, IP-адрес источника меняется на 192.168.10.2. По правилу маршрутизации он проходит через устройство tun10, это туннель. И запускает другое правило SNAP iptables, которое меняет IP на yyyy и, наконец, отправляется по назначению

0 ответов

Другие вопросы по тегам