我想复制 openvpn 重定向网关的功能,将所有流量通过互联网服务器路由到互联网并返回。我的客户端电脑 -> 家庭路由器 -> 互联网 -> 1.2.3.4 -> 互联网
这是我的正常“route -n”输出,具有有效的互联网连接:
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
mydslip 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
现在我想通过 1.2.3.4 发送所有流量,这样就不会直接进入互联网,而是通过中间的路由器。
我尝试过的:
路由添加默认 1.2.3.4
结果是:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 1.2.3.4 0.0.0.0 UG 0 0 0 ppp0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
mydslip 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
这并没有像我希望的那样重定向流量,它仍然直接进入互联网而不是通过 1.2.3.4,所以我尝试(从上面的第一个路由表):
路由删除默认网关 0.0.0.0
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
mydslip 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
但现在添加:
路由添加默认 1.2.3.4
结果是:
SIOCADDRT: Network is unreachable
这是有道理的,因为默认路由已经消失了...如何添加它?
前 3 列中包含 0.0.0.0 的条目对我来说没有意义:
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
那如何让流量到达任何地方呢?
我也尝试过这个:
0.0.0.0 1.2.3.4 0.0.0.0 UG 0 0 0 ppp0
mydslip 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
1.2.3.4 mydslip 255.255.255.255 UGH 0 0 0 ppp0
1.2.3.4 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
这种方法行不通,数据包直接进入互联网
答案1
你的方法行不通,因为 IP 路由的工作方式一般如此。在这里解释 IP 路由并不适合像 Serverfault 这样的问答网站,因为这会占用太多的文字。
实现的方法如下:
- 在源和所需路由器之间为 IP 数据包创建隧道。
- 确保您的路由表包含到路由器的有效路由(通过工作网关的路由器的公共 IP 地址)。
- 将默认路由替换为源计算机路由器的隧道 IP 地址。
您还需要确保另一个路由器具有正确的配置,以便将数据包从/路由到隧道。