linux增加端口失败,端口没被占用,怎么会bind失败呢?
生活随笔
收集整理的這篇文章主要介紹了
linux增加端口失败,端口没被占用,怎么会bind失败呢?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天在一個服務器上部署一個webserver的時候,
提示我bind端口失敗,
我習慣性的用netstat看了下,沒有被占用啊!
把問題分享出來后,給力的同事們搜索到了ip_local_port_range這個東西
這個東西對應的是/proc/sys/net/ipv4/ip_local_port_range文件
我打開后發現它的內容是:
1024 65000
然后我查了一下,這兩個數字就是規定了一個端口范圍
而這個文件規定了所謂的“臨時端口”的可用端口范圍
比如一個程序通過socket請求了本機外的一個服務,
以為內socket的要求是通信的雙發都是一個ip加一個端口的,
我們在請求時,只會指定要請求的ip和端口,并沒有指定本機的,
那這時按照Linux的策略,是自動分配一個臨時端口的
而這個臨時端口可取的范圍就是這個ip_local_port_range
ip_local_port_range還有一個隱藏的屬性,就是這個臨時端口范圍內的端口,不能被bind
這也就是我一開始遇到的問題的原因了
當我想編輯這個文件來修改范圍時,發現修改后時無法保存的
然后搜索了一下,說要永久修改,可以:
vim /etc/sysctl.conf
修改其中的net.ipv4.ip_local_port_range
保存后執行sysctl -p讓其生效
總結
以上是生活随笔為你收集整理的linux增加端口失败,端口没被占用,怎么会bind失败呢?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言数据结构之管道浅析
- 下一篇: Google Desktop 果然