我有网络设置,如下所示:

VPN服务器运行为windows 2012服务器默认VPN,使用GRE协议。我能够有VPN连接到那个远程vpn服务器,仅从我的内联网单一IP。但是我无法连接到intranet IP 172.16.14.0/24的范围。问题在于linux路由器,它正在做NAT。对于工作vpn连接(单个IP),我的nat表的iptable如下所示,允许使用gre协议:
iptables -I PREROUTING -t nat -p 47 --src 202.xx.yy.abc -j DNAT --to-destination 172.16.14.15
iptables -I POSTROUTING -p 47 -t nat --src 172.16.14.15 -j SNAT --to-source 202.xx.yy.zz
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
iptables -A INPUT -p 47 -j ACCEPT此规则适用于单个IP 172.16.14.15。如何使它在整个172.16.14.0/24范围内工作,以便能够连接到远程VPN服务器?
发布于 2019-06-26 06:06:25
我找到了解决办法。
我做了这个:
sysctl -w net.netfilter.nf_conntrack_helper=1然后添加
modprobe ip_nat_pptp我使用的是Ubuntu18.04.2LTS,内核版本4.15.0-45-泛型.没有必要在iptables PREROUTING、POSTROUTING表中执行与GRE协议有关的任何操作。增加略高于两行的效果。
发布于 2018-11-22 12:28:06
加载nf_nat_proto_gre内核模块了吗?如果这样做,前两行可能不再需要了。
发布于 2018-11-22 10:24:21
GRE没有像UDP和TCP协议那样的“端口”概念。任何NAT设备可以利用的唯一映射信息是数据包的源IP地址和/或目标IP地址。
要实现您想要做的事情,您需要在广域网链路上提供一个公共/24网络,然后在每个公共IP地址到每个内部IP地址之间创建单独的create映射。或者,您可以在WAN接口上提供一个地址,但是让VPN提供者为您提供几个连接到其服务的公共IPv4地址。在一种情况下,NAT映射被键关闭GRE数据包的目标地址,而在另一种情况下,NAT映射被键化出源地址。这两种方法都是可行的。
很可能您只有一个WAN地址,而VPN提供者也只有一个地址,这意味着您只能为任何GRE通信量创建一个到一个内部主机的NAT映射。
https://serverfault.com/questions/941188
复制相似问题