如何在我的 L2TP 伺服器上執行必要的路由以獲取往返於我的客戶端分配的公共 IPv4 的 Internet 流量
我有一台執行 Ubuntu Server 20.04 的伺服器,它有兩個乙太網介面並託管 L2TP 伺服器(使用 accel-ppp)。
’eno1’ 分配了一個公共 IPv4 地址。
’eno2’ 可以訪問 /26 公共 IPv4 塊,我想通過 L2TP 伺服器從另一個位置使用它。詳情往下看。
現在我要做的是讓我的路由器在另一個位置可以連接到 L2TP 伺服器,並有一個面向公眾的 IPv4 以及一個 /27 公共 IPv4 從拆分提到的 /26 公共 IPv4 路由到它早些時候。例如,xx161.64/27。
雖然我可以從 L2TP 伺服器以及通過路由器 LAN 分配的任何 /27 IPv4 ping 連接到 L2TP 伺服器的路由器的 IP,但我不知道如何獲得到 Internet 或其他地方的路由大概是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 將能夠訪問網際網路並可以從網際網路訪問?大概它需要以某種方式有到 xx161.126 的路由,即整個原始 /26 IPv4 塊的網關 IP 地址。
如果我應該採取更簡單或不同的方法,請說。我不想做 NAT,因為我想這會破壞我正在嘗試做的事情。
希望我已經相當清楚並提供了很多細節,如果您需要更多細節,請詢問。近兩天來,我一直在努力解決這個問題。改變路線對我來說有點新鮮。提前感謝您的任何幫助!
編輯:我在這裡得到答案看起來並不希望,所以我可能只需要看看尋找專家來完成這項任務,假設報價不是高得離譜。如果有人確實閱讀了這個問題並知道答案,那麼我將非常感激聽到您的解決方案!謝謝。
經過進一步的實驗,我想我已經開始掌握基於策略的路由的重要性和有用性,雖然有點晚了。好消息是我現在已經得到了我想要的完全工作但以一種迂迴的方式。
我正在使用帶有 SoftEther VPN 伺服器 (L2TP) 的 CentOS。有了這個,我目前有 32 個連接/登錄設置,在 Firebrick 上它們每個都有自己的路由表。它們中的每一個也有一個唯一的公共 IPv4 地址。SoftEther 是我設法在沒有 NAT 的情況下成功獲得 Internet 連接的唯一方法,我相信因為它創建了一個虛擬網路介面(隱藏在 O/S 中),它橋接 L2TP 連接和乙太網介面(例如 eth1/eno2 ) 在乙太網級別。
有了這個,我已經通過幾十條規則指示 Firebrick 的防火牆(我的路由器)在每個 L2TP 連接的各種路由表和我的 LAN 埠所具有的路由表之間跳轉,反之亦然。LAN 介面仍然使用我的公共 IPv4 /26,但實際上它並沒有直接連接到分配給我的 L2TP 伺服器連接的 IP 地址。該公共 IPv4 /26 塊的第一個 IP 並不是真正面向公眾的,它僅用作我的 LAN 埠的網關 IP,並且無法從 Internet 訪問該 IP。這行得通,儘管正如我所說的那樣,這是一種迂迴的方式。我還有多餘的 IP 地址,所以以後可以添加更多登錄資訊。
無論如何,這並不是最好的解決方案,它有點難看,但它似乎有效。