Tunneln einer öffentlichen IP an einen Remotecomputer

8

Ich habe einen Linux-Server A mit einem Block von 5 öffentlichen IP-Adressen 8.8.8.122/29. Derzeit 8.8.8.122ist zugeordnet eth0und 8.8.8.123zugeordnet eth0:1.

Ich habe eine andere Linux-Maschine B an einem entfernten Ort hinter NAT. Ich möchte einen Tunnel zwischen den beiden einrichten, damit B die IP-Adresse 8.8.8.123als primäre IP-Adresse verwenden kann.

OpenVPN ist wahrscheinlich die Antwort, aber ich kann nicht genau herausfinden, wie die Dinge eingerichtet werden sollen ( topology subnetoder topology p2pkönnte angemessen sein. Oder sollte ich Ethernet-Bridging verwenden?). Sicherheit und Verschlüsselung sind zu diesem Zeitpunkt kein großes Problem, daher wäre GRE auch in Ordnung - Maschine B wird von einer bekannten IP-Adresse stammen und kann basierend darauf authentifiziert werden.

Wie kann ich das machen? Kann jemand eine OpenVPN-Konfiguration oder einen anderen Ansatz vorschlagen, der in dieser Situation funktionieren könnte? Idealerweise kann es auch mehrere Clients verarbeiten (z. B. alle vier Ersatz-IPs mit anderen Computern teilen), ohne dass diese Clients IPs verwenden dürfen, auf die sie keinen Anspruch haben.

Jim Paris
quelle
Welche Firewalls befinden sich an beiden Standorten?
Robert
1
Ich hoffe, Sie haben sich nur diese Adressen ausgedacht und arbeiten nicht bei Google. Wenn Sie dies nicht tun, können Sie den Adressraum nicht verwenden.
Michael Hampton
Robert: A ist ein Linux-Server mit einigen einfachen iptablesRegeln. B steht hinter einem NAT, auf dem ein anderer Linux-Server ausgeführt wird shorewall.
Jim Paris
Michael: Ja, ich habe die ersten drei Oktette auf 8 geändert, um sie zu verschleiern, aber immer noch darauf hingewiesen, dass sie öffentlich sind. Entschuldigung, Google.
Jim Paris
1
Zum späteren Nachschlagen haben wir dafür einen RFC .
Michael Hampton

Antworten:

7

Am Ende habe ich mich für die Ethernet-Überbrückung entschieden. Viele extrem ausführliche Beispiele, die man online durchgehen kann, aber es stellt sich als ziemlich einfach heraus:

Zuerst auf A , /etc/network/interfaceswurde geändert von:

auto eth0
iface eth0 inet static
    address 8.8.8.122
    netmask 255.255.255.248
    gateway 8.8.8.121

zu:

auto br0
iface br0 inet static
    address 8.8.8.122
    netmask 255.255.255.248
    gateway 8.8.8.121
    pre-up openvpn --mktun --dev tap0
    bridge_ports eth0 tap0
    bridge_fd 3

um eth0(die echte WAN- tap0Schnittstelle) beim Booten mit (einer neuen Tunnelschnittstelle) zu verbinden.

Führen Sie dann auf A den openvpn-Server aus mit:

openvpn --dev tap0

Stellen Sie auf B eine Verbindung her mit:

openvpn --remote 8.8.8.122 --dev tap0 --route-gateway 8.8.8.121 \
        --redirect-gateway def1 --ifconfig 8.8.8.123 255.255.255.248

Das ist die supereinfache Konfiguration, nach der ich gesucht habe, und sie funktioniert - B ist jetzt unter 8.8.8.123 öffentlich zugänglich, und ausgehende Verbindungen stammen von derselben Adresse.

In Sicherheit ( --secret, --tls-serverusw.) je nach Bedarf, natürlich.

Jim Paris
quelle
Nett! Ich werde das versuchen. Haben Sie einen Weg gefunden, dies zu konfigurieren: "ohne dass diese Clients IPs verwenden, auf die sie keinen Anspruch haben"?
Bastian
Ich habe mich nicht um mein Setup gekümmert (das nur vorübergehend war), aber ich kann mir vorstellen, dass Sie es mit ebtables machen können.
Jim Paris
Sehr hilfreich. Eine Frage: Was muss ich in der A-Konfiguration ändern, wenn ich zwei IP von A weiterleiten muss: A => B und A => C (wobei C ein anderer Host ist)? Muss ich eine andere Bridge konfigurieren?
Frhack
2
Ja. Fügen Sie eine weitere pre-up openvpnZeile erstellen tap1zu, fügen Sie tap1zu bridge_ports, und führen Sie mit einer anderen Instanz von OpenVPN openvpn --dev tap1.
Jim Paris
Wie wäre es, wenn Sie das Gateway von A über B lokalisieren möchten, damit jedes System im LAN B verwenden und das Remote-Standard-Gateway zuweisen und öffentliche IP-Adressen verwenden kann?
Areeb Soo Yasir
1

Du wirst es schwer haben, denke ich. Die meisten Firewalls haben Schwierigkeiten, den OpenVPN-Verkehr weiterzuleiten, wenn sich beide Seiten des VPN im selben Subnetz befinden.

Wenn Sie versuchen, für den öffentlichen Zugriff zu routen, verschiebe ich beide Server von Ihren öffentlichen Adressen in verschiedene Subnetze und verwende dann virtuelle IPs (1 zu 1 Nat), um sie zu verbinden. Um die beiden Standorte zu verbinden, würde OpenVPN oder ein IP-Sec-Tunnel funktionieren.

Virtuelle IPs: http://doc.pfsense.org/index.php/What_are_Virtual_IP_Addresses%3F

Site zu Site: http://doc.pfsense.org/index.php/VPN_Capability_IPsec

Bearbeiten basierend auf Kommentaren:

Ich persönlich würde pfSense auf der A-Box installieren und ihr den Port geben, den Sie für das WAN wollten. Richten Sie dann einen OpenVPN-Server in einem lokalen Subnetz ein (das in der pfSense-Weboberfläche einsatzbereit ist) und richten Sie den anderen Computer mit einer virtuellen IP-Adresse ein, die auf die lokale OpenVPN-IP verweist. Dies würde Ihnen später Raum für Erweiterungen geben (fügen Sie weitere Computer mit virtuellen IPs hinzu, leiten Sie bestimmte Ports logisch an verschiedene Server weiter und verfügen Sie über ein vollständiges LAN / WAN / DMZ-Setup mit OpenVPN für den virtuellen Zugriff. Ganz zu schweigen davon, dass Sie einen haben Voll ausgewachsener Router, damit er wahrscheinlich sicherer ist.

Robert
quelle
Ich verstehe nicht, wie Zwischenfirewalls beteiligt sind; Sie werden sicherlich nicht in die OpenVPN-Pakete zwischen A und B schauen . Für die OpenVPN-Konfiguration selbst hatte ich erwartet, dass so etwas push "route 50.7.19.122 255.255.255.255 net_gateway"sicherstellen würde, dass die VPN-Daten weiterhin über das normale Netzwerk übertragen werden.
Jim Paris
Um es klar auszudrücken, möchte ich einen Tunnel direkt zwischen A und B erstellen , nicht an separaten Firewalls an jedem Ende.
Jim Paris
1
Wenn Computer A jedoch zu Computer B routen möchte, weiß er nicht, ob er das WAN (mit Ihren öffentlichen IPs), das LAN (mit seiner statischen IP) oder das OpenVPN (auch mit Ihren öffentlichen IPs) verwenden soll, da dies alles ist gleiches Subnetz. B bis A sollten jedoch funktionieren.
Robert
1
Auch das gibt es, ich habe es funktionieren lassen, aber nicht mit öffentlichen IPs. Ich denke, virtuelle IPs werden in beiden Fällen viel besser sein. openvpn.net/index.php/open-source/documentation/miscellaneous/…
Robert
"Um klar zu sein, möchte ich einen Tunnel direkt zwischen A und B erstellen, nicht an separaten Firewalls an jedem Ende." Sie müssen irgendwo einen Port für einen OpenVPN-Server öffnen
Robert