Ich habe einen Server mit Ubuntu Server 20.04, der über zwei Ethernet-Schnittstellen verfügt und den L2TP-Server hostet (mithilfe von accel-ppp).
„eno1“ ist eine einzelne öffentliche IPv4-Adresse zugewiesen.
'eno2' hat Zugriff auf einen /26 öffentlichen IPv4-Block, den ich von einem anderen Standort aus über einen L2TP-Server nutzen möchte. Details weiter unten.
Jetzt versuche ich, es so einzurichten, dass mein Router an einem anderen Standort eine Verbindung zum L2TP-Server herstellen kann und sowohl eine öffentliche IPv4-Adresse als auch eine öffentliche /27-IPv4-Adresse an ihn weitergeleitet bekommt, indem er die zuvor erwähnte öffentliche /26-IPv4-Adresse aufspaltet. Zum Beispiel xx161.64/27.
Ich kann zwar vom L2TP-Server aus die IP des mit dem L2TP-Server verbundenen Routers sowie jede von mir über das LAN des Routers zugewiesene /27-IPv4 anpingen, kann jedoch nicht herausfinden, wie ich eine Route ins Internet oder vermutlich über die eigene Gateway-IP (xx161.122) des L2TP-Servers hinaus erhalte.
eno1
IP address: x.x.176.62 (public IPv4)
Subnet mask: 255.255.255.0
Gateway IP: x.x.176.254
eno2
IP address: x.x.161.125 (public IPv4)
Subnet mask: 255.255.255.252 (split from what is actually a /26)
Gateway IP: x.x.161.126
Mein Router hat IP-Adressen zugewiesen, die eine Verbindung zum L2TP-Server herstellen, aber anscheinend derzeit nicht auf das Internet zugreifen oder über xx161.122 (die Gateway-IP-Adresse des L2TP-Servers, glaube ich) hinausgehen können.
x.x.161.121/30
x.x.161.64/27
Auf diesem Ubuntu-Server habe ich accel-ppp installiert und als L2TP-Server konfiguriert. Darin /etc/accel-ppp.conf
habe ich Folgendes:
[modules]
log_file
pptp
l2tp
auth_mschap_v2
auth_mschap_v1
auth_pap
chap-secrets
ippool
pppd_compat
[core]
log-error=/var/log/accel-ppp/core.log
thread-count=4
[common]
single-session=replace
[ppp]
verbose=1
min-mtu=1280
mtu=1400
mru=1400
ipv4=require
ipv6=deny
ipv6-intf-id=0:0:0:1
ipv6-peer-intf-id=0:0:0:2
ipv6-accept-peer-intf-id=1
lcp-echo-interval=1
lcp-echo-failure=5
lcp-echo-timeout=120
unit-cache=1
[pptp]
verbose=1
#echo-interval=30
#ip-pool=pptp
#ipv6-pool=pptp
#ipv6-pool-delegate=pptp
ifname=pptp%d
[l2tp]
verbose=1
ifname=l2tp%d
[dns]
dns1=8.8.8.8
dns2=8.8.4.4
[client-ip-range]
disable
[ip-pool]
gw-ip-address=x.x.161.122
attr=Framed-Pool
x.x.161.121/30
[log]
log-file=/var/log/accel-ppp/accel-ppp.log
log-emerg=/var/log/accel-ppp/emerg.log
log-fail-file=/var/log/accel-ppp/auth-fail.log
copy=1
level=3
[pppd-compat]
verbose=1
[chap-secrets]
chap-secrets=/etc/ppp/chap-secrets
Aktuelle IP-Route:
default via x.x.161.126 dev eno2 proto static
default via x.x.176.254 dev eno1 proto dhcp src x.x.176.62 metric 100
x.x.176.0/24 dev eno1 proto kernel scope link src x.x.176.62
x.x.176.254 dev eno1 proto dhcp scope link src x.x.176.62 metric 100
x.x.161.64/27 via x.x.161.121 dev l2tp0
x.x.161.121 dev l2tp0 proto kernel scope link src x.x.161.122
x.x.161.124/30 dev eno2 proto kernel scope link src x.x.161.125
Aktuelle Route:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default x.x.161.126 0.0.0.0 UG 0 0 0 eno2
default x.x.176.254 0.0.0.0 UG 100 0 0 eno1
x.x.176.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
x.x.176.254 0.0.0.0 255.255.255.255 UH 100 0 0 eno1
x.x.161.64 x.x.161.121 255.255.255.224 UG 0 0 0 l2tp0
x.x.161.121 0.0.0.0 255.255.255.255 UH 0 0 0 l2tp0
x.x.161.124 0.0.0.0 255.255.255.252 U 0 0 0 eno2
Aktuelle ifconfig:
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.x.176.62 netmask 255.255.255.0 broadcast x.x.176.255
inet6 x:x:x:x:: prefixlen 56 scopeid 0x0<global>
inet6 fe80::d250:99ff:feda:91b6 prefixlen 64 scopeid 0x20<link>
ether d0:50:99:da:91:b6 txqueuelen 1000 (Ethernet)
eno2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.x.161.125 netmask 255.255.255.252 broadcast x.x.161.127
inet6 fe80::d250:99ff:feda:91b5 prefixlen 64 scopeid 0x20<link>
ether d0:50:99:da:91:b5 txqueuelen 1000 (Ethernet)
l2tp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1400
inet 198.244.161.122 netmask 255.255.255.255 destination x.x.161.121
ppp txqueuelen 3 (Point-to-Point Protocol)
Wie kann ich es schaffen, dass beispielsweise die Router-IP-Adresse xx161.121 das Internet erreichen kann und vom Internet aus erreichbar ist? Vermutlich müsste es irgendwie eine Route zu xx161.126 geben, der Gateway-IP-Adresse des gesamten ursprünglichen /26-IPv4-Blocks.
Wenn es einen einfacheren oder anderen Ansatz gibt, den ich wählen sollte, sagen Sie mir bitte Bescheid. Ich möchte kein NAT, da ich mir vorstellen kann, dass das meinem Vorhaben zuwiderläuft.
Ich hoffe, ich war einigermaßen klar und habe viele Details angegeben. Wenn Sie weitere Details benötigen, fragen Sie bitte. Ich versuche seit fast zwei Tagen, das zu verstehen. Das Herumspielen mit wechselnden Routen ist für mich etwas Neues. Vielen Dank im Voraus für jede Hilfe!
EDIT: Es sieht nicht sehr vielversprechend aus, hier eine Antwort zu bekommen, also muss ich wohl einfach mal schauen, ob ich einen Experten für diese Aufgabe finden kann, vorausgesetzt, die Angebote sind nicht unverschämt teuer. Wenn jemand diese Frage liest und die Antwort kennt, wäre ich wirklich dankbar, Ihre Lösung zu hören! Danke.
Antwort1
Nach weiteren Experimenten glaube ich, dass ich die Bedeutung und Nützlichkeit von richtlinienbasiertem Routing zu begreifen begonnen habe, wenn auch etwas spät. Die gute Nachricht ist, dass ich jetzt das, was ich will, voll funktionsfähig habe, allerdings auf eine Art Umweg.
Ich verwende CentOS mit SoftEther VPN Server (L2TP). Damit habe ich derzeit 32 Verbindungen/Logins eingerichtet, auf dem Firebrick hat jede von ihnen ihre eigene Routing-Tabelle. Jede von ihnen hat auch eine eindeutige öffentliche IPv4-Adresse. SoftEther war die einzige Möglichkeit, mit der ich erfolgreich eine Internetverbindung ohne NAT herstellen konnte, ich glaube, weil es eine virtuelle Netzwerkschnittstelle (für das Betriebssystem verborgen) erstellt, die die L2TP-Verbindungen und die Ethernet-Schnittstelle (z. B. eth1/eno2) auf Ethernet-Ebene überbrückt.
Damit habe ich die Firewall des Firebrick (mein Router) durch Dutzende von Regeln angewiesen, zwischen den verschiedenen Routing-Tabellen für jede L2TP-Verbindung und der Routing-Tabelle des Ports für mein LAN zu wechseln und umgekehrt. Die LAN-Schnittstelle verwendet immer noch meine öffentliche IPv4/26, ist aber realistischerweise nicht direkt mit den IP-Adressen verbunden, die meinen L2TP-Serververbindungen zugewiesen sind. Die erste IP dieses öffentlichen IPv4/26-Blocks ist nicht wirklich öffentlich zugänglich, sie wird nur als Gateway-IP für meinen LAN-Port verwendet und diese IP ist nicht über das Internet erreichbar. Das funktioniert, obwohl es, wie gesagt, ein Umweg ist. Ich habe auch noch freie IP-Adressen, kann also später weitere Logins hinzufügen.
Es ist keineswegs die beste Lösung, es ist ein bisschen hässlich, aber es scheint zu funktionieren.