在大學網路內有一台運行 pptpd 的 Linux 機器 ( A
),該網路位於防火牆後面,但具有真實 IP。我無權訪問該網絡,也不了解該網絡中的 IP 分配,因此我不能僅remoteip X.Y.Z.200-250
在 pptpd 配置中進行設置,因為這可能會導致衝突。我想知道是否可以為所有連接的 VPN 用戶端建立一個虛擬中心,然後將其 NAT 到真實網路。
這是一些笨拙的 ASCII 圖形,說明了我想要實現的目標:
PPTP-client ---\ ________________ ________________________
\ | 10.0.0.0/24 | |10.0.0.0/24 real ip|
PPTP-client ----->| Virt. hub (A) |----|ethX A eth0|----- Outside world
/ |_______________| |_______________________|
PPTP-client ---/
谷歌搜尋顯示PacketiX.NET和UT-VPN具有這樣的內建功能,但我不知道如何用普通的pptpd來做到這一點。我嘗試建立虛擬接口,使用靜態 IP 配置它,然後將來自該接口子網的 IP 提供給 pptp-client,但沒有成功。
使用其他 VPN 伺服器是有問題的,因為相當偏執的防火牆設定和我必須使用 wetware ssh 伺服器來進行A
.
答案1
您可以使用 PPTPd 伺服器(如果您的網路未過濾 GRE 協定)。 PPTD 將為伺服器上的每個用戶端建立新的 ppp 介面。
例如您指定
localip 192.168.101.1-100
remoteip 192.168.101.101-200
因此每個 ppp* 介面都會從 192.168.101 子網路取得新的 IP。最後,您可以將來自該子網路的所有流量 NAT 到您的真實 IP(不要忘記 net.ipv4.ip_forward=1)
# here could be full MASQUERADE or SNAT
iptables -t nat -I POSTROUTING -o real_interface0 -j MASQUERADE
# forward for all ppp + MSS tune, conntrack recommended
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -s 172.20.1.0/24 -j TCPMSS --clamp-mss-to-pmtu