iptables、ファイアウォールを設定後の疎通確認として
特定のポート、TCP、UDPなどを指定しての確認方法を記載
2.確認のパターンについて
だいたい、以下の3パターンの組み合わせを想定して、
①送信元、送信先のOSがWindow、Linux
②プロトコルがTCP、UDP
③送信元、送信先のポート番号指定
今回の記述は、送信元がWindowsとLinux
送信先が、Linux
プロトコルは、TCP
ポート番号の指定は、送信先のみ
3.Windowsでの確認方法
Powershellで以下のコマンドを実行
・ソケット作成
$tc = New-Object System.Net.Sockets.tcpClient
・指定したIPアドレスとポート番号を利用してクライアントをリモートTCPホストに接続
$tc.connect("192.168.125.1", 80)
$tc.connect("IPアドレス", ポート番号)
・ソケットのクローズ
$tc.close()
疎通できない場合、接続のコマンド実行後に以下のようなエラーが表示されます。
PS C:\Users\administrator> $tc.connect("192.168.125.1", 80) "2" 個の引数を指定して "Connect" を呼び出し中に例外が発生しました: "接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。192.168.125.1:80" 発生場所 行:1 文字:1 + $tc.connect("192.168.125.1", 80) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : SocketException |
4.Linuxでの確認方法
・telnetクライアントを利用する場合
コマンド
$ telnet <IPアドレス> <ポート番号> |
応答結果①
Trying 192.168.125.1...
telnet: connect to address 192.168.125.1: Connection refused
結果の内容:アクティブでないサービスに接続しようとした場合、
または要求したアドレスにサービスプロセスが存在しなかった場合に起こります。
応答結果②
Trying 192.168.125.1...
Connected to 192.168.125.1.
Escape character is '^]'.
結果の内容:OSまでの疎通が出来ており、なおかつ対象ポート番号でのサービスも存在します。
「Ctrl」+「」」キーを同時押した後に、quitを入力することで、telnetから抜けれます。
・nmap-ncatを利用する場合
$ nc <IPアドレス> <ポート番号> |
応答結果
対向側のサービスによる
・送信先のポート番号がListen状態になっていない場合
受信側のポートがListen状態にない場合は、応答を返さないため、
ncコマンドにより、特定ポート番号でListen状態にすることが可能
$ nc -l <ポート番号> |
上記コマンドでは、1回のアクセスが発生したらプロセスが終了してしまうため、ループさせた方が試験を行いやすい。
例)ポート番号80で待ち受けするコマンド
$ while true; do ( echo "応答 Ok" ) | nc -l 80; done |
受信側で上記コマンドを実行後、送信側でncコマンドで疎通確認を実行したら
送信側に「応答 OK」が表示される。