一千萬個為什麽

搜索

VPN容器提供對主機LAN的訪問?



我對這個Docker的東西有點新鮮,我有興趣為一些容器(網站/數據,mysql,nginx,rocket.chat等)獲得一個biffed up VPS,但我不想在野外訪問它們(即使通過SSH)和一些VPS主機的控制臺訪問是非常麻煩的。所以,這是我的問題:

我有大約3個獨立的VPS共享一個公共網絡:10.0.0.1到10。我想知道,如果在主機(10.0.0.5)中我可以設置一個docker服務器,那麽,我可以在裏面設置一個OpenVPN容器(或任何其他類型的VPN),所以我可以從外部連接到其他VPS(10.0.0.3,10.0.0.8,等等)。

請記住,我不是在尋找與隱私相關的VPN,我不想使用VPS的IP來路由流量,我只想“進入”我與VPS共享的內部網絡( Vultr,如果你想知道,他們只為我賬戶中的虛擬機提供私有IPv4服務,這對他們來說是安全的)通過VPN來增加安全性和商品,所以我可以自然地訪問一些主機(也可能是容器) ?)使用SSH/RDP /等。使用單個連接而不是每個服務器在PuTTY中有10個配置文件。

Any pointers would be greatly appreciated. Please also take note I'm a newbie regarding docker, I'm a developer & IT guy so I know my way around, but I don't have much idea about networking so I'm not sure if it's possible - and if it is, then can you please tell me how?

謝謝!

轉載註明原文: VPN容器提供對主機LAN的訪問?

一共有 2 個回答:

我正在訪問我的家庭網絡,其VPN在我的家庭服務器中的docker容器中運行。

這聽起來與你想做的相似。

以下是我配置它的方法(使用此泊塢窗圖像) - 請註意碼頭圖像應該夠了)

  1. Use a “convenience” environment variable to store the path to your persistent storage location that will be bind-mounted to the container.

    OVPN_DATA="/n7wings/openvpn/"
    
  2. Run an ephemeral instance (–rm) of the image to initialize the data directory of the container (ovpn-host should be the hostname of your openvpn server)

    docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://ovpn-host
    
  3. Run an interactive ephemeral instance of the image to generate the opevnpn CA certificate and server key (you will have to type your passphrase for the private key)

    docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
    
  4. Run the VPN service: start and detach the container (-d) and map a host port to the UDP container port where the openvpn server process is listening (1194). In this example the host port will be 1195

    docker run -v $OVPN_DATA:/etc/openvpn -d -p 1195:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
    
  5. Generate client configuration (i.e., add a user to the VPN). If you omit the nopass option, the client key will be encrypted with a passphrase.

    docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full vince nopass
    

    The client key will be in ${OVPN_DATA}/pki/private and the certificate in ${OVPN_DATA}/pki/issued

  6. Retrieve the client configuration to a local file:

    docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient vince > vince.ovpn
    

如果需要添加更多用戶,只需重復最後兩步即可在服務器上創建用戶配置並檢索ovpn文件。

Full reference: https://thealarmclocksixam.com/2017/03/07/setup-your-vpn-in-docker-with-openvpn-in-5-minutes/

我只是想“進入”我使用SSH/RDP /等與我的VPS共享的內部網絡。使用單個連接而不是每個服務器在PuTTY中有10個配置文件。

值得一提的是,只需將ssh客戶端用作socks服務器並配置客戶端(RDP/Browse/Ssh客戶端)以使用localhost:作為socks代理然後訪問內部網絡即可實現。 SSH隧道是一條與VPN隧道一樣安全的隧道;與VPN的主要區別在於不涉及路由。

通過VPN增加安全性和商品

忘記這個想法VPN是為了安全,你不會通過VPN為你的網絡添加安全性,這不比SSH隧道更安全,並且在沒有正確配置時通常更少。商品點是絕對有效的,這是一個很好的理由:)


很明顯你可以,我想知道為什麽你想讓VPN服務器在docker中運行,因為這會增加你應該避免的路由復雜性,如果你不熟悉之前涉及的整體路由。

無論如何,請求的通用方案是:

client stations --> client station routing table --> client VPN interface --> VPN host server --> target network

所涉及的問題是理解VPN是由tunel AND 路由配置構成的,這需要一些配置以避免在建立隧道後斷開與VPN服務器的連接(通常需要註意的是vpn客戶端設置新的默認路由,從而破壞您的工作站通過本地網關與VPN服務器通信的能力)。

VPN客戶端作業是建立隧道,然後配置客戶端站路由表以通過隧道接口路由目標網絡的數據包。

Vincenzo's answer to your question give the methodology to start an openVPN server container so I'll let you start from there but I highly encourage you to read more about the subject to avoid a false sense of security.