linux PPTP服务器中继

时间:2015-07-30 18:10:10

标签: linux pptp

我想创建一个VPS都有PPTP服务器和客户端,这个VPS用作中继。

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

我想要这个:

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

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

如何配置iptable使其正常工作?感谢。

1 个答案:

答案 0 :(得分:1)

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的用户名/密码连接起来。