我有两台电脑使用 VRRP 实现冗余。所以每台 PC (Linux) 都有一个物理 IP 地址和一个虚拟 IP 地址。
我有一个带有 UDP 协议(protocol)的客户端/服务器架构的软件 (C++)。该软件在“0.0.0.0”上绑定(bind)监听套接字,每次需要向对方发送一些数据时使用一个新的套接字。使用 wireshark,我看到当它发送数据时,源 IP 是物理 IP... 如何将发送套接字的源地址设置为虚拟套接字??
注意:在 ifconfig 中我只看到带有物理地址的 eth0...
最佳答案
当内核需要通过套接字发送一些东西时,它会执行这些步骤
- 如果套接字已绑定(bind),则使用该源地址
- 是套接字未绑定(bind),它四处寻找接口(interface)并选择一个源地址
所以你需要 bind(2)
你的套接字到你想要的地址。更多信息: "Source Address Selection" in chapter "IP Routing" of "Guide to IP Layer Network Administration with Linux" .
关于c++ - 使用UDP套接字发送时如何设置源地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5755265/