我有4台电脑和另一台电脑,称之为代理,全部在同一网络中: 172.16.96.0/20 。我可以互相ping。 但是,我想将它们分成2个。那就是:
但是, 从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回答:没有这样的设备
我不确定我是否正在走正确的道路来进行此配置。如果没有,请告诉我。谢谢!
答案 0 :(得分:0)
我设法通过在代理上添加以下内容来解决问题:
# 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上写规则。
更多信息:http://www.karlrupp.net/en/computer/nat_tutorial
在这里:https://serverfault.com/questions/306024/how-to-route-network-traffic-of-a-host-via-another-host