Kann ich einen Container (und nur den) durch einen VPN schleifen?

  • Hallo!

    Ich habe eine App in einem Container, die mit dem Internet kommuniziert. Gibt es irgendeine Möglichkeit diese durch einen VPN zu schleifen, und zwar OHNE dass der gesamte Verkehr des NAS über VPN läuft? Oder müsste ich dazu nen komplett neuen Container mit integrierten VPN erstellen!?


    Vielen Dank schonmal! :)

  • Ja, das ist möglich und beide Varianten sind denkbar. Ich persönlich habe das ganze auf meinem Laptop mit einem Openconnect VPN (Uni Zugang) und einem Chrome Browser realisiert. Auch eine Variante mit sshuttle habe ich schon mal getestet. Für die Openconnect Variante habe ich folgendes Dockerfile verwendet:


    und so sieht das dazu passende Startskrip start.sh aus:

    Bash
    #!/bin/bash
    sudo dbus-daemon --system --fork 
    res=$(QT_X11_NO_MITSHM=1 yad --entry --text="VPN Password:" --hide-text)
    echo "$res" | sudo openconnect --authgroup="HTW-vpn-all" --user="<USERNAME>" <MEINE_TOLLE_UNI>.de &
    /usr/bin/google-chrome-stable


    Die grafischen Sachen und zu installierenden Pakete musst du bei dir natürlich anpassen, das soll nur ein Ansatz sein, der bei mir erfolg hatte. Nach dem bauen des oben genannten Images mittels docker build . habe ich den Container wie folgt gestartet:

    Code
    docker run --privileged -ti --rm \
           -e DISPLAY=$DISPLAY \
           --env QT_X11_NO_MITSHM=1 \
           -v /tmp/.X11-unix:/tmp/.X11-unix \
           <IMAGE_HASH>

    Damit fragt er zunächst in einem kleinen Fenster nach dem VPN Passwort (welches ich ungern im Klartext speichern wollte) und startet dann einen Chrome Browser, dessen Traffic durch das VPN geleitet wird, während mein restlicher Internetverkehr über das normale Netz geleitet wird.


    Die zweite Variante mit einem eigenen Container ist möglich, falls du dich mit Routing gut auskennst (was bei mir nicht der Fall ist...)