Netcat(nc6) - 最小IPv6専用TCPサーバーとクライアント

Netcat(nc6) - 最小IPv6専用TCPサーバーとクライアント

netcat(またはnc6)を使用してデフォルトのIPv6専用エコーサーバーを設定しようとしています。クライアントとサーバーの両方が同じローカルネットワークにあります。ただし、クライアントはすぐに終了します。


IPv6サーバー:

$ nc6 -6 -vv --continuous --exec cat -l -p 5555
nc6: listening on :: 5555 ...

IPv6クライアント:

$ nc6 -6 -vv fe80::213:33ff:feab:ff5d 5555
nc6: fe80::213:33ff:feab:ff5d (fe80::213:33ff:feab:ff5d) 5555 [5555] open
nc6: using stream socket
nc6: using buffer size of 8192
nc6: error reading from remote: Transport endpoint is not connected
nc6: connection closed (sent 0, rcvd 0)
nc6: readwrite returned -1
nc6: closed local
nc6: closed remote
$ 

質問がありますか?
インターフェースの1つから着信接続のみを受信するようにサーバーを構成する必要がありますか? (どう?)


IPv4バージョンはうまく動作します。

IPv4サーバー:

nc6 -vv --continuous --exec cat -l -p 5555
nc6: listening on :: 5555 ...
nc6: listening on 0.0.0.0 5555 ...
nc6: connect to 192.168.1.35 5555 from xyrobert.local (192.168.1.35) 37928 [37928]
nc6: using stream socket
nc6[7502]: executing 'cat'
nc6[7502]: using buffer size of 8192
nc6[7502]: read 4 bytes from remote
nc6[7502]: wrote 4 bytes to local
nc6[7502]: read 4 bytes from local
nc6[7502]: wrote 4 bytes to remote

IPv4クライアント:

nc6 -vv 192.168.1.35 5555
nc6: kearney.local (192.168.1.35) 5555 [5555] open
nc6: using stream socket
nc6: using buffer size of 8192
Hi!
nc6: read 4 bytes from local
nc6: wrote 4 bytes to remote
nc6: read 4 bytes from remote
Hi!
nc6: wrote 4 bytes to local

答え1

IPv6リンク - ローカルアドレスに接続するときは、クライアントシステムで表示できるアドレスに到達するリンクを指定する必要があります。各リンクは同じリンク - ローカルアドレスを使用するため、クライアントはどのリンク(インターフェース)を使用するかを明示的に通知する必要があります。したがって、接続するシステムがeth0クライアントシステムを介して接続されている場合は、接続する必要がありますfe80::213:33ff:feab:ff5d%eth0

ローカルルーティングテーブルを使用してパケットを送信するインターフェイスを決定するため、ルーティング可能なIPv6アドレスを使用する方がはるかに簡単です。

関連情報