xl2tpd:在不使用預設路由的情況下,為整個子網提供 L2TP/IPsec VPN 連接
我已經使用 OpenSwan 和 xl2tpd 使用“nodefaultroute” ppp 選項設置了 L2TP/IPsec VPN。伺服器的虛擬 IP 地址設置為 10.10.31.1,它分配的地址範圍為 10.10.31.2-254。這會在 10.10.31.1 <-> 10.10.31.2 等之間建立 PPP 連結,並且工作正常 - 連接 VPN 的主機可以與伺服器通信。
如何設置 ppp 連結,使伺服器端看起來像整個範圍 10.10.0.0 而不僅僅是那個 IP 地址?我希望連接的客戶端隨後將通過 VPN 介面路由對該子網的任何請求,伺服器可以在其中擷取它們並充當網關。在另一個方向上,“proxyarp”選項將允許 VPN 伺服器將流量擷取回 VPN 客戶端。
一個明顯的解決方案是使用 VPN 伺服器作為預設路由。我不希望這樣做,以便只有特定於該子網的流量通過 VPN。這甚至可能嗎?
正如我懷疑的那樣,問題是我有點笨拙。如果有人發現這個問題並且想知道同樣的事情,這些是您應該知道的關鍵事項:
**nodefaultroute 不會進入您的 VPN 伺服器配置。**它適用於 PPP 客戶端。PPP 客戶端負責決定是否創建預設路由。這是 iOS 上的“發送所有流量”複選框。
**您的 PPP 客戶端將始終創建到遠端網關的路由,以及遠端子網的路由。**如果您在 VPN 伺服器上啟用了 IP 轉發(/proc/sys/net/ipv4/ip_forward = 1 加上 linux 上的適當 iptables 規則),您的客戶端將能夠向遠端子網上的主機發送流量。
**您必須在 ppp options.xl2tpd 文件中為 VPN 伺服器 LAN 上的主機指定 proxyarp 才能將流量發送回客戶端。**這將在 arp 表中創建一個條目並在核心中啟用 proxy_arp 選項。這允許 VPN 伺服器使用自己的乙太網介面代表 VPN 客戶端接受數據包。如果您不想這樣做或需要跨路由器,那麼將 VPN 客戶端置於 NAT 之後似乎是一種流行的解決方案,儘管我自己沒有對此進行測試。
**如果客戶端要將 VPN 用作預設路由,請使用 ms-dns ppp 選項為客戶端提供名稱伺服器。**否則 iPad 會抱怨它沒有連接到網際網路。