두 개의 이더넷 인터페이스가 있고 L2TP 서버(accel-ppp 사용)를 호스팅하는 Ubuntu Server 20.04를 실행하는 서버가 있습니다.
"eno1"에는 공용 IPv4 주소가 할당됩니다.
"eno2"는 L2TP 서버를 통해 다른 위치에서 사용하려는 /26 공용 IPv4 블록에 액세스할 수 있습니다. 자세한 내용은 아래를 참조하세요.
이제 내가 원하는 것은 L2TP 서버에 연결할 수 있고 공용 IPv4를 가질 수 있을 뿐만 아니라 앞에서 언급한 /26 공용 IPv4를 분할하여 /27 공용 IPv4로 라우팅할 수 있는 다른 위치에 라우터를 두는 것입니다. 예를 들어 xx161.64/27입니다.
L2TP 서버에서 L2TP 서버에 연결된 라우터의 IP와 라우터 LAN을 통해 할당된 /27 IPv4를 핑할 수 있지만 인터넷이나 다른 네트워크로의 경로를 얻는 방법을 모르겠습니다. L2TP 서버의 자체 게이트웨이 IP(xx161 .122).
1번
IP address: x.x.176.62 (public IPv4)
Subnet mask: 255.255.255.0
Gateway IP: x.x.176.254
이노 2
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를 사용하고 있습니다. 이를 통해 현재 Firebrick에 자체 라우팅 테이블이 있는 32개의 연결/로그인 설정이 있습니다. 각각에는 고유한 공용 IPv4 주소가 있습니다. SoftEther는 NAT 없이 성공적으로 인터넷에 연결할 수 있는 유일한 방법입니다. SoftEther는 이더넷 수준에서 L2TP 연결과 이더넷 인터페이스(예: eth1/eno2)를 연결하는 가상 네트워크 인터페이스(OS에 숨겨진)를 생성하기 때문이라고 생각합니다. .
이런 식으로 Firebrick의 방화벽(내 라우터)에 각 L2TP 연결에 대한 다양한 라우팅 테이블과 내 LAN 포트에 있는 라우팅 테이블 사이를 이동하거나 그 반대로 이동하도록 지시하는 수십 개의 규칙이 있습니다. LAN 인터페이스는 여전히 공용 IPv4/26을 사용하지만 실제로는 L2TP 서버 연결에 할당된 IP 주소에 직접 연결되지 않습니다. 이 공용 IPv4/26 블록의 첫 번째 IP는 실제로 공용이 아니며 LAN 포트의 게이트웨이 IP로만 사용되며 인터넷에서 액세스할 수 없습니다. 내가 말했듯이 이것은 우회적인 방법이지만 작동합니다. 또한 나중에 더 많은 로그인을 추가할 수 있도록 무료 IP 주소도 있습니다.
이것은 결코 최선의 해결책은 아니며 약간 보기에도 좋지 않지만 작동하는 것 같습니다.