我在 Azure 负载均衡器后面有两个 Ubuntu 虚拟机。我观察到虚拟机发出的 UDP 数据包中设置的源 IP 地址存在一些不一致之处。我试图想出一个简单的ncat
命令或脚本,可以在虚拟机上运行以测试源 IP。
我的想法是创建一个循环路径(注意,就脚本和测试而言,负载均衡器是透明的):
客户端 -> LB -> VM1 -> VM2 -> LB -> 客户端
我无法解决的是如何将命令通过 VM1 传递到 VM2 以使其执行与客户端的连接。
我认为 VM1 和 VM2 上的命令应该相同:
ncat --sh-exec "/bin/bash" -k -u -l 1235
客户端连接到 VM1 并向其发送一个命令,该命令传到 VM2 并使其执行 ncat 连接返回到客户端:
ncat -u 10.0.0.4 1235
echo "ncat -u $NCAT_REMOTE_ADDR $NCAT_REMOTE_PORT" | ncat -u 10.0.0.7 1235
```
The connection makes it to VM2 but not back to the client.
答案1
我找到了一种手动的方法来做到这一点。
在两台虚拟机上:
ncat --sh-exec "/bin/bash" -k -u -l 1235
在客户端上:
ncat -u 10.0.0.4 1235
echo $HOSTNAME
vm1
ncat -u 10.0.0.5 1235
echo $HOSTNAME
vm2
ncat -u <client IP> 1235
hi
我没有监听返回到客户端的 UDO 数据包。我正在运行tcpdump
以查看返回到客户端的路径上的源 IP 地址。
我想有一种更自动化的方式来进行设置。