自訂服務需綁定特定低號埠 (如 8370) 卻被 Nginx/Node.js 等高併發服務佔用臨時埠。調整 /proc/sys/net/ipv4/ip_local_port_range 將臨時埠分配範圍上移,避免衝突。本文說明臨時修改、永久生效、驗證指令與生產環境評估建議。

Address already in useecho '40000 65000' > /proc/sys/net/ipv4/ip_local_port_range
echo 'net.ipv4.ip_local_port_range = 40000 65000' > /etc/sysctl.d/99-local-port-range.conf
sysctl -p /etc/sysctl.d/99-local-port-range.conf
cat /proc/sys/net/ipv4/ip_local_port_range
sysctl net.ipv4.ip_local_port_range
| 場景 | 建議範圍 | 說明 |
|---|---|---|
| 一般伺服器 | 32768 60999 (預設) | 約 28k 埠,足應付多數場景 |
| 高併發短連線 | 20000 65000 | 擴大池子,但 20000 以下可能衝突系統服務 |
| 需保留低號埠給固定服務 | 40000 65000 | 騰出 1024-39999 給固定綁定服務 |
注意:範圍需在 1024-65535 之間;1024 以下為知名埠需 root 權限綁定,不建議納入臨時埠範圍。
# 查看 TIME_WAIT 連線數 (大量短連線特徵)
netstat -n | grep TIME_WAIT | wc -l
# 查看當前埠使用分布
ss -tan | awk '{print $4}' | cut -d: -f2 | sort -n | uniq -c | sort -rn | head -20
net.ipv4.tcp_tw_reuse = 1、net.ipv4.tcp_fin_timeout = 15 加速 TIME_WAIT 回收/etc/rc.local 或 sysctl.d) 確保重開機生效