【问题标题】:How can I get SNAT to work with ARP requests using iptables?如何让 SNAT 使用 iptables 处理 ARP 请求?
【发布时间】:2015-04-09 19:49:44
【问题描述】:

问题陈述
我在不同的网络上有两个节点(N1 和 N2)。它们都连接到公共节点 (Nc) 上的单独接口。我需要从 N1 ping 到 N2

参考
N1:IP 地址 172.1.1.96/24
N2:IP地址10.1.1.33/24
Nc: lan1 10.1.1.1/24
局域网2 172.1.1.1/24

_______________________________________________________________
| /         Nc         \                                                  |
| N1|开关1 | | lan2 lan1 | |切换2 | N2 |
| ___________________\___________/_________________|

尝试

我在 N1 中添加了一条路由规则,将所有 10.1.1.0/24 个数据包发送到 172.1.1.1 (Nc),以及以下 iptables 规则到 Nc:

iptables -t nat -A POSTROUTING -s 172.1.1.96 -o lan1 -j SNAT --to 10.1.1.79

然后我从 N1 向 N2 发送 ping。 N2 收到 ping 并发送 ARP 请求。 Nc 未响应此 ARP,导致 N2 不响应 ping。

问题
如何让 Nc 响应 arp 请求?

注意

我不能使用伪装​​。一旦弄清楚这一点,我将开始添加更复杂的翻译规则,我认为这些规则无法使用伪装。

【问题讨论】:

  • 没有解释的否决票是完全没有帮助的!提高问题质量的唯一方法是当有人指出问题所在时。
  • 我能想到的唯一原因是这似乎与网络更相关,并且与编程没有任何(直接)关系。如果是这种情况,则应将帖子标记为移至更合适的 SE,而不是投反对票。

标签: iptables nat arp


【解决方案1】:

代理 ARP 是解决方案。通过设置 proxy_arp 或 proxy_arp_pvlan 标志(请参阅serverfault post 了解使用的说明),Linux 将代表 N1 响应来自 N2 的 ARP 请求。 p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-30
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2020-06-30
    • 1970-01-01
    相关资源
    最近更新 更多