我使用OpenSwan和xl2tpd设置了一个L2TP/IPsec VPN,使用"nodefaultroute“ppp选项。服务器的虚拟IP地址设置为10.10.31.1,并在10.10.31.2-254范围内分配地址。这设置了10.10.31.1 <-> 10.10.31.2等之间的PPP链接,这很好--连接VPN的主机可以与服务器通信。
如何设置ppp链接,使服务器端看起来像整个范围10.10.0.0,而不仅仅是那个IP地址?我希望连接客户端将通过VPN接口路由对该子网的任何请求,在该接口中,服务器可以捕获它们并充当网关。另一方面,"proxyarp“选项将允许VPN服务器捕获返回到VPN客户端的流量。
一个显而易见的解决方案是使用VPN服务器作为默认路由。我不喜欢这样做,这样只有特定于该子网的流量才能通过VPN。这有可能吗?
发布于 2013-04-09 12:56:08
正如我所怀疑的,问题是我有点笨。如果有人发现了这个问题,并想知道同样的事情,那么你应该知道以下几点:
nodefaultroute不在VPN服务器配置中。这是一个PPP客户的东西。PPP客户端负责决定是否创建默认路由。这是iOS上的“发送所有流量”复选框。
您的PPP客户端将始终创建到远程网关的路由,以及远程子网的路由。如果您在VPN服务器(/proc/sys/net/ IP 4/ip_forward=1)上启用了ip转发,那么您的客户端将能够向远程子网上的主机发送流量。
您必须在ppp options.xl2tpd文件中为VPN服务器的局域网上的主机指定proxyarp,以便能够将流量发送回客户端。这将在arp表中创建一个条目,并在内核中启用proxy_arp选项。这允许VPN服务器使用自己的以太网接口代表VPN客户端接受数据包。如果您不想这样做或需要跨路由器,似乎把VPN客户端放在NAT后面是一个流行的解决方案,尽管我没有亲自测试。
如果客户端要使用VPN作为默认路由,请使用ms-dns ppp选项为客户端提供名称服务器。否则,iPad会抱怨它没有连接到互联网上。
https://serverfault.com/questions/455175
复制相似问题