web-dev-qa-db-ja.com

Netcat(nc6)-最小限のIPv6のみTCPサーバーとクライアント

Netcat(またはnc6)を使用して、基本的なIPv6のみのエコーサーバーをセットアップしようとしています。クライアントとサーバーの両方が同じローカルネットワークにあります。ただし、クライアントはすぐに終了します。


IPv6-Server:

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

IPv6-Client:

$ 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-Server:

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-Client:

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
7
Robert Tzu.

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

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

9
Sander Steffann