gpt4 book ai didi

linux - ip route add 通过在同一网络中指定源地址

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:27 25 4
gpt4 key购买 nike

我有 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 不会显示为跃点..我不确定它是否应该..

在代理上,路由表如下所示:

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

如果我在 pc1 上编写规则,pcDest ip 是 pc3 和 pc4。

更多信息:http://www.karlrupp.net/en/computer/nat_tutorial

这里:https://serverfault.com/questions/306024/how-to-route-network-traffic-of-a-host-via-another-host

关于linux - ip route add 通过在同一网络中指定源地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31435640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com