[Linux] 如何關閉 ping response

前言

有的時候你得知某個網域(以 uivacation.com 為例),然後你想使用 ping 的方式,然看看該網域所對應的 IP 是否有回應,這時你會想執行以下指令:

$ ping uivacation.com

// 會取得以下結果,表示該主機(139.59.241.74)有回應 ping 的訊息,並可得知 IP 以及封包來回傳送的時間:
PING uivacation.com (139.59.241.74): 56 data bytes
64 bytes from 139.59.241.74: icmp_seq=0 ttl=51 time=85.679 ms
64 bytes from 139.59.241.74: icmp_seq=1 ttl=51 time=104.005 ms
…

但身為系統管理者,有的時候其實我們並不想讓別人太輕易得知以上的結果,所以會想要將 ping 的 response 給關閉,那該如何做呢?

什麼是 ping?

ping 是一個指令,用來傳送一個 ICMP 封包至某主機,然後確認該主機的運作在網路上是否有正常啟動。

以 CentOS 7 為例,關閉 ping response

執行以下指令,即可完成:

// 將 icmp_echo_ignore_all 檔案,僅輸入 1 這個值。
$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

若要回復讓 server 可以對 ping 有所回應的話,就執行以下指令即可:

// 將 icmp_echo_ignore_all 檔案,僅輸入 0 這個值。
$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

若想讓以上的設定永久生效的話,開啟 /etc/sysctl.conf 檔案,並於檔案的最下方,新增以下這行並重新開機即可:

net.ipv4.conf.icmp_echo_ignore_all = 1

這時我再執行以下的 ping 指令,server 就不會再對 ping 指令有 response 了:

$ ping uivacation.com

// server 就不會對 ping 指令有 response 了。
PING uivacation.com (139.59.241.74): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
…

其它參考資料:

Disable ping response

UNIX ping Command Examples

您可在此處留言

avatar

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

  Subscribe  
Notify of