我感兴趣的PPTP passthrough在这里不是Ipsec等。我已经在网上看了,但无法find它是如何做到的。 我自己是ITpipe理员,知道很多路由,NAT等。我想我知道它是如何工作的,但是已经正式发现了。 我只是好奇,希望有人确认我的理论。 这里是。
首先,共享一个公有IP地址的问题归结为NAT。 NAT使用PAT与多个私有IP共享一个公共IP。 如果没有端口和PAT,那么当数据包从目的地返回时,它们都将被分配给公共IP地址。 路由器将无法区分彼此不同的数据包。 通过使用源端口和PAT它可以。
PPTP使用GRE本身是与TCP或UDP不同的协议。 它实际上并不使用端口,所以这在遍历NAT设备时会出现问题。 当数据包从互联网返回给路由器时,如何知道这些数据包属于哪个私有IP而不使用PAT?
我认为这是通过监视1723“通道”来实现的。 使用PPTP通过路由器将1723连接(将使用PAT / NAT)与GRE数据包关联到同一个目标IP。 换句话说,当GRE数据包返回时,它不知道将它们发送到哪里,所以它看起来像1723连接,而不是寻找私有IP地址。 这是正确的,如果没有,那么它是如何工作的?
我知道有NAT-T,但我导致相信这是不同于VPN直通…
我自己find了这个… PPTP Passthrough
正如我怀疑与PPTP隧道使用的GRE协议不使用端口。 这意味着它不能原生遍历NAT设备。 有两个版本的GRE虽然; 本机和专门用于PPTP的增强型GRE。 增强版本在呼叫头中添加一个呼叫ID。 NAT后面的每个VPN客户端都会创build自己唯一的呼叫ID,并将其添加到GRE头中。 具有VPN传递能力的路由器读取报头的这一部分,并将呼叫ID与NAT后面的私有IP地址进行匹配。 NAT设备必须支持这个function。 当数据包穿越它时,NAT设备读取这个数据,并检查返回这个设置的GRE数据包,所以它知道在哪里发送它。
从http://www.shorewall.net/VPN.htm
具有RFC 1918地址的系统需要通过远程网关访问远程networking。 在这个例子中,我们假定本地系统的IP地址是192.168.1.12,远程网关的IP地址是192.0.2.224。
如果正在使用PPTP,并且需要同时连接两台或更多本地系统到同一台远程服务器,则应确保加载了PPTP助手模块(ip_conntrack_pptp和ip_nat_pptp或nf_conntrack_pptp和nf_nat_pptp)。 使用默认的模块文件,当Shorewall(Lite)启动时,Shorewall(Lite)将尝试加载这些模块。
如果使用IPSEC,则应该configurationIPSEC使用NAT穿越 – 在NAT穿越下,IPSEC数据包(协议50或51)被封装在UDP数据包中(通常使用目标端口4500)。 此外,保持活动消息被频繁地发送,以便端点之间的NATing网关将保持其连接跟踪条目。 这是我连接到HP Intranet的方式,除了我的接受loc-> net策略之外,它在Shorewall中没有任何东西可以正常工作。 NAT穿越可作为Windows 2K的补丁,是Windows XP的标准function – 只需从“VPNtypes”下拉菜单中select“L2TP IPSec VPN”即可。
或者,如果在防火墙后有IPSEC网关,则可以尝试以下操作:只有一个系统可以连接到远程网关,并且具有以下防火墙configuration要求: