我用了本指南连接到我的 VPN 服务器 (pptp),这是唯一一份适用于许多教程的指南。
连接到 VPN 服务器后,路由表如下所示,有时只有最后 2 行(非常随机,我确信这是有原因的)。
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 255.255.255.255 UGH 0 0 0 ppp0
192.168.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
我的设置:(为了简单起见,示例中更改了 IP)
- 在 192.168.1.20 上运行的本地计算机(centos)
- 这将连接到 35.100.100.35(互联网)上的外部 VPN(ubuntu),内部 VPN 本地 IP 为 192.168.0.1
- 当centos连接时,接口ppp0被添加IP 192.168.0.2
但是,我需要通过 192.168.0.1(VPN 服务器)路由来自 192.168.0.2 的所有流量。目前它使用本地互联网。
我尝试了很多变体,但都无法做到正确。
route add default ppp0
曾经可以工作,但随着路由表被破坏,它不再工作了。
路由表应该是什么样的?
答案1
您的问题
我建议为此使用一个单独的路由表,因为我假设到达的流量的192.168.0.2
源地址为35.100.100.35
.您遇到的问题是35.100.100.35
路由表中没有列出,因此使用默认值。
您也许能够摆脱像以下这样简单的事情:
ip route add 35.0.0.0/8 via 192.168.0.1 dev ppp0
这样,当您的机器尝试响应某个35
地址时,它会在ppp0
接口上执行此操作。
接下来是更强大/更精细的版本。
注意:您应该重新启动计算机以清除对路由表所做的任何临时更改。
路由规则
一个足够简单的路由规则是让发往或来自特定 IP 或子网的任何流量使用不同的路由表:
ip rule add from [interface ip]/[netmask] tab [table number] priority [priority]
ip rule add to [interface ip]/[netmask] tab [table number] priority [priority]
在这种情况下,您担心到达192.168.0.2
(您的ppp0
设备 IP)的流量。您需要通过添加到文件来创建新的路由表:/etc/iproute2/rt_tables
。语法是[table number] [table name]
.我通常使用接口名称作为表名称,保持简单。
echo "168 ppp0" >> /etc/iproute2/rt_tables
ip rule add from 192.168.0.2/32 tab 168 priority 101
ip rule add to 192.168.0.2/32 tab 168 priority 101
这应该会导致所有寻址到的流量以及响应该表中的流量的任何流量都与192.168.0.2
路由表匹配。168
使用新的路由表
现在我们已经将流量定向到该路由表168
,但它是空的,现在只需要向其添加默认路由即可。
ip route add default via 192.168.0.1 dev ppp0 table 168
这会向表中添加一条默认路由168
,简单来说就是使用接口ppp0
。
它看起来像什么
您的路由表最终可能应该如下所示:
# ip route show
default dev eth0 proto static metric 1024
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20
192.168.0.0/24 dev ppp0 proto kernel scope link src 192.168.0.2
这是您的标准路由表,通常用于流量的表。至于这里的路由:默认的路由可能是您最初定义的,后两个路由是根据接口的 IP 地址推断的。
# ip rule show
0: from all lookup local
101: from 192.168.0.2 lookup ppp0
101: from all to 192.168.0.2 lookup ppp0
这里列出了你的路由规则,格式是“[优先级]:[规则]查找[表]”。此示例说明通常使用本地路由表。如果流量往返于 192.168.0.2,请使用名为 的路由表ppp0
。
# ip route show table ppp0
default via 192.168.0.1 dev ppp0
这显示了名为 的路由表ppp0
,它应该只发送所有流量ppp0
。
最终结果
最终结果是,当流量传入或传出ppp0
接口的 IP 时,它将使用名为 的路由表ppp0
。路由表ppp0
只是将所有流量发送出设备ppp0
。
答案2
route add -net 192.168.0.0/24 gw 192.168.0.1 dev ppp0