如何執行所需的路由以取得往返於我的 L2TP 伺服器上指派的公共 IPv4 的用戶端的網際網路流量

如何執行所需的路由以取得往返於我的 L2TP 伺服器上指派的公共 IPv4 的用戶端的網際網路流量

我有一台運行 Ubuntu Server 20.04 的伺服器,它有兩個乙太網路介面並託管 L2TP 伺服器(使用 accel-ppp)。

“eno1”分配了一個公共 IPv4 位址。

「eno2」可以存取 /26 公用 IPv4 區塊,我想透過 L2TP 伺服器從另一個位置使用該區塊。詳情往下看。

現在我想做的是讓我的路由器在另一個位置可以連接到 L2TP 伺服器,並擁有面向公眾的 IPv4 以及透過分割提到的 /26 公共 IPv4 路由到它的 /27 公共 IPv4早些時候。例如,xx161.64/27。

雖然我可以從 L2TP 伺服器 ping 連接到 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 能夠存取互聯網並可從網路存取?據推測,它需要以某種方式擁有一條到 xx161.126 的路由,即整個原始 /26 IPv4 區塊的網關 IP 位址。

如果我應該採取更簡單或不同的方法,請說出來。我不想做 NAT,因為我認為這會破壞我想做的事情。

希望我已經相當清楚並提供了足夠的詳細信息,如果您需要更多詳細信息,請詢問。近兩天來我一直在努力解決這個問題。改變路線對我來說有點新鮮。預先感謝您的任何幫助!

編輯:我似乎不太希望在這裡得到答案,所以我可能只需要考慮尋找一位專家來僱用這項任務,假設報價不是貴得離譜。如果有人確實讀過這個問題並知道答案,那麼我將非常感激聽到您的解決方案!謝謝。

答案1

經過進一步的實驗,我想我已經開始理解基於策略的路由的重要性和有用性,儘管有點晚了。好消息是,我現在已經得到了我想要的完全工作,但以一種迂迴的方式。

我正在使用帶有 SoftEther VPN 伺服器 (L2TP) 的 CentOS。有了這個,我目前有 32 個連接/登入設置,在 Firebrick 上它們每個都有自己的路由表。它們每個都有一個唯一的公共 IPv4 位址。 SoftEther 是我在沒有 NAT 的情況下成功獲得互聯網連接的唯一方法,我相信是因為它創建了一個虛擬網路介面(隱藏在作業系統中),橋接 L2TP 連接和乙太網路介面(例如 eth1/eno2) )在乙太網路層級。

這樣,我透過數十條規則指示 Firebrick 的防火牆(我的路由器)在每個 L2TP 連接的各種路由表和我的 LAN 連接埠所具有的路由表之間跳轉,反之亦然。 LAN 介面仍然使用我的公共 IPv4 /26,但實際上它並沒有直接連接到分配給我的 L2TP 伺服器連接的 IP 位址。該公共 IPv4 /26 區塊的第一個 IP 並不是真正面向公眾的,它僅用作我的 LAN 連接埠的網關 IP,並且無法從 Internet 存取該 IP。這是可行的,儘管正如我所說,這是一種迂迴的方式。我還有空閒的 IP 位址,因此稍後可以添加更多登入。

無論如何,這不是最好的解決方案,它有點難看,但它似乎有效。

相關內容