Tunneln einer Root-Server IP durch Wireguard

  • Hallöchen zusammen!


    Ist es möglich jeglichen ausgehenden Traffic eines Root-Servers - genauer einer bestimmten IP- über einen Wireguard Tunnel zu versenden / empfangen?


    Mein Root-Server hat aktuell zwei IP-Adressen:

    - 188.23.30.19

    - 91.203.46.190 (zusätzliche IPv4)


    Ich würde gerne den ausgehenden Verkehr der IP 91.203.46.190 über einen Wireguard Tunnel versenden.


    Aktuell sieht die Konfiguration von Wireguard (Mullvad VPN) folgendermaßen aus:

    Code
    [Interface]
    PrivateKey = Key
    Address = 10.64.23.234/32,fc00:bbbb:bbbb:bb01::1:17e9/128
    DNS = 193.138.218.74
    
    [Peer]
    PublicKey = IF4ROzAOkRKdz+Hy+TWS1LTOZPGaLsm9PW5EN5AEOkc=
    Endpoint = 185.116.22.110:51820
    AllowedIPs = 0.0.0.0/0, ::/0



    Meine /etc/network/interfaces sieht so aus:

    Code
    auto eth0
    iface eth0 inet static
    address 188.23.30.19
    netmask 255.255.252.0
    gateway 188.23.32.1
    
    auto eth0:1
    iface eth0:1 inet static
    address 91.203.46.190
    netmask 255.255.255.255


    Wenn ich nun das VPN starte mit:

    Code
    wg-quick up mullvad-br1

    Dann schickt er natürlich jeglichen Verkehr durch das VPN, wenn ich das korrekt verstehe. Dann ist der Root-Server auch nicht mehr erreichbar -> Neustart.


    Beim Starten macht Wireguard folgendes:

    Jemand eine Idee wie man Wireguard beibringen kann nur den ausgehenden Verkehr von eth0:1 bzw. 91.204.45.179 über den Tunnel zu senden?

    Webhoster des Jahres 2015, 2016, 2017, 2018 und 2019

    Ich bin dabei! --> RS 2000 G8 <--

  • Hallo,


    zunächst solltest du statt wg-quick die Kommandos manuell ausführen.

    ip link add wg0 type wireguard

    wg setconf wg0 /path/to/inifile.ini

    ip addr add 10.64.23.234/32 dev wg0

    ip link set wg0 up


    Dann brauchst du ein Policy Based Routing. D.h. jeder Verkehr von 91.203.46.190 wird auf eine eigene Routingtabelle gepackt.

    ip rule add from 91.203.46.190/32 table 1234

    ip route add 0.0.0.0/0 dev wg0 table 1234 


    Ggf. beim Routing die Metric noch anpassen.

  • Danke für deine Antwort!


    Was meinst du mit?

    wg setconf wg0 /path/to/inifile.ini


    Meinst du damit den Verweis auf die Config-File?:


    Code
    [Interface]
    PrivateKey = Key
    Address = 10.64.23.234/32,fc00:bbbb:bbbb:bb01::1:17e9/128
    DNS = 193.138.218.74
    
    [Peer]
    PublicKey = IF4ROzAOkRKdz+Hy+TWS1LTOZPGaLsm9PW5EN5AEOkc=
    Endpoint = 185.116.22.110:51820
    AllowedIPs = 0.0.0.0/0, ::/0

    Führe ich den Befehl aus:

    Quote

    wg setconf wg0 /etc/wireguard/mullvad-de1.conf


    Kommt:

    Code
    Line unrecognized: `Address=10.64.23.234/32,c00:bbbb:bbbb:bb01::1:17e9/128
    Configuration parsing error

    Kommentiere ich dann die fehlerhaften Zeilen aus, nimmt er die Config. Weiterhin tut sich allerdings nichts, auch nicht, nachdem ich die Befehle

    ip rule add from 91.203.46.190/32 table 1234

    ip route add 0.0.0.0/0 dev wg0 table 1234 

    hinzugefügt habe.

    Über das eth0:1 geht kein Traffic raus. Und wg0 zeigt an:

    Code
    wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
    inet 10.64.23.234  netmask 255.255.255.255  destination 10.64.23.234
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


    Da stimmt noch etwas nicht.

    Webhoster des Jahres 2015, 2016, 2017, 2018 und 2019

    Ich bin dabei! --> RS 2000 G8 <--

  • Wie sieht denn die Peer Config am anderen Ende aus?

    Sendet der Kernel die Packete wirklich unter der Adresse raus?

    Die Config am anderen Ende / vom Server kenne ich nicht. Es handelt sich um den VPN-Anbieter Mullvad.


    Die gepostete Client-Config ist original und funktioniert auch.

    Webhoster des Jahres 2015, 2016, 2017, 2018 und 2019

    Ich bin dabei! --> RS 2000 G8 <--

  • So baut sich nun der Tunnel auf:

    Code
    ip link add wg0 type wireguard
    wg setconf wg0 /etc/wireguard/mullvad-de1.conf
    ip address add 10.64.23.234/32 dev wg0
    ip link set mtu 1420 up dev wg0
    
    ip rule add from 91.203.46.190/32 table 51820
    ip route add 0.0.0.0/0 dev wg0 table 51820
    ip rule add table main suppress_prefixlength 0

    Output wg:

    Code
    public key: 771nxYCweEGdEvjhZiAgim8psz+BPJH2Uy6KXPohUAc=
    private key: (hidden)
    listening port: 34860
    fwmark: 0xca6c
    
    peer: IF4ROzAOkRKdz+Hy+TWS1LTOZPGaLsm9PW5EN5AEOkc=
    endpoint: 185.216.33.114:51820
    allowed ips: 0.0.0.0/0, ::/0
    latest handshake: 10 seconds ago
    transfer: 952 B received, 61.56 KiB sent

    Config von /etc/wireguard/mullvad-de1.conf:

    Code
    [Interface]
    PrivateKey = (hidden)
    
    [Peer]
    PublicKey = IF4ROzAOkRKdz+Hy+TWS1LTOZPGaLsm9PW5EN5AEOkc=
    Endpoint = 185.216.33.114:51820
    AllowedIPs = 0.0.0.0/0, ::/0

    Wenn ich dann versuche über eht0:1 etwas zu versenden passiert allerdings nichts - keine Antwort.

    Code
    curl --interface eth0:1 ipinfo.io

    Webhoster des Jahres 2015, 2016, 2017, 2018 und 2019

    Ich bin dabei! --> RS 2000 G8 <--

  • keine Antwort.

    Das wundert mich ehrlich gesagt nicht.

    Warum sollte ein VPN Anbieter Pakete aus dem 91. Subnet ohne NAT rausschicken?


    Du musst dein Vorhaben nochmal genau erklären und sagen, warum das ganze funktionieren sollte. Die eingehenden Pakete sollen über Netcup reinkommen und die ausgehenden über den VPN mit der Absenderadresse. Da wird dir schon die Tunnelgegenseite einen Strich durch die Rechnung machen. Allowed-IPs blockiert dort alles, was nicht drinne steht. Und 91. steht da bestimmt nicht als Allowed IPs auf der Gegenseite in Allowed-IPs.

  • Ein Webserver lauscht auf der Adresse 188.23.30.19, Darunter liegt eine Anwendung, die nach außen an unterschiedliche (im System vorhandene) IP-Adressen gebunden werden kann. Diese Anwendung schickt dann Anfragen über die IP 91.203.46.190 an öffentlich erreichbare Adressen im Internet.


    Nun möchte ich eben, dass alle Pakete die von der IP 91.203.46.190 abgehen in den Tunnel gesteckt werden und darüber laufen.

    Webhoster des Jahres 2015, 2016, 2017, 2018 und 2019

    Ich bin dabei! --> RS 2000 G8 <--

  • Puhh, wenn du keine Kontrolle über die Gegenseite hast, wird das schwierig.

    Zwei Möglichkeiten:


    • du nattest den ausgehenden Traffic auf die Tunneladresse
    • du bindest dein Programm auf das Tunnelinterface