У меня есть контейнер, который я хочу запустить через VPN, но я не хочу влиять на трафик хоста. Простое размещение двух контейнеров в одной сети не кажется уловкой.
Например
$ docker run --rm --name ovpn -v openvpn:/etc/vpn/config --network tunnel --cap-add NET_ADMIN --device /dev/net/tun openvpn-client
(openvpn-client
- это просто небольшой контейнер, который я собрал, который вызывает openvpn --config /etc/vpn/config/config.ovpn
)
Тем не мение,
$ docker run --network tunnel --rm byrnedo/alpine-curl checkip.amazonaws.com/
дает мне IP-адрес хоста контейнера, а не хоста VPN.
Большая часть того, что я рассмотрел, включает перенаправление всего интерфейса докера через tun0 с использованием iptables, что я не хочу делать.
Я также попытался дать контейнеру curl
CAP_NET_ADMIN
и запустить route add default gw ovpn eth0
, но, похоже, это просто предотвращает выход трафика из контейнера. Я думаю, чтобы сделать что-то вроде этого, мне, возможно, придется сделать некоторые хитрости iptables, но я не совсем уверен.
Есть ли хороший способ сделать то, что я хочу?