내 클라이언트가 내 L2TP 서버에 할당된 공용 IPv4와 인터넷 트래픽을 주고받는 데 필요한 경로를 어떻게 수행합니까?

내 클라이언트가 내 L2TP 서버에 할당된 공용 IPv4와 인터넷 트래픽을 주고받는 데 필요한 경로를 어떻게 수행합니까?

두 개의 이더넷 인터페이스가 있고 L2TP 서버(accel-ppp 사용)를 호스팅하는 Ubuntu Server 20.04를 실행하는 서버가 있습니다.

'eno1'에는 단일 공용 IPv4 주소가 할당되어 있습니다.

'eno2'는 L2TP 서버를 통해 다른 위치에서 사용하고 싶은 /26 공용 IPv4 블록에 액세스할 수 있습니다. 자세한 내용은 아래를 참조하세요.

이제 내가 하려는 일은 다른 위치에 있는 내 라우터가 L2TP 서버에 연결하고 언급된 /26 공용 IPv4를 분할하여 라우팅되는 공용 IPv4와 /27 공용 IPv4를 가질 수 있도록 하는 것입니다. 더 일찍. 예를 들어 xx161.64/27입니다.

L2TP 서버와 라우터의 LAN을 통해 할당한 /27 IPv4에서 L2TP 서버에 연결된 라우터의 IP를 핑할 수 있지만 인터넷이나 그 너머로 경로를 얻는 방법을 알 수 없습니다. 아마도 L2TP 서버의 자체 게이트웨이 IP(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

내 라우터는 IP 주소를 할당했습니다. 이는 L2TP 서버에 연결되어 있지만 현재 인터넷에 액세스할 수 없거나 xx161.122(L2TP 서버의 게이트웨이 IP 주소 - 제 생각에는)를 넘어갈 수 없는 것 같습니다.

x.x.161.121/30
x.x.161.64/27

이 Ubuntu 서버에는 accel-ppp가 설치되어 L2TP 서버로 구성되어 있습니다. 나는 /etc/accel-ppp.conf다음을 가지고 있습니다 :

[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

현재 IP 경로:

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

현재 경로:

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:

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)

예를 들어 라우터 IP 주소 xx161.121이 인터넷에 연결되고 인터넷에서 연결될 수 있도록 하려면 어떻게 해야 합니까? 아마도 전체 원래 /26 IPv4 블록의 게이트웨이 IP 주소인 xx161.126에 대한 경로가 필요할 것입니다.

내가 취해야 할 더 간단하거나 다른 접근 방식이 있다면 말해주세요. 나는 NAT를 하고 싶지 않습니다. 왜냐하면 내가 하려는 일이 실패할 것이라고 생각하기 때문입니다.

합리적으로 명확하고 많은 세부 정보를 제공했기를 바랍니다. 필요한 세부 정보가 더 있으면 문의하시기 바랍니다. 나는 거의 이틀 동안 이 문제를 해결하려고 노력해 왔습니다. 경로 변경을 가지고 노는 것은 나에게 조금 새로운 것입니다. 어떤 도움이라도 미리 감사드립니다!

편집: 여기서 답변을 얻을 수 있을 것 같지는 않으므로 견적이 터무니없이 비싸지 않다는 가정 하에 이 작업을 위해 고용할 전문가를 찾는 방법을 살펴봐야 할 수도 있습니다. 누군가가 이 질문을 읽고 답을 알고 있다면 귀하의 솔루션을 듣고 정말 감사하겠습니다! 감사해요.

답변1

추가 실험을 통해 조금 늦었지만 정책 기반 라우팅의 중요성과 유용성을 파악하기 시작한 것 같습니다. 좋은 소식은 이제 내가 원하는 것이 완전히 작동하지만 일종의 우회적인 방식으로 작동한다는 것입니다.

SoftEther VPN 서버(L2TP)와 함께 CentOS를 사용하고 있습니다. 이를 통해 현재 32개의 연결/로그인 설정이 있으며 Firebrick에는 각각 자체 라우팅 테이블이 있습니다. 각각에는 고유한 공용 IPv4 주소도 있습니다. SoftEther는 NAT 없이 성공적으로 인터넷 연결을 얻을 수 있는 유일한 방법이었습니다. 저는 이것이 L2TP 연결과 이더넷 인터페이스(예: eth1/eno2)를 연결하는 가상 네트워크 인터페이스(O/S에 숨겨진)를 만들기 때문이라고 믿습니다. ) 이더넷 수준에서.

이를 통해 저는 수십 개의 규칙을 통해 Firebrick의 방화벽(내 라우터)에 각 L2TP 연결에 대한 다양한 라우팅 테이블과 내 LAN용 포트에 있는 라우팅 테이블 사이를 이동하거나 그 반대로 이동하도록 지시했습니다. LAN 인터페이스는 여전히 공용 IPv4/26을 사용하지만 실제로는 L2TP 서버 연결에 할당된 IP 주소에 직접 연결되지 않습니다. 해당 공용 IPv4/26 블록의 첫 번째 IP는 실제로 공용이 아니며 LAN 포트의 게이트웨이 IP로만 사용되며 해당 IP는 인터넷에서 연결할 수 없습니다. 내가 말했듯이 이것은 우회적인 방법이지만 작동합니다. 아직 여분의 IP 주소도 있으므로 나중에 더 많은 로그인을 추가할 수 있습니다.

어떤 방법으로든 가장 좋은 솔루션은 아니며 약간 보기 흉하지만 작동하는 것 같습니다.

관련 정보