ip route add 通过在同一网络中指定源地址
ip route add by specifying source address in the same network
我有 4 台电脑和另一台电脑,称之为代理,都在同一个网络中:172.16.96.0/20。我可以互相ping通。
但是,我想将它们分成 2 个。即:
- 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 没有显示为跃点..我不确定它是否应该..
在代理上,路由 table 看起来像:
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 回答:没有这样的设备
我不确定我是否在正确的道路上进行此配置。如果没有请告诉我。谢谢!
我通过在代理上添加以下内容设法解决了问题:
# 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
我有 4 台电脑和另一台电脑,称之为代理,都在同一个网络中:172.16.96.0/20。我可以互相ping通。 但是,我想将它们分成 2 个。即:
- 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 没有显示为跃点..我不确定它是否应该..
在代理上,路由 table 看起来像:
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 回答:没有这样的设备
我不确定我是否在正确的道路上进行此配置。如果没有请告诉我。谢谢!
我通过在代理上添加以下内容设法解决了问题:
# 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