Wie erstelle ich die erforderlichen Routen, um Internetverkehr zu/von meinem Client zugewiesenen öffentlichen IPv4s auf meinem L2TP-Server zu erhalten?

Wie erstelle ich die erforderlichen Routen, um Internetverkehr zu/von meinem Client zugewiesenen öffentlichen IPv4s auf meinem L2TP-Server zu erhalten?

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.confhabe 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.

verwandte Informationen