我有 4 台电脑和另一台电脑(将充当代理),它们都位于同一个网络:172.16.96.0/20。我可以互相 ping 通。但是,我想将它们分成两组。即:
pc1 is directly connected to pc2
pc3 is directly connected to pc4
但是,所有从 pc1 或 pc2 到 pc3 或 pc4 的流量都必须经过代理,所有从 pc3 或 pc4 到 pc1 或 pc2 的流量都必须经过代理。例如:
pc1 pc3
| -proxy- |
pc2 pc4
pc1 IP: 172.16.97.24
pc3 IP: 172.16.97.27
proxy IP: 172.16.97.2
为了在 pc1 上执行此操作,我添加了:
ip route add 172.16.97.27 via 172.16.97.2
但是,当我这样做时traceroute 172.16.97.27
,172.16.97.2 并没有出现作为跳跃..我不确定它是否应该..
在代理上,路由表如下所示:
default via 172.16.111.254 dev eth0
172.16.96.0/20 dev eth0 proto kernel scope link src 172.16.97.2
由于最后一行,我认为我应该添加另一个源,即 pc1 172.16.97.24。为了能够将从 pc1(172.16.97.24)收到的流量转发到其目的地(pc3 或 pc4),我使用了以下命令:
ip route add 172.16.96.0/20 via 0.0.0.0 src 172.16.97.24
错误:RTNETLINK 回答:没有这样的设备
ip route add 172.16.96.0/20 dev eth0:0 via 0.0.0.0 src 172.16.97.24
错误:RTNETLINK 答案:无效参数
和:
ip route add 172.16.96.0/20 src 172.16.97.24
错误:RTNETLINK 回答:没有这样的设备
我不确定我是否按照正确的方式进行此配置。如果不对,请告诉我。谢谢!
答案1
如果您想使用代理执行 IP 路由,则需要将您的 IP 网络划分为更小的部分。
您的 pc1/pc2/pc3/pc4 的网络掩码均为 255.255.240.0,这意味着所有这些 IP 地址都位于同一 IP 子网中。因此,它们将直接相互通信,而不通过路由器路由数据包。
有效的路由配置可能是这样的:
pc1: IP 172.16.96.3/24
pc2: IP 172.16.96.4/24
pc3: IP 172.16.97.3/24
pc4: IP 172.16.97.4/24
Proxy: IP 172.16.96.1/24, 172.16.97.1/24
然后您将在 PC1/2 中添加路由表条目:
ip route add 172.16.97.0/24 via 172.16.96.1
并分别在PC3/4
ip route add 172.16.96.0/24 via 172.17.97.1
因此,您将拥有两个独立的 IP 子网。