传输守护进程内的Docker容器与OpenVPN的/ privateinternetaccess.com端口转发

我一直在尝试将我的种子箱移动到D​​ocker容器中,我想我遇到了鸡/蛋问题:

目前的种子箱设置已经通过privateinternetaccess.com运行(所有的互联网都通过VPN)OpenVPN。 我有一个脚本( https://github.com/firecat53/pia_transmission_monitor )与PIA检查分配的转发端口,然后使用端口和绑定地址更新传输守护进程。

问题是分配的转发端口是每小时检查一次,并且可以随时更改…我需要在运行Docker容器之前知道端口,以便知道哪些端口要通过容器传入/传出。 我打算在容器内部运行OpenVPN,但事先并不知道将哪个端口分配给容器,我不确定这是否会起作用。

一个非常黑客的解决scheme可能是在一个容器内运行OpenVPN和另一个Docker守护进程,然后在OpenVPN容器内部运行传输容器。 这似乎很复杂,但我还没有尝试过。

我在这里错过了一些很明显的东西吗 任何其他的想法?

谢谢!

斯科特

我最终设法通过OpenVPN连接到Privateinternetaccess.com,让Docker容器在Docker容器中运行。

这里是Dockerfile和使这个工作所需的各种configuration文件和脚本。 我愿意接受任何简化和/或替代方法来实现这一点! 一些说明:

  1. OpenVPN需要使用–privileged标志运行容器才能创buildtun0连接。

  2. 我只能通过使用Pipework和主机上的一个网桥来使其工作正常,从而为networking上的容器赋予它自己的IP地址。

是否有助于设置Docker分配的端口-p <publicport>:<containerport>

例如,假设传输在容器内的端口10000上进行侦听,你可以告诉Docker“嘿,在端口1234上暴露,你会吗? 通过做docker run -p 1234:10000 …

我会寻找一个通用的套接字代理,可以将dynamic分配的端口上的所有stream量复制到静态使用的端口上。 例如

 $ docker run -p 1000 your_container /bin/bash # PORT=$(pia_setup_script) # proxy_command 1000 $PORT 

当然,你可以使这更优雅,但这是一般的概念

我有兴趣设立类似的东西。

如果openvpn在你的容器中运行,为什么你需要知道事先转发的端口? 它不在你的主机上,在你的VPN主机上。 在您的主机上,您只需要允许VPN连接的出站stream量,转发的端口将位于隧道内。

一些值得检查的一些相同的线路,虽然错过了VPN部分,这是很好的顺便说一句。 当循环出现时,我认为有人会添加它。

https://github.com/Ohge/Docker-TransHeadCouchRage