Linux網(wǎng)絡(luò)配置與端口監(jiān)聽的實(shí)戰(zhàn)指南
引言
做開發(fā)和運(yùn)維的同學(xué),幾乎每天都會(huì)和網(wǎng)絡(luò)打交道:部署服務(wù)后端口不通、服務(wù)器IP配置異常、接口調(diào)用失敗、防火墻攔截請(qǐng)求……這些問題看似棘手,其實(shí)只要掌握核心的網(wǎng)絡(luò)配置與端口監(jiān)聽命令,就能快速排查解決。本文匯總了IP查看、DNS配置、端口監(jiān)聽、連通性測(cè)試、防火墻放行的實(shí)操技巧,全程干貨無廢話,新手可直接抄作業(yè),老鳥可查漏補(bǔ)缺,建議收藏備用!
一、基礎(chǔ)網(wǎng)絡(luò)配置:IP地址與DNS配置(必學(xué))
無論是開發(fā)環(huán)境還是生產(chǎn)環(huán)境,首先要搞定服務(wù)器的基礎(chǔ)網(wǎng)絡(luò)——知道自己的IP、能正常解析域名,這是所有網(wǎng)絡(luò)操作的前提。這里重點(diǎn)講Linux系統(tǒng)(CentOS/Ubuntu通用)的實(shí)操命令,Windows可自行對(duì)應(yīng)類比。
1.1 查看IP地址(2種常用方式)
最常用的兩個(gè)命令:ip addr 和 ifconfig,推薦優(yōu)先用 ip addr(ifconfig在部分新系統(tǒng)中已被廢棄)。
實(shí)操演示(代碼塊可直接復(fù)制執(zhí)行)
# 方式1:推薦,查看所有網(wǎng)卡的IP信息(包括IPv4、IPv6) ip addr # 方式2:兼容舊系統(tǒng),查看IP(部分系統(tǒng)需先安裝net-tools工具) ifconfig # 補(bǔ)充:只查看指定網(wǎng)卡(比如eth0、ens33,根據(jù)自己的網(wǎng)卡名修改) ip addr show eth0
關(guān)鍵解讀(避坑重點(diǎn))
- 執(zhí)行
ip addr后,標(biāo)注「inet」的就是IPv4地址(比如 192.168.1.100/24),這是我們?nèi)粘S玫腎P; - 標(biāo)注「inet6」的是IPv6地址,日常開發(fā)中很少用到,可暫時(shí)忽略;
- 若提示「ifconfig: command not found」,說明系統(tǒng)沒有net-tools工具,執(zhí)行
yum install net-tools -y(CentOS)或apt install net-tools -y(Ubuntu)即可安裝。
1.2 DNS配置(解決“域名解析失敗”問題)
很多時(shí)候,我們能ping通IP,但ping不通域名(比如 ping baidu.com 失?。?,大概率是DNS配置有問題。DNS的作用就是將域名(如baidu.com)解析為IP地址,方便我們?cè)L問。
實(shí)操演示(修改DNS配置)
# 1. 編輯DNS配置文件(所有系統(tǒng)通用,需root權(quán)限) vim /etc/resolv.conf # 2. 在文件中添加以下內(nèi)容(添加常用的公共DNS,二選一即可) nameserver 8.8.8.8 # 谷歌公共DNS(全球通用,速度快) nameserver 114.114.114.114 # 國內(nèi)公共DNS(適合國內(nèi)服務(wù)器,穩(wěn)定性高) # 3. 保存退出(vim操作:按ESC,輸入:wq,回車) # 補(bǔ)充:配置后立即生效,無需重啟網(wǎng)絡(luò)
注意事項(xiàng)
/etc/resolv.conf文件默認(rèn)可能為空,直接添加上述兩行即可;- 若配置后仍無法解析域名,可重啟網(wǎng)絡(luò)服務(wù):
systemctl restart network(CentOS)或systemctl restart networking(Ubuntu); - 避免同時(shí)添加過多DNS服務(wù)器,2個(gè)足夠,多了可能會(huì)影響解析速度。
小貼士:這里建議點(diǎn)贊收藏,下次遇到“域名解析失敗”,直接翻這部分內(nèi)容,不用再到處查資料~
二、端口監(jiān)聽:netstat與ss命令詳解(核心)
部署服務(wù)后(比如Tomcat、Nginx、Java服務(wù)),最常遇到的問題就是“端口占用”“服務(wù)啟動(dòng)了但端口沒監(jiān)聽”。這時(shí)候就需要用端口監(jiān)聽命令,查看端口的占用情況、監(jiān)聽狀態(tài)。
2.1 兩個(gè)核心命令對(duì)比(選對(duì)命令效率翻倍)
| 命令 | 特點(diǎn) | 適用場景 |
|---|---|---|
| netstat | 功能全面,但效率較低 | 兼容舊系統(tǒng)、需要查看詳細(xì)的進(jìn)程信息 |
| ss | 輕量快速,占用資源少 | 新系統(tǒng)優(yōu)先用、大并發(fā)場景(比如服務(wù)器端口較多時(shí)) |
2.2 實(shí)操命令(重點(diǎn)掌握,直接抄作業(yè))
(1)查看所有端口(監(jiān)聽+未監(jiān)聽)
# netstat 方式(需安裝net-tools工具) netstat -tulnp # ss 方式(系統(tǒng)自帶,推薦) ss -tulnp
(2)查看指定端口(最常用,比如查看8080端口占用)
# 查看8080端口的占用情況(netstat) netstat -tulnp | grep 8080 # 查看8080端口的占用情況(ss,推薦) ss -tulnp | grep 8080
(3)命令參數(shù)解讀(新手必看)
- t:查看TCP端口(日常開發(fā)中最常用,比如HTTP、HTTPS服務(wù));
- u:查看UDP端口(較少用,比如廣播、視頻流相關(guān));
- l:只查看“正在監(jiān)聽”的端口(服務(wù)啟動(dòng)成功后,端口會(huì)處于監(jiān)聽狀態(tài));
- n:以數(shù)字形式顯示IP和端口(不顯示域名、服務(wù)名,速度更快);
- p:顯示占用該端口的進(jìn)程ID(PID)和進(jìn)程名(比如java、nginx),方便殺死占用端口的進(jìn)程。
(4)避坑案例
比如啟動(dòng)Tomcat時(shí),提示「Address already in use」(端口已被占用),執(zhí)行以下命令即可解決:
# 1. 查看8080端口的占用進(jìn)程(假設(shè)Tomcat用8080端口)
ss -tulnp | grep 8080
# 輸出示例:tcp LISTEN 0 100 [::]:8080 [::]:* users:(("java",pid=1234,fd=52))
# 2. 殺死占用端口的進(jìn)程(PID為1234,根據(jù)自己的輸出修改)
kill -9 1234
# 3. 重新啟動(dòng)Tomcat,即可正常啟動(dòng)
三、連通性測(cè)試:ping、telnet、curl(排障必備)
服務(wù)部署成功、端口也在監(jiān)聽,但別人就是訪問不了?這時(shí)候就需要用連通性測(cè)試命令,排查是本地問題、網(wǎng)絡(luò)問題,還是服務(wù)問題。
3.1 ping:測(cè)試網(wǎng)絡(luò)是否通暢(最基礎(chǔ))
ping 命令用于測(cè)試兩個(gè)主機(jī)之間的網(wǎng)絡(luò)連通性,簡單來說:能ping通,說明網(wǎng)絡(luò)是通的;ping不通,說明網(wǎng)絡(luò)有問題(比如防火墻攔截、路由異常)。
實(shí)操演示
# 測(cè)試與百度的網(wǎng)絡(luò)連通性(測(cè)試外網(wǎng)是否通暢) ping baidu.com # 測(cè)試與內(nèi)網(wǎng)服務(wù)器的連通性(比如測(cè)試與192.168.1.200的連通性) ping 192.168.1.200 # 補(bǔ)充:指定ping的次數(shù)(默認(rèn)無限次,Ctrl+C終止) ping -c 4 baidu.com # 只ping4次,適合腳本中使用
關(guān)鍵解讀
- 若輸出「64 bytes from xxx (xxx.xxx.xxx.xxx): icmp_seq=1 ttl=64 time=10.2 ms」,說明ping通了;
- 若輸出「Request timeout for icmp_seq 0」,說明ping不通,需排查防火墻、路由等問題;
- 注意:部分服務(wù)器會(huì)禁用ping(出于安全考慮),此時(shí)ping不通不代表網(wǎng)絡(luò)有問題,可換telnet或curl測(cè)試。
3.2 telnet:測(cè)試端口是否可訪問(重點(diǎn))
ping 只能測(cè)試網(wǎng)絡(luò)通暢,但不能測(cè)試端口是否可訪問。比如服務(wù)器網(wǎng)絡(luò)通了,但8080端口被防火墻攔截,ping能通,但telnet不通。
實(shí)操演示
# 測(cè)試百度的80端口(HTTP端口)是否可訪問 telnet baidu.com 80 # 測(cè)試內(nèi)網(wǎng)服務(wù)器的8080端口是否可訪問 telnet 192.168.1.200 8080
關(guān)鍵解讀
- 若連接成功,會(huì)顯示「Connected to baidu.com」,說明端口可訪問;
- 若連接失敗,會(huì)顯示「Connection refused」(端口未監(jiān)聽)或「Connection timed out」(端口被防火墻攔截);
- 若提示「telnet: command not found」,執(zhí)行
yum install telnet -y(CentOS)或apt install telnet -y(Ubuntu)安裝即可。
3.3 curl:測(cè)試接口是否可正常調(diào)用(開發(fā)常用)
curl 命令比telnet更強(qiáng)大,不僅能測(cè)試端口,還能發(fā)送HTTP請(qǐng)求,測(cè)試接口是否能正常返回?cái)?shù)據(jù)(適合Web服務(wù)、接口開發(fā))。
實(shí)操演示
# 1. 測(cè)試HTTP接口(比如測(cè)試本地Tomcat的默認(rèn)接口) curl http://localhost:8080 # 2. 測(cè)試指定接口(比如GET請(qǐng)求接口) curl http://192.168.1.200:8080/api/user/list # 3. 查看請(qǐng)求詳情(排障時(shí)常用,顯示請(qǐng)求頭、響應(yīng)頭) curl -v http://baidu.com
關(guān)鍵解讀
- 若返回接口正常響應(yīng)數(shù)據(jù)(比如JSON格式),說明接口可正常調(diào)用;
- 若返回「Connection refused」,說明端口未監(jiān)聽;
- 若返回「404 Not Found」,說明端口監(jiān)聽正常,但接口路徑錯(cuò)誤;
- 若返回「500 Internal Server Error」,說明接口代碼有問題,需排查服務(wù)端代碼。
四、防火墻操作:iptables與firewalld放行端口(必懂)
很多時(shí)候,端口監(jiān)聽正常、網(wǎng)絡(luò)也通暢,但外部就是訪問不了,核心原因是「防火墻攔截了端口」。這里講解Linux系統(tǒng)中兩種常用的防火墻:iptables(舊系統(tǒng)常用)和firewalld(新系統(tǒng)常用)。
4.1 firewalld操作(CentOS 7+、Ubuntu 18+ 推薦)
firewalld是新系統(tǒng)默認(rèn)的防火墻,操作更簡單,推薦優(yōu)先使用。
實(shí)操演示(放行端口)
# 1. 查看防火墻狀態(tài)(是否開啟) systemctl status firewalld # 2. 若防火墻未開啟,啟動(dòng)防火墻(可選) systemctl start firewalld # 3. 放行指定端口(比如8080端口,永久生效) firewall-cmd --permanent --add-port=8080/tcp # 4. 放行端口范圍(比如8000-9000端口,可選) firewall-cmd --permanent --add-port=8000-9000/tcp # 5. 重新加載防火墻(使配置生效,必須執(zhí)行) firewall-cmd --reload # 6. 查看已放行的端口(驗(yàn)證配置) firewall-cmd --permanent --list-ports
補(bǔ)充操作(常用)
# 1. 移除已放行的端口(比如移除8080端口) firewall-cmd --permanent --remove-port=8080/tcp firewall-cmd --reload # 2. 關(guān)閉防火墻(測(cè)試時(shí)可用,不推薦生產(chǎn)環(huán)境) systemctl stop firewalld # 3. 禁止防火墻開機(jī)自啟(不推薦生產(chǎn)環(huán)境) systemctl disable firewalld
4.2 iptables操作(舊系統(tǒng)兼容)
iptables是舊系統(tǒng)(比如CentOS 6)的防火墻,操作相對(duì)復(fù)雜,適合兼容舊系統(tǒng)時(shí)使用。
實(shí)操演示(放行端口)
# 1. 查看iptables規(guī)則(查看已放行的端口) iptables -L -n # 2. 放行指定端口(比如8080端口,臨時(shí)生效,重啟后失效) iptables -A INPUT -p tcp --dport 8080 -j ACCEPT # 3. 放行指定端口(永久生效,需保存配置) iptables -A INPUT -p tcp --dport 8080 -j ACCEPT service iptables save # 保存配置 service iptables restart # 重啟iptables # 4. 移除已放行的端口(比如移除8080端口) iptables -D INPUT -p tcp --dport 8080 -j ACCEPT service iptables save service iptables restart
注意事項(xiàng)
- 生產(chǎn)環(huán)境中,不建議直接關(guān)閉防火墻(存在安全風(fēng)險(xiǎn)),最好的方式是「放行需要用到的端口」;
- 若服務(wù)器有外網(wǎng)IP,建議只放行必要的端口(比如80、443、8080),避免不必要的端口 暴露在外網(wǎng)。
五、總結(jié)
本文匯總了Linux網(wǎng)絡(luò)配置與端口監(jiān)聽的核心實(shí)操技巧,從基礎(chǔ)的IP查看、DNS配置,到核心的端口監(jiān)聽(netstat/ss)、連通性測(cè)試(ping/telnet/curl),再到防火墻放行端口(firewalld/iptables),覆蓋了開發(fā)、運(yùn)維日常排障的90%場景。
所有命令均經(jīng)過實(shí)操驗(yàn)證,新手可直接復(fù)制執(zhí)行,老鳥可查漏補(bǔ)缺。網(wǎng)絡(luò)問題看似復(fù)雜,其實(shí)只要掌握這些基礎(chǔ)命令,就能快速定位并解決問題。
以上就是Linux網(wǎng)絡(luò)配置與端口監(jiān)聽的實(shí)戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于Linux網(wǎng)絡(luò)配置與端口監(jiān)聽的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在Linux中查找命令的執(zhí)行時(shí)間的幾種方法小結(jié)
在Linux系統(tǒng)中,了解命令的執(zhí)行時(shí)間對(duì)于優(yōu)化系統(tǒng)性能和提高效率至關(guān)重要,本文將介紹幾種方法來查找命令的執(zhí)行時(shí)間,包括內(nèi)置的time命令、GNU time工具、strace以及perf工具,需要的朋友可以參考下2024-05-05
詳解Apache配置多個(gè)監(jiān)聽端口和不同的網(wǎng)站目錄
這篇文章主要介紹了詳解Apache配置多個(gè)監(jiān)聽端口和不同的網(wǎng)站目錄的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的方法,需要的朋友可以參考下2017-10-10
Linux下gdb調(diào)試打印數(shù)組元素以及說明
這篇文章主要介紹了Linux下gdb調(diào)試打印數(shù)組元素以及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Linux進(jìn)程池實(shí)現(xiàn)的詳細(xì)指南
如果你了解過STL的底層設(shè)計(jì),你會(huì)發(fā)現(xiàn)在其中會(huì)有一個(gè)叫做內(nèi)存池的設(shè)計(jì),其作用就是先申請(qǐng)出一片空間,如果后續(xù)你需要對(duì)你的容器進(jìn)行擴(kuò)容,所擴(kuò)展的空間就從內(nèi)存池里取的,本文給大家介紹了Linux進(jìn)程池實(shí)現(xiàn)的詳細(xì)指南,需要的朋友可以參考下2024-11-11

