我想创建一个同时具有PPTP服务器和客户端的VPS,并将此VPS用作中继。

有两个服务器:VPS1和VPS2,均安装PPTPD,而VPS1安装pptp客户端。

我想要这个:

用户---- PPTP ----> VPS1 ----- PPTP ----> VPS2

用户连接到VPS1,所有网络流量都路由到VPS2。
我这样做是因为用户很难直接连接VPS2,需要一个中间服务器作为中继。

如何配置iptable使其起作用?谢谢。

最佳答案

PPTP的用法奇怪。您的ISP必须是中国电信的上海。

如果将VPS1中的所有网络流量路由到VPS2,则必须知道用户的IP地址并设置例外。否则用户将永远不会收到回复数据包。

也许您可以使用iptables启用DNAT。将VPS1用作路由器,将VPS2用作内部pptp服务器。

首先,您应该检查内核模块ip_nat_pptpip_conntrack_pptp是否已加载。 PPTP使用TCP端口1723传输控制命令,并使用GRE传输数据。由于GRE没有端口,因此服务器必须使用CallID来跟踪端点并实现NAT。这称为PPTP Passthrough

# lsmod | grep pptp


如果未加载,请加载它们。

# modprobe ip_nat_pptp
# modprobe ip_conntrack_pptp


然后,您需要启用IPv4网络转发:

# sysctl -w net.ipv4.ip_forward=1


现在,您可以创建iptables规则来接受传入和转发请求:

# iptables -A INPUT -d $VPS1_IP_ADDR -p tcp --dport 1723 -j ACCEPT
# iptables -A INPUT -d $VPS1_IP_ADDR -p gre -j ACCEPT
# iptables -A FORWARD -d $VPS2_IP_ADDR -p tcp --dport 1723 -j ACCEPT
# iptables -A FORWARD -d $VPS2_IP_ADDR -p gre -j ACCEPT


最后设置DNAT规则:

# iptables -A PREROUTING -d $VPS1_IP_ADDR -p tcp --dport 1723 -j DNAT --to-destination $VPS2_IP_ADDR
# iptables -A POSTROUTING -d $VPS2_IP_ADDR -p tcp --dport 1723 -j MASQUERADE


您现在可以在VPS2上将VPS1与pptpd的用户名/密码连接。

关于linux - Linux PPTP服务器中继,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31731067/

10-15 01:58