在同一端口转发和侦听同一远程地址时,UDP 伪装行为是什么?

在同一端口转发和侦听同一远程地址时,UDP 伪装行为是什么?

假设如下:

||netns2|<-kernel routing-> netnsRoot| <-network routing-> |remote server| 

网络2

  • 是网络命名空间
  • 有一个客户端连接到 UDP/5060 上的 UDP 服务器

网络根目录

  • 是根网络命名空间(即:典型的 Linux 路由)
  • 有一个客户端连接到 UDP/5060 上的 UDP 服务器
  • 已启用 ip_forward 并具有针对 netns2 的 Masquerade 规则

服务器

  • 仅看到来自 netnsRoot 外部接口的流量

Masquerade 在 netnsRoot 中如何表现?我预计它会转发数据包,netns2但客户端netnsRoot会首先接收所有消息。这不是我认为我看到的情况,相反,我看到的是netns2NAT 冲击并接管端口一段时间。

这种行为有记录吗?

答案1

好吧,我决定自己量化一下

||netna|<-kernel routing-> |netnsr|<-kernel routing->|netnb||
  • netnsb 有到 netnsa 的路线
  • netnsr 已启用 ip 转发

伪装和 netnsb 客户端

启用 Masquerade netnsr,并让netnsb客户端从 5060 连接到netnsa5060 上的服务器,表明 5060 正在使用退出netnsr

化装舞会和两个客户

在 中启用 Masquerade netnsr,让netnsb客户端从 5060 连接到netnsa5060 上的服务器,并让同一个客户端在 中运行,netnsr结果显示:

  • netnsr 客户端在 5060 上与外部对话
  • netnsb 客户端正在与 29683 进行外部对话

conntrack 条目证实了这一点

udp      17 119 src=10.216.210.2 dst=10.216.100.2 sport=5060 dport=5060 src=10.216.100.2 dst=10.216.100.1 sport=5060 dport=29683 [ASSURED] mark=0 use=1
udp      17 119 src=10.216.100.1 dst=10.216.100.2 sport=5060 dport=5060 src=10.216.100.2 dst=10.216.100.1 sport=5060 dport=5060 [ASSURED] mark=0 use=1

相关内容