【Linux】pingの使い方!オプションでポート指定して疎通確認を行う

パソコン教室

Linuxサーバーでpingコマンドの使い方についてまとめます。

相手先のポートが開いているか確認する為に、ポートを指定してPingを行いたい。

Pingの回数を指定して行いたい。などと言った事もあると思います。

Pingの基礎のやり方からオプションまでを、現役エンジニアの筆者が実例を踏まえて説明します。

筆者はWindowsサーバーやLinuxサーバーの運用構築を11年間以上おこなってきました。その経験を元に知識を公開していきます!

LinuxサーバーPingについて全て理解でき、効率よく疎通確認などが出来る様になります。

目次

Linuxサーバーでpingの使い方

疎通

Linuxサーバーでインターネットの接続や他のサーバーや端末などの疎通確認する場合に、Pingコマンドを使用します。

その他のコマンドでインターネット接続の確認する方法は、以下の記事を参照下さい。

Pingの使い方については、pingコマンドの後にIPアドレスかURLを指定します。

ping IPアドレスもしくはURL

これで指定したIPアドレスかURLに疎通性があるか確認できます。

停止する場合はCtrl+Cで可能です。

Linuxサーバーでpingのオプション

オプション

Linuxサーバーでpingのオプション一覧まとめ

pingの使い方で紹介したものは基本で、オプションも使用する事が可能です。

オプション効果
-c 回数指定した回数だけPingパケットを送信
-i 秒数指定した秒数だけ間隔を空けてPingパケット送信
-sPingのパケットサイズを指定する
-qPingの統計のみ表示する
-w 秒数Pingを終了する時間を指定する
-4 IPv4アドレスIPv4でPingを行う
-6 IPv6アドレスIPv6でPingを行う
-pパターンを指定してPingパケット送信
-tTTLを指定してPingパケット送信
LinuxサーバでのPingコマンドオプション一覧

指定した回数だけPingパケットを送信

LinuxサーバーのPingコマンドは永遠に打ち続けます。cオプションでPingの回数を指定できます。

[root@localhost ~]# ping -c 4 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=13.7 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=7.90 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=7.19 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=18.1 ms

--- 192.168.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3022ms
rtt min/avg/max/mdev = 7.196/11.744/18.147/4.482 ms

4回のPingで終了しています。

指定した秒数だけ間隔を空けてPingパケット送信

LinuxサーバーのPingコマンドは1秒ごとにPingを打ちます。iオプションでPingの間隔を指定できます。

[root@localhost ~]# ping -c 4 -i 3 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=15.4 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=9.11 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=3.02 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=4.79 ms

--- 192.168.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 9029ms
rtt min/avg/max/mdev = 3.026/8.085/15.405/4.771 ms

1秒から3秒間隔でPingを打っていますので、「time」欄が先程の3倍になっています。

Pingのパケットサイズを指定する

LinuxサーバーのPingコマンドは64バイトのPingを打ちます。sオプションでPingのバイト数を指定できます。

※8バイト+指定したバイト数になります。

[root@localhost ~]# ping -c 4 -s 8 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 8(36) bytes of data.
16 bytes from 192.168.0.1: icmp_seq=1 ttl=64
16 bytes from 192.168.0.1: icmp_seq=2 ttl=64
16 bytes from 192.168.0.1: icmp_seq=3 ttl=64
16 bytes from 192.168.0.1: icmp_seq=4 ttl=64

--- 192.168.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3017ms

サイズを8バイト指定しましたので8+8で16バイトのPingを打っています。「64 bytes」の表記が「16 bytes」になりました。

※バイトが小さすぎてtimeの欄がありません。24バイト以上になるとtimeの欄が現れます。

Pingの統計のみ表示する

LinuxサーバーのPingコマンドは1つのPingごとの結果の後に統計が表示されます。qオプションで統計のみ表示できます。

[root@localhost ~]# ping -c 4 -q 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.

--- 192.168.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 3.213/6.845/11.182/3.370 ms

Ping単体の結果がなく統計のみ表示されています。

Pingを終了する時間を指定する

LinuxサーバーのPingコマンドはCtrl+Cで終了するか、cオプションで指定した回数が終了するまでPingします。wオプションで終了時間を秒数で指定できます。

[root@localhost ~]# ping -c 4 -w 3 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=12.8 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=17.4 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=7.42 ms

--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2014ms
rtt min/avg/max/mdev = 7.424/12.586/17.477/4.108 ms

Pingの回数を4回と指定していますが、wオプションで3秒と指定しているので3回で終了しています。

Ping1回はデフォルト1秒なので3秒で終了している事になります。

パターンを指定してPingパケット送信

Pingコマンドのpオプションで、指定した16進数のデータを送信する事が可能です。

[root@localhost ~]# ping -c 4 -p 4F3B2A 192.168.0.1
PATTERN: 0x4f3b2a
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=11.2 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=7.50 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=5.81 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=3.11 ms

--- 192.168.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3020ms
rtt min/avg/max/mdev = 3.111/6.908/11.203/2.933 ms

PATTERNの欄が追加されて、指定したデータをPingしています。

パターンの前の「0x」は16進数を表します。

TTLを指定してPingパケット送信

Pingコマンドのtオプションで、指定したTTLでPingする事が可能です。

[root@localhost ~]# ping -c 3 -t 3 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=15.8 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=8.30 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=5.39 ms

--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2009ms
rtt min/avg/max/mdev = 5.396/9.850/15.850/4.406 ms

一つ先のルータにはPingが疎通していますが、、、

[root@localhost ~]# ping -c 3 -t 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 10.1.193.4 icmp_seq=1 Time to live exceeded
From 10.1.193.4 icmp_seq=2 Time to live exceeded
From 10.1.193.4 icmp_seq=3 Time to live exceeded

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2011ms

グーグルのDNSには「Time to live exceeded」となり、Ping疎通できませんでした。

指定したTTL以上離れている機器にはPing疎通できません。TTLより下の機器にはPing疎通できました。

pingでポートを指定して疎通確認する方法

ポート指定して疎通
疑問を持つエンジニア

pingでポートを指定して送信したいです。

相手先のサーバーでポートが開いているか確認する為に、ポートを指定してPingを行いたいと思った事はないでしょうか?

自分自身のLinuxサーバーのポートが開いているか確認するやり方は以下の記事を参照してください。

しかしデフォルトのPingコマンドにはポート指定するオプションはないです。

そこでnpingコマンドを使用します。

npingコマンドがない場合は、以下の記事を参照してパッケージをインストールします。

npingでポートを指定して疎通確認するコマンドは以下となります。

nping --tcp 相手先IPアドレス -p ボート番号

npingの実行結果です。

[root@localhost ~]# nping --tcp 192.168.0.1 -p 8080

Starting Nping 0.6.40 ( http://nmap.org/nping ) at 2024-05-06 14:35 JST
SENT (0.0036s) TCP 192.168.0.4:51925 > 192.168.0.1:8080 S ttl=64 id=423 iplen=40  seq=131012984 win=1480
RCVD (0.2058s) TCP 192.168.0.1:8080 > 192.168.0.4:51925 RA ttl=64 id=38056 iplen=40  seq=0 win=0
SENT (1.0058s) TCP 192.168.0.4:51925 > 192.168.0.1:8080 S ttl=64 id=423 iplen=40  seq=131012984 win=1480
RCVD (1.2119s) TCP 192.168.0.1:8080 > 192.168.0.4:51925 RA ttl=64 id=38113 iplen=40  seq=0 win=0
SENT (2.0085s) TCP 192.168.0.4:51925 > 192.168.0.1:8080 S ttl=64 id=423 iplen=40  seq=131012984 win=1480
RCVD (2.0209s) TCP 192.168.0.1:8080 > 192.168.0.4:51925 RA ttl=64 id=38200 iplen=40  seq=0 win=0
SENT (3.0107s) TCP 192.168.0.4:51925 > 192.168.0.1:8080 S ttl=64 id=423 iplen=40  seq=131012984 win=1480
RCVD (3.0293s) TCP 192.168.0.1:8080 > 192.168.0.4:51925 RA ttl=64 id=38201 iplen=40  seq=0 win=0
SENT (4.0166s) TCP 192.168.0.4:51925 > 192.168.0.1:8080 S ttl=64 id=423 iplen=40  seq=131012984 win=1480
RCVD (4.0369s) TCP 192.168.0.1:8080 > 192.168.0.4:51925 RA ttl=64 id=38240 iplen=40  seq=0 win=0

Max rtt: 205.800ms | Min rtt: 12.204ms | Avg rtt: 91.705ms
Raw packets sent: 5 (200B) | Rcvd: 5 (230B) | Lost: 0 (0.00%)
Nping done: 1 IP address pinged in 4.04 seconds
疑問を持つエンジニア

結果がよくわかりません。。。

宛先のポートが開いているか調査したい場合は、Pingではなくnmapを使用しましょう!

nmapでポートが開いているか確認するコマンドは以下です。

nmap -p ポート番号 宛先IP

では実際ポートが開いているか確認してみます。

[root@localhost ~]# nmap -p 22 192.168.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2024-05-06 14:43 JST
Nmap scan report for dsldevice.lan (192.168.0.1)
Host is up (0.0081s latency).
PORT   STATE  SERVICE
22/tcp closed ssh
MAC Address: E4:DA:DF:CE:C4:88 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.56 seconds

22番ポートのsshは「closed」となっており、閉じています。

[root@localhost ~]# nmap -p 80 192.168.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2024-05-06 14:44 JST
Nmap scan report for dsldevice.lan (192.168.0.1)
Host is up (0.0046s latency).
PORT   STATE SERVICE
80/tcp open  http
MAC Address: E4:DA:DF:CE:C4:88 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.51 seconds

80番ポートのhttpは「open」となっており、開いています。

pingでポートを指定して疎通確認する方法はなく、nmapコマンドで代用しましょう!

Linuxサーバーでpingが通らない時の原因と対処法

エラー

Pingが通らない時の原因はいくつかあります。

Pingが通らない時の原因
  • そもそも疎通ができていない
  • Firewallなどで止められている

Pingが通らない時の原因でそもそも疎通が出来ない状態の場合は、以下の記事を参照して解決します。

どこまでのルータまでは通信できているなど、Pingの相手先までの経路を表示して原因を探すのも基本です。

firewallが原因の場合は以下の記事を参照して設定を見直します。

まとめ:Linuxサーバーでpingの使い方

サーバー

Linuxサーバーでpingの使い方の基礎

LinuxサーバーのPingの使い方については、pingコマンドの後にIPアドレスかURLを指定します。

ping IPアドレスもしくはURL

停止する場合はCtrl+Cで可能です。

Linuxサーバーでpingのオプションについて

pingのオプションについて以下にまとめます。

オプション効果
-c 回数指定した回数だけPingパケットを送信
-i 秒数指定した秒数だけ間隔を空けてPingパケット送信
-sPingのパケットサイズを指定する
-qPingの統計のみ表示する
-w 秒数Pingを終了する時間を指定する
-4 IPv4アドレスIPv4でPingを行う
-6 IPv6アドレスIPv6でPingを行う
-pパターンを指定してPingパケット送信
-tTTLを指定してPingパケット送信
LinuxサーバでのPingコマンドオプション一覧

pingでポートを指定して送信するには

pingではポート指定はできないので、npingのパッケージをインストールして送信する。

結果が分かりにくいので「nmap」コマンドで代用する!

nmap -p ポート番号 宛先IP

Linuxサーバーでpingが通らない時の原因と対処法

Pingが通らない時の原因
  • そもそも疎通ができていない
  • Firewallなどで止められている

Pingが通らない時の原因でそもそも疎通が出来ない状態の場合は、以下の記事を参照して解決します。

firewallが原因の場合は、以下の記事を参照して設定を見直します。

パソコン教室

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次