Tengo un servidor que ejecuta Ubuntu Server 20.04 que tiene dos interfaces Ethernet y aloja el servidor L2TP (usando accel-ppp).
'eno1' tiene asignada una única dirección IPv4 pública.
'eno2' tiene acceso a un bloque IPv4 público /26 que me gustaría utilizar desde otra ubicación a través de un servidor L2TP. Detalles más abajo.
Ahora lo que estoy tratando de hacer es hacer que mi enrutador, en otra ubicación, pueda conectarse al servidor L2TP y tener un IPv4 público así como un IPv4 público /27 enrutado a él desde la división del IPv4 público /26 mencionado. más temprano. Por ejemplo, xx161.64/27.
Si bien puedo hacer ping a la IP del enrutador conectado al servidor L2TP, desde el servidor L2TP, así como a cualquier /27 IPv4 que asigné a través de la LAN del enrutador, no puedo entender cómo obtener una ruta a Internet o más allá. presumiblemente la propia IP de puerta de enlace del servidor L2TP (xx161.122).
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
Mi enrutador asignó direcciones IP, que se conectan al servidor L2TP, pero actualmente no puedo acceder a Internet ni ir más allá de xx161.122 (la dirección IP de la puerta de enlace del servidor L2TP, creo).
x.x.161.121/30
x.x.161.64/27
En este servidor Ubuntu tengo accel-ppp instalado y configurado como servidor L2TP. En /etc/accel-ppp.conf
tengo lo siguiente:
[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
Ruta IP actual:
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
Ruta actual:
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
Ifconfig actual:
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)
¿Cómo haría para que, por ejemplo, la dirección IP del enrutador xx161.121 pueda acceder a Internet y sea accesible desde Internet? Presumiblemente, necesitaría tener de alguna manera una ruta a xx161.126, la dirección IP de la puerta de enlace de todo el bloque /26 IPv4 original.
Si hay un enfoque más simple o diferente que debería adoptar, dígalo. No quiero hacer NAT porque imagino que eso frustra lo que estoy tratando de hacer.
Espero haber sido razonablemente claro y haber proporcionado muchos detalles; si necesita más detalles, por favor pregunte. He estado tratando de entender esto durante casi dos días. Jugar con el cambio de rutas es un poco nuevo para mí. ¡Gracias de antemano por cualquier ayuda!
EDITAR: No parece esperanzador obtener una respuesta aquí, por lo que quizás tenga que buscar un experto para contratar para esta tarea, suponiendo que las cotizaciones no sean ridículamente caras. Si alguien lee esta pregunta y sabe la respuesta, ¡estaría muy agradecido de escuchar su solución! Gracias.
Respuesta1
Después de más experimentación, creo que comencé a comprender la importancia y utilidad del enrutamiento basado en políticas, aunque un poco tarde. La buena noticia es que ahora tengo lo que quiero funcionando completamente, pero de una manera indirecta.
Estoy usando CentOS con SoftEther VPN Server (L2TP). Con esto, actualmente tengo 32 conexiones/inicios de sesión configurados, en Firebrick cada uno tiene su propia tabla de enrutamiento. Cada uno de ellos también tiene una dirección IPv4 pública única. SoftEther ha sido la única forma en la que he logrado obtener con éxito una conexión a Internet sin NAT, creo que porque crea una interfaz de red virtual (oculta al sistema operativo) que une las conexiones L2TP y la interfaz Ethernet (por ejemplo, eth1/eno2). ) a nivel de ethernet.
Con esto, le he indicado al firewall del Firebrick (mi enrutador) a través de docenas de reglas que salte entre las distintas tablas de enrutamiento para cada conexión L2TP y la tabla de enrutamiento que tiene el puerto de mi LAN, y viceversa. La interfaz LAN todavía usa mi IPv4 /26 público pero, en realidad, no está conectada directamente a las direcciones IP asignadas a las conexiones de mi servidor L2TP. La primera IP de ese bloque IPv4/26 público no es realmente pública, solo se usa como IP de puerta de enlace para mi puerto LAN y no se puede acceder a esa IP desde Internet. Esto funciona, aunque como digo es una forma indirecta de hacerlo. También tengo direcciones IP adicionales, así que puedo agregar más inicios de sesión más adelante.
No es exactamente la mejor solución de ninguna manera, es un poco fea, pero parece funcionar.