在 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
# 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