我有一个 Ubuntu Virtualbox 客户机,它有两个网络接口,eth0(NAT)和 eth1(桥接)。
我想使用 eth1 连接到 PPTP VPN,但我不知道如何指定要使用的接口。如果我尝试:
sudo pon myvpn nodetach
它失败了:
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
Modem hangup
Connection terminated.
查看路线route
似乎表明eth0
正在使用:
x.x.x.x.no 10.0.2.2 255.255.255.255 UGH 0 0 0 eth0
答案1
PPTP 客户端将使用 Linux 内核的路由来选择使用哪个接口来获取流量。如果您想确保使用特定接口,则通往 VPN 端点的最佳路由需要通过该接口。
答案2
Teun Vink 的答案是正确的,但也非常严格:为了通过 eth1 传输 VPN 流量,他的解决方案指示全部通过 eth1 进行流量。
相反,可以保留某些选项,通过在路由表中添加特定选项,只允许某种类型的流量通过 eth1 进行路由。
首先,您可以使用--localbind
pptp 的选项来指定要使用的接口。例如,如果您的 eth1 卡有 IP 192.168.1.15,请按如下方式调用 pptp:
pptp --localbind 192.168.1.15 ...
(或修改您的 myvpn 文件),您将使用接口 eth1 连接到 VPN。
现在您指定只希望到远程 LAN 的流量通过 VPN,其他流量则不通过。您可以通过以下方式实现此目的:
sudo route add -net 192.168.50.0/24 dev ppp0
我假设 VPN 服务器后面的 LAN 是 192.168.50.0/24
如果您希望到 IP 地址为 xx.yy.ww.zz 的特定站点的流量通过 VPN,您可以说:
sudo route add -host xx.yy.ww.zz dev ppp0
使用这些命令,您明确选择通过 VPN 路由的流量将使用它,所有剩余流量将被路由到 VPN 之外。并且您可以同时使用 eth0 和 eth1 来路由 VPN 之外的其他流量。