runsisi's

technical notes

socket bind 不存在的 IP 地址

2019-02-11 runsisi#linux

在 socket 编程时,绑定不存在 IP 地址会报错,但存在系统选项 ip_nonlocal_bind 可以控制这种行为,或者使用独立的 socket 选项 IP_FREEBIND 进行控制。

~# sysctl -a | grep ip_nonlocal_bind
net.ipv4.ip_nonlocal_bind = 0
net.ipv6.ip_nonlocal_bind = 0
/proc/sys/net/ipv4/ip_nonlocal_bind
/proc/sys/net/ipv6/ip_nonlocal_bind

socket 选项

src/core: Added IP_FREEBIND flag durring socket initialization

https://github.com/kamailio/kamailio/pull/1104

绑定不存在的地址在通过浮动 IP 实现 HA 这种场景是必须的。