是否可以为 PPTP 客户端创建虚拟集线器?

是否可以为 PPTP 客户端创建虚拟集线器?

大学网络内有一台 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 服务器是有问题的,因为相当严格的防火墙设置和我必须使用湿件 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

相关内容