概要
「UDP 疎通確認」でググると、tracerouteを使った方法が最上位でヒットする。
$ traceroute -U -p <port> <hostname>
traceroute to hostname (xxx.xxx.xxx.xxx), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
しかし、tracerouteは途中の経路に依存するため、場合によっては上記のように延々と米印を見続ける羽目になる。
単純に目的のサーバ(の特定のポート)に疎通できているか知りたい場合は、ncを使ったほうが便利だ。
クライアント
下記のコマンドは、hostname
のport
へUDPで接続する。
$ nc -u <hostname> <port>
-u
でUDPを指定している。何もつけなければTCPになる。
このままでは、接続だけしてデータは送られていないので、適当に打ち込んでEnterキーを押そう。
$ nc -u example.com 10000
Hello, World!
これで相手に"Hello, World!"が送られた。
送信元IPアドレス、送信元ポートを指定する
さらに発展的な使い方として、送信元IPアドレス、送信元ポート番号を指定できる。
このとき指定する送信元IPアドレスは、自身がすでに持っているIPアドレスに限定される。
$ nc -s <送信元IP> -p <送信元ポート> <hostname> <宛先ポート>
サーバ
nc
ならサーバをたてるのも一瞬だ。下記のコマンドは、自分のport
(UDP)を待ち受ける。
$ nc -lu <port>
-uでUDPを指定して、何もつけなければTCPになるのは、クライアントのときと同じだ。-l
はListenを示す。
サーバをたてた後、先ほどのクライアントの例のように"Hello, World!"を送ると下記の結果になる。
$ nc -lu 10000
Hello, World!