此篇文章瀏覽量:
2,071
前言
有的時候你得知某個網域(以 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
…