有一台Linux机器( A )在防火墙后面的大学networking中运行pptpd,但具有真正的IP。 在这个networking中,我没有任何IP分配的知识,所以我不能在pptpd config里设置remoteip XYZ200-250 ,因为这可能会导致冲突。 我想知道是否有可能为所有连接的VPN客户端创build一个虚拟集线器,然后NAT到真实的networking。
这里是一些clopsy ascii grpaphics说明我想实现的:
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 ---/
谷歌search显示,PacketiX.NET和UT-VPN有这样的内置function,但我不知道如何用普通的pptpd来做到这一点。 我已经尝试创build虚拟接口,使用静态IP进行configuration,然后从该接口子网向pptp-client提供IP,但是没有成功。
其他vpn服务器的使用是有问题的,因为相当偏执的防火墙设置,我不得不使用wetware ssh服务器上的任何操作。
你可以使用PPTPd服务器(如果GRE协议没有被你的networking过滤)。 PPTD将为您的服务器上的每个客户端创build新的PPP接口。
例如你指定
localip 192.168.101.1-100 remoteip 192.168.101.101-200
所以每个ppp *接口都会从192.168.101子网获得新的IP。 最后,你可以NAT从这个子网的所有stream量到你真正的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