现在,每当我连接到(商业)VPN 服务器时,一个tun
接口就会启动,并inet
分配给它一个地址以及一个peer
地址(无论这意味着什么)。
root@mininet-vm:/etc/openvpn# ip -4 a show dev tun0
33: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
inet 10.9.10.6 peer 10.9.10.5/32 scope global tun0
valid_lft forever preferred_lft forever
我有两个虚拟接口,我想让它们的所有流量都通过 VPN。我可以通过将流量从这些接口路由到tun0
并执行SNAT
to 来使其工作10.9.10.6
。我尝试为它们分配 ip10.9.10.7
和ip,但我只在ip时10.9.10.8
收到响应流量(这就是 SNAT 起作用的原因)。tun0
src
10.9.10.6
我想知道是否有可能变成tun0
一个常规子网,以便我可以在该子网上分配多个客户端,并且无需借助 NAT 即可完成此操作。
我在 openvpn 手册页上找到了拓扑选项,但该选项似乎是由服务器推送的
subnet -- Use a subnet rather than a point-to-point topology by
configuring the tun interface with a local IP address and
subnet mask, similar to the topology used in --dev tap and
ethernet bridging mode.
我尝试用以下命令覆盖它,/usr/sbin/openvpn --topology subnet --pull-filter ignore "topology" ...
但添加 IP 时失败:
Fri Dec 28 01:52:47 2018 /sbin/ip addr add dev tun0 10.66.10.6/-1 broadcast 255.255.255.254
Error: an inet prefix is expected rather than "10.66.10.6/-1".
还有其他方法可以让它发挥作用吗? (不幸的是我无法控制这个商业VPN的服务器)
答案1
如果您无法控制服务器,则无法执行此操作。
TUN 接口处理第三层数据包(与处理第二层的 TAP 接口相反)。服务器将具有静态路由规则,您将无法仅使用客户端配置来更改此规则。