![必须设置哪些路由(在 Linux 中)才能允许通过给定接口访问 Internet,而无需将其设置为默认值?](https://linux22.com/image/1347597/%E5%BF%85%E9%A1%BB%E8%AE%BE%E7%BD%AE%E5%93%AA%E4%BA%9B%E8%B7%AF%E7%94%B1%EF%BC%88%E5%9C%A8%20Linux%20%E4%B8%AD%EF%BC%89%E6%89%8D%E8%83%BD%E5%85%81%E8%AE%B8%E9%80%9A%E8%BF%87%E7%BB%99%E5%AE%9A%E6%8E%A5%E5%8F%A3%E8%AE%BF%E9%97%AE%20Internet%EF%BC%8C%E8%80%8C%E6%97%A0%E9%9C%80%E5%B0%86%E5%85%B6%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E5%80%BC%EF%BC%9F.png)
我正在尝试解决有关路由和 OpenVPN 配置的任务。
设置连接后,我不希望它成为任何内容的默认路由,而是希望使用它的接口进行这种活动:curl --interface tun20 http://someaddress
。
但是,如果没有配置默认路由,主机系统似乎无法发送/接收数据包(我认为它无法从 VPN 接收它们,因为嗅探器以someaddress
某种方式接收了从未被数据继续传输的 TCP 连接尝试数据包)。
设置默认路由后,VPN 运行正常——已测试。
是否配置:
tun20 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.200.2.236 P-t-P:10.200.2.236 Mask:255.255.252.0
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:258 (258.0 B) TX bytes:0 (0.0 B)
使用服务器的默认路由:
路线-n:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.200.0.1 128.0.0.0 UG 0 0 0 tun20
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
10.200.0.0 0.0.0.0 255.255.252.0 U 0 0 0 tun20
66.187.67.130 192.168.0.1 255.255.255.255 UGH 0 0 0 wlan0
128.0.0.0 10.200.0.1 128.0.0.0 UG 0 0 0 tun20
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
当默认的路由被route-nopull
指令丢弃时,我得到这个:
路线-n:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
10.200.0.0 0.0.0.0 255.255.252.0 U 0 0 0 tun20
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
因此,我希望获得有关如何实现这一功能的路由/转发建议。
答案1
这是一次很好的学习经历。https://superuser.com/a/374566/49318,我发现了一个值得花一个小时阅读的链接man ip
:ip help
echo 11 mpdevtun7 >> /etc/iproute2/rt_tables
ip route add default via %yourIP% dev tun17 table mpdevtun7
ip rule add from %yourIP% lookup mpdevtun7 prio 1000
现在curl --interface tun7
一切正常。就这样吧,朋友们。