Linux 绑定非本机 IP – net.ipv4.ip_nonlocal_bind

在 Linux 如果需要绑定本机不存在的 IP, 例如在 HAproxy 及 Nginx 可能会用到, 需要开启 Kernel 的参数 net.ipv4.ip_nonlocal_bind.

ipv4 及 ipv6 的 ip_nonlocal_bind 参数默认是关闭, 要检视目前的状态, 可以用以下指令:

# sysctl net.ipv4.ip_nonlocal_bind
# sysctl net.ipv6.ip_nonlocal_bind

如果上面两个指令的回传是 0, 那便表示参数是关闭, 要开启可以执行以下指令:


ipv4:

$ sudo sysctl -w net.ipv4.ip_nonlocal_bind=1

ipv6:

$ sudo sysctl -w net.ipv6.ip_nonlocal_bind=1

以上指令会让新设定立即生效, 要下次开机也自动开启以上参数, 执行以下指令:

ipv4:

$ sudo echo net.ipv4.ip_nonlocal_bind=1 >> /etc/sysctl.conf

ipv6:

$ sudo echo net.ipv6.ip_nonlocal_bind=1 >> /etc/sysctl.conf

Leave a Reply