Trafic de tunnel Docker sur un port spécifique via VPN

2

Je ne sais pas s'il s'agit d'un problème spécifique à un docker ou d'une question de réseau générale.

J'exécute un serveur Debian Jessie avec plusieurs conteneurs Docker. Je crois comprendre que docker crée une interface virtuelle (ou à proprement parler un pont Ethernet virtuel) appelée docker0 et lie les interfaces virtuelles de chaque conteneur individuel. Il manipule ensuite l'hôte iptables pour permettre la communication entre les ports exposés de chaque conteneur et le réseau de l'hôte.

J'ai un VPN, l'interface est tun0. L'un des conteneurs expose deux ports: 8888 et 23456. Je veux tunneler tout le trafic à et de Port 23456 à travers le VPN.

Comment cela peut-il être fait?

Une autre façon de voir les choses est que docker achemine automatiquement le trafic basé sur le port vers le bon conteneur. Je veux insérer une autre couche via iptables, où le trafic sur le port 23456 est dirigé vers le VPN et tout trafic en provenance du VPN est dirigé vers le port 23456.

Pour plus d'informations, le fournisseur de réseau privé virtuel utilise OpenVPN.

fswings
la source

Réponses:

0

Cela devrait être complètement automatique, sauf pour la nécessité de la règle de mascarade habituelle:

  iptables -t nat -A POSTROUTING -i docker0 -o tun0 -j MASQUERADE

Juste pour des raisons de minutie, assurez-vous que la règle de routage, sur l'hôte, sert docker0: si vous pouvez envoyer une requête ping aux dockers à partir de l'hôte, inutile de poursuivre la lecture. Sinon, ajoutez

  ip route add Docker'sNetwork/16 via dev docker0
MariusMatutiae
la source