在 Ubuntu 上选择 PPTP VPN 的源接口

在 Ubuntu 上选择 PPTP VPN 的源接口

我有一个 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 进行路由。

首先,您可以使用--localbindpptp 的选项来指定要使用的接口。例如,如果您的 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 之外的其他流量。

相关内容