Linux 通过在同一网络中指定源地址来添加ip路由

Linux 通过在同一网络中指定源地址来添加ip路由,linux,networking,routing,ip,forwarding,Linux,Networking,Routing,Ip,Forwarding,我有4台pc和另一台pc,称之为proxy,它们都在同一个网络中:172.16.96.0/20。我可以在彼此之间打乒乓球。 但是,我想把它们分成两部分。即: pc1直接连接到pc2 pc3直接连接到pc4 但是,, 从pc1或pc2到pc3或pc4的所有流量都必须通过代理服务器和 从pc3或pc4到pc1或pc2的所有流量都必须通过代理服务器 pc1 pc3 | -proxy- | pc2 pc4 pc1 IP: 172.16.97.24 pc

我有4台pc和另一台pc,称之为proxy,它们都在同一个网络中:172.16.96.0/20。我可以在彼此之间打乒乓球。 但是,我想把它们分成两部分。即:

  • pc1直接连接到pc2
  • pc3直接连接到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回答:参数无效

以及:

错误:RTNETLINK回答:没有此类设备

ip route add 172.16.96.0/20 dev eth0:0 via 0.0.0.0 src 172.16.97.24

我不确定我是否在正确的路径上进行此配置。如果没有请告诉我。谢谢大家!

我通过在代理上添加以下内容来解决问题:

# sysctl net.ipv4.ip_forward=1 or add net.ipv4.ip_forward=1 in /etc/sysctl.conf (to keep it after you close the terminal)
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

-A POSTROUTING   Append a rule to the POSTROUTING chain
-o eth0          this rule is valid for packets that leave on the eth0 network interface (-o stands for "output")
-j MASQUERADE    the action that should take place is to 'masquerade' packets, i.e. replacing the sender's address by the router's address.
我在pc1、pc2、pc3、pc4上添加了:

ip route add pcDestIP via proxy
其中,pcDest ip是pc3和pc4,以防我在pc1上编写规则

更多信息:

在这里: