VPN et docker sont dans un bateau

Bonjour à tous .
J’ai une question qui me taraude, un blocage conceptuel de mon p’tit cerveau avec les VPN.
Je voulais , dans le cadre des Newsgroups passer par un VPN pour certains outils ( deluge ici ) .
Or je vois que l’on peut faire un serveur VPN via docker.
D’où la question :
Est ce que , sur un même serveur , je peux avoir :

  • un docker Serveur VPN
    ET
  • un docker deluge client du docker Serveur VPN

conceptuellement et niveau réseau , je vois pas trop comment cela pourrait fonctionner mais après tout …

A vot’ bon coeur !

C’est pas pour troller du tout mais quel est ton niveau de maitrise ?

Si j’ai un peu de temps ce matin je te ferai un topo, mais je crois que tu confonds client VPN (le bout du tuyau chez toi) et serveur VPN (le bout du tuyau que tu paies pour te faire sortir de l’autre côté du monde et de manière anonyme). Encore une fois c’est sans méchanceté. Si ça se trouve c’est moi qui n’ai pas compris ce que tu veux faire.

1 « J'aime »

Dépend ou sont les différentes instances des docker, mais si c’est sur la même machine physique, tu va juste chiffrer pour rien ^^.

Merci pour la réponse.
Alors disons que niveau réseau , je connais la norme OSI , les différents réseau , plage d’adrese blabla et niveau système pas soucis ( c’est mon taff) .

Mais par contre , j’avoue que le VPN est pour un mode sombre et glauque , jamais trop compris comment ça fonctionnait.

Pour moi le fait d’avoir un serveur et le client sur le même serveur ( même si ils sont tous les deux sous docker ) est sans intérêt , mais je me posais la question quand même :slight_smile:

Ca n’a effectivement aucun intérêt sur le même serveur.
Un vpn va crée un tunnel chiffré de communication entre 2 points réseaux.
En gros çà négocie une méthode de chiffrement et çà l’applique pour laisser passer les paquets réseaux. Çà permet d’éviter que tout passe en clair sur un réseau non maitrisé.

Merci pour vos messages :slight_smile:
Alors du coup , j’ai oublié l’étape serveur VPN , et mis juste monclient DOCKER avec transmission sous VPN.
Cela marche … mais j’ai un problème chelou ( enfin pour moi ) .

  • Mon service transmission fonctionne
  • Je peux accéder à l’url http://192.168.0.38:9091 depuis chez moi
  • Je peux accéder à l’url http://nom_public:9091 depuis chez moi
    MAIS
  • je ne peux pas accéder à l’url http://nom_public:9091 depuis l’extérieur !

pourtant

  • ma freebox fait bien la redirection 9091 vers mon seveur
    -l’iptables de mon serveur, qui contient mon docker , fait bien la redirection

Est-ce que tu peux montrer la sortie des commandes suivantes ?

docker ps -a
docker inspect <conteneur>

root@debianServeur /root $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a12aec0af481 haugene/transmission-openvpn “dumb-init /etc/open…” 27 hours ago Up 27 hours 0.0.0.0:9091->9091/tcp transmission
81d0ed98addb haugene/transmission-openvpn “dumb-init /etc/open…” 2 days ago Exited (0) 27 hours ago wizardly_golick
3dab2e741af2 linuxserver/jackett:latest “/init” 5 days ago Up 4 days jackett
fdc36ca19b40 onlyoffice/documentserver “/bin/sh -c 'bash -C…” 3 weeks ago Up 4 days 443/tcp, 0.0.0.0:10010->80/tcp confident_goldstine
95218284b918 onlyoffice/documentserver “/bin/sh -c 'bash -C…” 2 months ago Created heuristic_kirch
root@debianServeur /root $

root@debianServeur /root $ docker inspect transmission
[
{
“Id”: “a12aec0af481bb031e3c23f31853dc27f3573b556c7f0692e981ab4bdedea283”,
“Created”: “2018-01-25T19:57:23.270087319Z”,
“Path”: “dumb-init”,
“Args”: [
"/etc/openvpn/start.sh"
],
“State”: {
“Status”: “running”,
“Running”: true,
“Paused”: false,
“Restarting”: false,
“OOMKilled”: false,
“Dead”: false,
“Pid”: 29658,
“ExitCode”: 0,
“Error”: “”,
“StartedAt”: “2018-01-25T19:57:27.991662764Z”,
“FinishedAt”: “0001-01-01T00:00:00Z”
},
“Image”: “sha256:eb76523d2aea0699dc4e03ce7b65746a12a3b847d60e7e66c1f4527e93f53b6a”,
“ResolvConfPath”: “/var/lib/docker/containers/a12aec0af481bb031e3c23f31853dc27f3573b556c7f0692e981ab4bdedea283/resolv.conf”,
“HostnamePath”: “/var/lib/docker/containers/a12aec0af481bb031e3c23f31853dc27f3573b556c7f0692e981ab4bdedea283/hostname”,
“HostsPath”: “/var/lib/docker/containers/a12aec0af481bb031e3c23f31853dc27f3573b556c7f0692e981ab4bdedea283/hosts”,
“LogPath”: “/var/lib/docker/containers/a12aec0af481bb031e3c23f31853dc27f3573b556c7f0692e981ab4bdedea283/a12aec0af481bb031e3c23f31853dc27f3573b556c7f0692e981ab4bdedea283-json.log”,
“Name”: “/transmission”,
“RestartCount”: 0,
“Driver”: “devicemapper”,
“Platform”: “linux”,
“MountLabel”: “”,
“ProcessLabel”: “”,
“AppArmorProfile”: “”,
“ExecIDs”: null,
“HostConfig”: {
“Binds”: [
"/copy_freebox/DL/transmission:/data",
"/etc/localtime:/etc/localtime:ro"
],
“ContainerIDFile”: “”,
“LogConfig”: {
“Type”: “json-file”,
“Config”: {
“max-size”: “10m”
}
},
“NetworkMode”: “default”,
“PortBindings”: {
“9091/tcp”: [
{
“HostIp”: “”,
“HostPort”: “9091”
}
]
},
“RestartPolicy”: {
“Name”: “no”,
“MaximumRetryCount”: 0
},
“AutoRemove”: false,
“VolumeDriver”: “”,
“VolumesFrom”: null,
“CapAdd”: [
“NET_ADMIN”
],
“CapDrop”: null,
“Dns”: [],
“DnsOptions”: [],
“DnsSearch”: [],
“ExtraHosts”: null,
“GroupAdd”: null,
“IpcMode”: “shareable”,
“Cgroup”: “”,
“Links”: null,
“OomScoreAdj”: 0,
“PidMode”: “”,
“Privileged”: false,
“PublishAllPorts”: false,
“ReadonlyRootfs”: false,
“SecurityOpt”: null,
“UTSMode”: “”,
“UsernsMode”: “”,
“ShmSize”: 67108864,
“Runtime”: “runc”,
“ConsoleSize”: [
0,
0
],
“Isolation”: “”,
“CpuShares”: 0,
“Memory”: 0,
“NanoCpus”: 0,
“CgroupParent”: “”,
“BlkioWeight”: 0,
“BlkioWeightDevice”: [],
“BlkioDeviceReadBps”: null,
“BlkioDeviceWriteBps”: null,
“BlkioDeviceReadIOps”: null,
“BlkioDeviceWriteIOps”: null,
“CpuPeriod”: 0,
“CpuQuota”: 0,
“CpuRealtimePeriod”: 0,
“CpuRealtimeRuntime”: 0,
“CpusetCpus”: “”,
“CpusetMems”: “”,
“Devices”: [
{
“PathOnHost”: “/dev/net/tun”,
“PathInContainer”: “/dev/net/tun”,
“CgroupPermissions”: “rwm”
}
],
“DeviceCgroupRules”: null,
“DiskQuota”: 0,
“KernelMemory”: 0,
“MemoryReservation”: 0,
“MemorySwap”: 0,
“MemorySwappiness”: null,
“OomKillDisable”: null,
“PidsLimit”: 0,
“Ulimits”: null,
“CpuCount”: 0,
“CpuPercent”: 0,
“IOMaximumIOps”: 0,
“IOMaximumBandwidth”: 0
},
“GraphDriver”: {
“Data”: {
“DeviceId”: “277”,
“DeviceName”: “docker-8:1-1046777-ead0d454ac09396bf366d58224db3fb1c6c470aceb5893ebc6773cbb11adc9fa”,
“DeviceSize”: “10737418240”
},
“Name”: “devicemapper”
},
“Mounts”: [
{
“Type”: “volume”,
“Name”: “c05907f4b2cef3f0394027816e98679c3d89d2b02bb25f932cd0b158e8d4c301”,
“Source”: “/var/lib/docker/volumes/c05907f4b2cef3f0394027816e98679c3d89d2b02bb25f932cd0b158e8d4c301/_data”,
“Destination”: “/config”,
“Driver”: “local”,
“Mode”: “”,
“RW”: true,
“Propagation”: “”
},
{
“Type”: “bind”,
“Source”: “/copy_freebox/DL/transmission”,
“Destination”: “/data”,
“Mode”: “”,
“RW”: true,
“Propagation”: “rprivate”
},
{
“Type”: “bind”,
“Source”: “/etc/localtime”,
“Destination”: “/etc/localtime”,
“Mode”: “ro”,
“RW”: false,
“Propagation”: “rprivate”
}
],
“Config”: {
“Hostname”: “a12aec0af481”,
“Domainname”: “”,
“User”: “”,
“AttachStdin”: false,
“AttachStdout”: false,
“AttachStderr”: false,
“ExposedPorts”: {
“9091/tcp”: {}
},
“Tty”: false,
“OpenStdin”: false,
“StdinOnce”: false,
“Env”: [
“LOCAL_NETWORK=192.168.0.0/24”,
“OPENVPN_PROVIDER=VPNBOOK”,
“OPENVPN_CONFIG=vpnbook-euro1-udp25000”,
“OPENVPN_USERNAME=vpnbook”,
“OPENVPN_PASSWORD=wzxm337”,
“PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”,
“TRANSMISSION_ALT_SPEED_DOWN=50”,
“TRANSMISSION_ALT_SPEED_ENABLED=false”,
“TRANSMISSION_ALT_SPEED_TIME_BEGIN=540”,
“TRANSMISSION_ALT_SPEED_TIME_DAY=127”,
“TRANSMISSION_ALT_SPEED_TIME_ENABLED=false”,
“TRANSMISSION_ALT_SPEED_TIME_END=1020”,
“TRANSMISSION_ALT_SPEED_UP=50”,
“TRANSMISSION_BIND_ADDRESS_IPV4=0.0.0.0”,
“TRANSMISSION_BIND_ADDRESS_IPV6=::”,
“TRANSMISSION_BLOCKLIST_ENABLED=false”,
“TRANSMISSION_BLOCKLIST_URL=http://www.example.com/blocklist”,
“TRANSMISSION_CACHE_SIZE_MB=4”,
“TRANSMISSION_DHT_ENABLED=true”,
“TRANSMISSION_DOWNLOAD_DIR=/data/completed”,
“TRANSMISSION_DOWNLOAD_LIMIT=100”,
“TRANSMISSION_DOWNLOAD_LIMIT_ENABLED=0”,
“TRANSMISSION_DOWNLOAD_QUEUE_ENABLED=true”,
“TRANSMISSION_DOWNLOAD_QUEUE_SIZE=5”,
“TRANSMISSION_ENCRYPTION=1”,
“TRANSMISSION_IDLE_SEEDING_LIMIT=30”,
“TRANSMISSION_IDLE_SEEDING_LIMIT_ENABLED=false”,
“TRANSMISSION_INCOMPLETE_DIR=/data/incomplete”,
“TRANSMISSION_INCOMPLETE_DIR_ENABLED=true”,
“TRANSMISSION_LPD_ENABLED=false”,
“TRANSMISSION_MAX_PEERS_GLOBAL=200”,
“TRANSMISSION_MESSAGE_LEVEL=2”,
“TRANSMISSION_PEER_CONGESTION_ALGORITHM=”,
“TRANSMISSION_PEER_ID_TTL_HOURS=6”,
“TRANSMISSION_PEER_LIMIT_GLOBAL=200”,
“TRANSMISSION_PEER_LIMIT_PER_TORRENT=50”,
“TRANSMISSION_PEER_PORT=51413”,
“TRANSMISSION_PEER_PORT_RANDOM_HIGH=65535”,
“TRANSMISSION_PEER_PORT_RANDOM_LOW=49152”,
“TRANSMISSION_PEER_PORT_RANDOM_ON_START=false”,
“TRANSMISSION_PEER_SOCKET_TOS=default”,
“TRANSMISSION_PEX_ENABLED=true”,
“TRANSMISSION_PORT_FORWARDING_ENABLED=false”,
“TRANSMISSION_PREALLOCATION=1”,
“TRANSMISSION_PREFETCH_ENABLED=1”,
“TRANSMISSION_QUEUE_STALLED_ENABLED=true”,
“TRANSMISSION_QUEUE_STALLED_MINUTES=30”,
“TRANSMISSION_RATIO_LIMIT=2”,
“TRANSMISSION_RATIO_LIMIT_ENABLED=false”,
“TRANSMISSION_RENAME_PARTIAL_FILES=true”,
“TRANSMISSION_RPC_AUTHENTICATION_REQUIRED=false”,
“TRANSMISSION_RPC_BIND_ADDRESS=0.0.0.0”,
“TRANSMISSION_RPC_ENABLED=true”,
“TRANSMISSION_RPC_PASSWORD=password”,
“TRANSMISSION_RPC_PORT=9091”,
“TRANSMISSION_RPC_URL=/transmission/”,
“TRANSMISSION_RPC_USERNAME=username”,
“TRANSMISSION_RPC_WHITELIST=127.0.0.1”,
“TRANSMISSION_RPC_WHITELIST_ENABLED=false”,
“TRANSMISSION_SCRAPE_PAUSED_TORRENTS_ENABLED=true”,
“TRANSMISSION_SCRIPT_TORRENT_DONE_ENABLED=false”,
“TRANSMISSION_SCRIPT_TORRENT_DONE_FILENAME=”,
“TRANSMISSION_SEED_QUEUE_ENABLED=false”,
“TRANSMISSION_SEED_QUEUE_SIZE=10”,
“TRANSMISSION_SPEED_LIMIT_DOWN=100”,
“TRANSMISSION_SPEED_LIMIT_DOWN_ENABLED=false”,
“TRANSMISSION_SPEED_LIMIT_UP=100”,
“TRANSMISSION_SPEED_LIMIT_UP_ENABLED=false”,
“TRANSMISSION_START_ADDED_TORRENTS=true”,
“TRANSMISSION_TRASH_ORIGINAL_TORRENT_FILES=false”,
“TRANSMISSION_UMASK=2”,
“TRANSMISSION_UPLOAD_LIMIT=100”,
“TRANSMISSION_UPLOAD_LIMIT_ENABLED=0”,
“TRANSMISSION_UPLOAD_SLOTS_PER_TORRENT=14”,
“TRANSMISSION_UTP_ENABLED=true”,
“TRANSMISSION_WATCH_DIR=/data/watch”,
“TRANSMISSION_WATCH_DIR_ENABLED=true”,
“TRANSMISSION_HOME=/data/transmission-home”,
“ENABLE_UFW=false”,
“TRANSMISSION_WEB_UI=”,
“PUID=”,
“PGID=”,
“TRANSMISSION_WEB_HOME=”
],
“Cmd”: [
“dumb-init”,
"/etc/openvpn/start.sh"
],
“ArgsEscaped”: true,
“Image”: “haugene/transmission-openvpn”,
“Volumes”: {
"/config": {},
"/data": {}
},
“WorkingDir”: “”,
“Entrypoint”: null,
“OnBuild”: null,
“Labels”: {}
},
“NetworkSettings”: {
“Bridge”: “”,
“SandboxID”: “5c82c8edb1d8e618f119f63804c08f00b55620f6402d36e6756450a2a4c9a341”,
“HairpinMode”: false,
“LinkLocalIPv6Address”: “”,
“LinkLocalIPv6PrefixLen”: 0,
“Ports”: {
“9091/tcp”: [
{
“HostIp”: “0.0.0.0”,
“HostPort”: “9091”
}
]
},
“SandboxKey”: “/var/run/docker/netns/5c82c8edb1d8”,
“SecondaryIPAddresses”: null,
“SecondaryIPv6Addresses”: null,
“EndpointID”: “6de06499f3490d96d98d7018e653f8620143c5689f1f87fb0cdc661b83bcc438”,
“Gateway”: “172.17.42.1”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“IPAddress”: “172.17.0.2”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“MacAddress”: “02:42:ac:11:00:02”,
“Networks”: {
“bridge”: {
“IPAMConfig”: null,
“Links”: null,
“Aliases”: null,
“NetworkID”: “e5cfa0df6c9871cd5fa2fa103ca690355c79b83317a94c06cf3bb7efa9fc5548”,
“EndpointID”: “6de06499f3490d96d98d7018e653f8620143c5689f1f87fb0cdc661b83bcc438”,
“Gateway”: “172.17.42.1”,
“IPAddress”: “172.17.0.2”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“MacAddress”: “02:42:ac:11:00:02”,
“DriverOpts”: null
}
}
}
}
]
root@debianServeur /root $

La conf a l’air bonne, tu rediriges bien le port 9091/tcp depuis l’hôte vers le conteneur.

Dans l’iptables de l’hôte tu vois des paquets arriver sur le port 9091/tcp de l’hôte ? Tu peux créer une règle du type :

iptables -A INPUT -p tcp --destination-port 9091 -j LOG

Ca forcera iptables à tracer les paquets entrants sur la machine dans /var/log/secure (ou /var/log/messages selon ta conf syslogd).

Si ça n’arrive pas jusqu’à l’hôte c’est une conf au niveau du routeur qui pose problème.

Nota : tu change le “-A” en “-D” pour supprimer la règle une fois les tests faits, sinon tu vas polluer tes logs.

Et depuis une machine à l’extérieur tu peux tester un “tcptraceroute hotedocker 9091” pour essayer de voir par où passe ton flux.

1 « J'aime »

Je veux bien regarder, mais à mon avis c’est le cas vu que je peux m’y connecter via url IPHost:9091
À ce moment là redirection se fait bien !

Vis à vis de ce que tu disais :

Si quand tu testes depuis le même LAN via l’IP publique et/ou le nom de l’hôte, tu vois arriver le paquet, mais que quand tu te mets de l’autre côté de la Freebox tu ne le vois pas arriver, tu sais que c’est un problème de configuration du routeur (càd la Freebox, ou un autre routeur entre la Freebox et ton hôte si tu as ton routeur perso).

A partir de là, le “tcptraceroute” depuis l’autre côté de la Freebox te montrera peut-être plus clairement où ça bloque (si la dernière IP que tu vois est la Freebox, tu sais que c’est elle le problème).

La flèche rouge c’est le tcptraceroute qui peut essayer de te dire où sur le chemin ton flux est KO.

Ah et un truc que j’ai oublié de dire, pense à regarder les autres tables IPTables, pas juste la table Filter. Docker met des truc dans les autres tables de mémoire (Mangle ou NAT je ne sais plus… Raw je ne crois pas).

Si tu as un doute également sur le bon fonctionnement de ton IPTables, après l’avoir un peu trop bidouillé, n’hésite pas à purger les tables et à les remettre à zéro (service iptables save = sauvegarde de la conf pour qu’elle soit reprise post-redémarrage d’IPTables, sinon les conf temporaires sont virées la fois d’après ; iptables-save pour dumper un fichier avec les règles).

Mais là au feeling, 80% de chance que ça soit un problème de conf côté Freebox.

C’est aussi ce que je pense…