一、Linux 中查看 IP 和端口的方法

在 Linux 系統(tǒng)下,有多種方法可以查看 IP 地址和端口號(hào)。以下將詳細(xì)介紹這些方法及其操作步驟。
1. 使用ip addr或ip addr show查看 IP 地址
執(zhí)行ip addr或ip addr show命令后,輸出會(huì)包含網(wǎng)絡(luò)接口名稱(chēng)、狀態(tài)、MTU、鏈路層地址、IPv4 和 IPv6 地址等豐富的信息。以博客園作者“南帝001”的實(shí)際操作為例,在命令執(zhí)行結(jié)果中會(huì)顯示類(lèi)似“1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff inet 10.10.11.92/24 brd 10.100.122.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fec7:7975/64 scope link valid_lft forever preferred_lft forever”的內(nèi)容。如果機(jī)器有多塊網(wǎng)卡,每塊網(wǎng)卡都會(huì)顯示一部分信息。其中,“l(fā)o”是回環(huán)地址,通常分配到 127.0.0.1 地址上,用于本機(jī)通信;“eth0”是網(wǎng)卡名,如果有多塊網(wǎng)卡,會(huì)有多個(gè)類(lèi)似名稱(chēng)?!發(fā)ink/ether”后面是 MAC 地址,一塊網(wǎng)卡對(duì)應(yīng)一個(gè)唯一的 MAC 地址。“inet”后面是網(wǎng)卡上綁定的 IP 地址,通常所說(shuō)的 IPv4 地址,一塊網(wǎng)卡可以綁定多個(gè) IP 地址。在綁定 IP 地址時(shí)需要注意,windows 主機(jī)會(huì)提示 IP 地址沖突,而 linux 主機(jī)無(wú)任何提示,所以在添加新的 IP 地址時(shí)務(wù)必檢測(cè)一下新地址是否和原有地址沖突,避免造成訪(fǎng)問(wèn)不可用。常用檢測(cè)命令有 ping 或 arping IP?!癷net6”則是 IPv6 地址。
2. 只查看 IP 地址的方法
對(duì)于只查看 IP 地址,可以使用以下命令:IPv4:ip addr | grep inet。IPv6 相關(guān)命令可根據(jù)具體需求進(jìn)行查找和使用。
3. 查看端口的方法
查看端口可使用ss -tuln或netstat -tuln命令。這些命令中的參數(shù)具有特定的含義:-t表示顯示 TCP 端口。-u表示顯示 UDP 端口。-l表示顯示監(jiān)聽(tīng)狀態(tài)的端口。-n表示不解析服務(wù)名稱(chēng),直接使用端口號(hào)顯示。例如,以“Linux常用命令——常用網(wǎng)絡(luò)命令【二】_-tuln 在 linux 是什么意思”中提到的為例,使用“netstat -tuln”可以查看本機(jī)開(kāi)啟的端口,輸出中“Proto”表示網(wǎng)絡(luò)連接的協(xié)議,一般是 TCP 協(xié)議或者 UDP 協(xié)議;“Recv-Q”表示接收到的數(shù)據(jù),已經(jīng)在本地的緩沖中但還沒(méi)有被進(jìn)程取走;“Send-Q”表示從本機(jī)發(fā)送但對(duì)方還沒(méi)有收到的數(shù)據(jù),依然在本地的緩沖中,一般是不具備 ACK 標(biāo)志的數(shù)據(jù)包;“Local Address”是本機(jī)的 IP 地址和端口號(hào);“Foreign Address”是遠(yuǎn)程主機(jī)的 IP 地址和端口號(hào);“State”表示狀態(tài),常見(jiàn)的狀態(tài)有 LISTEN(監(jiān)聽(tīng)狀態(tài),只有 TCP 協(xié)議需要監(jiān)聽(tīng),UDP 協(xié)議不需要監(jiān)聽(tīng))、ESTABLISHED(已經(jīng)建立連接的狀態(tài))等。此外,還有多種查看端口的方式,如:使用netstat命令時(shí),如果加上“-p”選項(xiàng),可以查看到是哪個(gè)程序占用了端口,并且可以知道這個(gè)程序的 PID。使用ss -tuln命令,與netstat -tuln類(lèi)似,能查看 TCP 和 UDP 監(jiān)聽(tīng)狀態(tài)的端口。使用lsof命令查看端口,如“l(fā)sof -i :端口號(hào)”可以查看特定端口的使用情況,輸出結(jié)果包含與該端口相關(guān)的進(jìn)程信息,能夠更加詳細(xì)地了解到端口的使用情況。綜上所述,在 Linux 系統(tǒng)中,通過(guò)多種命令和方法可以方便地查看 IP 地址和端口號(hào),這些方法在網(wǎng)絡(luò)管理、故障排除等方面都非常實(shí)用。
二、Linux 中連接 IP 和端口的方法
在 Linux 系統(tǒng)中,連接指定 IP 地址和端口可以使用 telnet 命令。以下是具體的步驟及操作:
1. 打開(kāi)終端/命令行界面
打開(kāi) Linux 系統(tǒng)終端或命令行界面是使用 telnet 命令的第一步。這為后續(xù)輸入命令連接到指定 IP 地址和端口提供了操作環(huán)境。
2. 輸入 telnet 命令
在終端中輸入 telnet 命令,格式為telnet [IP 地址] [端口]。例如,要連接 IP 地址為 192.168.1.1 的主機(jī)的 80 端口,可以輸入telnet 192.168.1.1 80。等待連接建立后,若連接成功,會(huì)顯示連接成功的提示信息,可以進(jìn)行后續(xù)操作,如輸入相關(guān)命令與目標(biāo) IP 地址的端口進(jìn)行交互。
3. 若要結(jié)束 telnet 連接
可以按下Ctrl + ],然后輸入quit。具體來(lái)說(shuō),當(dāng)按下Ctrl + ]后,會(huì)進(jìn)入 telnet 的命令交互狀態(tài),此時(shí)輸入quit即可退出 telnet 連接。此外,還有多種退出 telnet 連接的方式。比如可以使用 EOF 符號(hào),在 telnet 連接狀態(tài)下,輸入Ctrl + D即可發(fā)送 EOF 符號(hào)給遠(yuǎn)程服務(wù)器,從而退出 telnet 連接,這種方式適用于需要頻繁退出 telnet 連接的情況。也可以使用 telnet 的內(nèi)置命令,在 telnet 連接狀態(tài)下,輸入telnet> quit命令即可退出 telnet 連接,這種方式是 telnet 的內(nèi)置命令,可以保證在任何情況下都能夠正確退出 telnet 連接。如果由于網(wǎng)絡(luò)或者其他原因?qū)е?Telnet 連接出現(xiàn)問(wèn)題,無(wú)法正常退出,還可以使用強(qiáng)制退出的方法,在終端中輸入Ctrl + C組合鍵,即可強(qiáng)制中斷 Telnet 連接,但需要注意使用這種方式可能會(huì)導(dǎo)致連接異常關(guān)閉,可能會(huì)有數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
三、Linux 中限定連接 IP 和端口的方法
在 Linux 系統(tǒng)下,可以通過(guò)多種方法來(lái)限定連接 IP 和端口。
1. 限制端口
可以通過(guò)修改/etc/ssh/sshd_config文件并重啟sshd服務(wù)來(lái)實(shí)現(xiàn)限制端口。具體步驟如下:首先,使用命令行工具嘗試編輯/etc/ssh/sshd_config文件,可能會(huì)遇到系統(tǒng)不讓修改的情況,如提示“/etc/ssh/sshd_config E212: Can't open file for writing”。此時(shí)可以嘗試使用sudo gedit /etc/ssh/sshd_config命令,系統(tǒng)會(huì)提示輸入密碼,輸入密碼后即可進(jìn)行編輯。在文件中找到端口相關(guān)的配置項(xiàng),進(jìn)行端口的修改。修改完成后,保存退出。接著,重啟sshd服務(wù)使修改生效。同時(shí),可以使用命令判斷端口是否被占用。例如,可以使用netstat -anp |grep 端口號(hào)來(lái)查看指定端口是否被占用,如sudo netstat -anp |grep 3306。若出現(xiàn)相關(guān)信息,則表示該端口被占用。此外,還可以使用lsof和ss命令檢查端口占用情況。如lsof -i:<端口號(hào)>和ss -tuln | grep<端口號(hào)>,這些命令可以列出占用指定端口的進(jìn)程信息。
2. 限定 IP
可以通過(guò)編輯/etc/hosts.deny和/etc/hosts.allow文件來(lái)實(shí)現(xiàn)特定 IP 或網(wǎng)段的連接限制。編輯/etc/hosts.deny文件,在其中可以加入特定的規(guī)則來(lái)限制 IP 連接。例如,可以加入sshd:ALL來(lái)限制所有 IP 的 SSH 連接;也可以加入特定的 IP 限制,如sshd:192.168.0.111限制特定 IP 的 SSH 連接;或者加入網(wǎng)段限制,如sshd:192.168.0.*限制特定網(wǎng)段的連接。編輯/etc/hosts.allow文件進(jìn)行相應(yīng)的允許設(shè)置。例如,sshd:192.168.0.123:allow允許特定 IP 的連接;sshd:192.168.0.*:allow允許特定網(wǎng)段的連接;或者直接加入 IP 或網(wǎng)段,如sshd:192.168.0.123、sshd:192.168.0.*。當(dāng)hosts.allow和hosts.deny有 IP 地址沖突時(shí),以hosts.allow的設(shè)置為準(zhǔn)。一般情況下,hosts.allow和hosts.deny結(jié)合起來(lái)一起使用,才能保證更好的安全性。即在hosts.deny文件中寫(xiě)入“all:all:deny”,禁止一切 IP 地址遠(yuǎn)程訪(fǎng)問(wèn)所有資源,然后在hosts.allow文件中添加特定的 IP 地址允許遠(yuǎn)程訪(fǎng)問(wèn)資源即可。多個(gè) IP 地址或 IP 地址段設(shè)置相同時(shí),可以用逗號(hào)分割開(kāi)來(lái)寫(xiě)在一行。
四、Linux 中訪(fǎng)問(wèn)特定 IP 和端口的方法
在 Linux 系統(tǒng)中,我們常常需要對(duì)特定 IP 和端口進(jìn)行訪(fǎng)問(wèn)控制,以確保系統(tǒng)的安全性和穩(wěn)定性。下面將介紹給特定 IP 段開(kāi)放特定端口以及使用防火墻規(guī)則限制訪(fǎng)問(wèn)的方法。
關(guān)閉端口
可以使用firewall-cmd --zone=public --remove-port=3306/tcp --permanent命令關(guān)閉端口。例如,如果我們想要關(guān)閉 3306 端口,以防止未經(jīng)授權(quán)的訪(fǎng)問(wèn),可以執(zhí)行這個(gè)命令。執(zhí)行后,所有 IP 地址都將無(wú)法訪(fǎng)問(wèn)該端口。
開(kāi)放端口給特定 IP 段
如果我們想要允許特定 IP 段訪(fǎng)問(wèn)特定端口,可以使用firewall-cmd --permanent --add-rich-rule=\"rule family=\"ipv4\" source address=\"192.168.0.0/24\" port protocol=\"tcp\" port=\"3306\" accept\"命令。這個(gè)命令允許 IP 地址在 192.168.0.0/24 網(wǎng)段的主機(jī)訪(fǎng)問(wèn) 3306 端口。其中,192.168.0.0/24 表示子網(wǎng)掩碼為 255.255.255.0 的 IP 地址范圍。
重新載入防火墻設(shè)置使設(shè)置生效
執(zhí)行完關(guān)閉或開(kāi)放端口的命令后,需要重新載入防火墻設(shè)置才能使設(shè)置生效??梢允褂胒irewall-cmd --reload命令來(lái)實(shí)現(xiàn)。這個(gè)命令會(huì)重新加載防火墻規(guī)則,使新的設(shè)置立即生效。同時(shí),我們還可以查看和刪除已設(shè)置的規(guī)則。查看已設(shè)置規(guī)則可以使用firewall-cmd --zone=public --list-rich-rules命令。如果我們想要?jiǎng)h除已設(shè)置的規(guī)則,可以使用firewall-cmd --permanent --remove-rich-rule=\"rule family=\"ipv4\" source address=\"192.168.0.0/24\" port protocol=\"tcp\" port=\"3306\" accept\"命令,然后再執(zhí)行firewall-cmd --reload命令使刪除操作生效。