如何让SNAT使用iptables处理ARP请求?

时间:2015-04-09 19:49:44

标签: iptables nat arp

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

参考的:
N 1 :IP地址172.1.1.96/24
N 2 :IP地址10.1.1.33/24
N c :lan1 10.1.1.1/24
lan2 172.1.1.1/24

______________________________________________________________
| / N <子> C \ |
| N 1 &lt; ------&gt; |切换 1 |&lt; -------&gt; | lan2&lt; - &gt; lan1 | &LT; -------&GT; |切换 2 | &LT; -------&GT; N 2 |
| _______________________ \ ___________ / __________________________ |

尝试

我已将路由规则添加到N 1 以将所有10.1.1.0/24数据包发送到172.1.1.1(N c ),以及以下iptables规则到N c

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

然后我从N 1 向N 2 发送ping。 N 2 接收ping并发送ARP请求。 N c 未应答此ARP,导致N 2 不响应ping。

问题
如何让N c 回答arp请求?

注意

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

1 个答案:

答案 0 :(得分:0)

代理ARP是解决方案。通过设置proxy_arp或proxy_arp_pvlan标志(请参阅serverfault post以获取使用的说明),Linux将代表N 1 响应来自N 2 的ARP请求。