DTCP では、UDPトンネルの使い方について、NATがある場合とない場合の2つのモードを持っています。
UDPトンネルを利用して、インターネット側から入ってくるIPv6パケットをサーバがクライアントに対して転送するためには、クライアント側のIPv4アドレスだけではなくポート番号もサーバ側が判っている必要があります。
このため、DTCPクライアントがDTCPサーバに対して待ち受けているポート番号も通知するように、DTCPプロトコルを拡張してあります。
これにより、NATがない場合には、トンネル開通直後から、双方向にやりとりができます。
しかし、NATが間にあると、状況が異なります。
NATはポート番号を動的に変化させるので、待ち受けているポート番号を事前にサーバ側に通知しておくことができません。
NATモードでは、クライアントは待ち受けているポート番号を通知しません。
代わりに、クライアント側からUDPトンネルに送られてくるパケットのsrcのポート番号に対してパケットを送出します。
したがって、NATモードでは、クライアント側からなんらかのIPv6パケットが送出されるまで、外部からのパケットは届くようにはなりません。
また、NATで動的に管理されているテーブル上にエントリがなくなると、外から接続ができなくなります。このため、定期的にIPv6パケットを外に投げてあげる必要があります。
dtcpsを-Uオプションを指定して起動すると、IPv6 over UDP/IPv4トンネルでの接続要求を受け付けるようになります。
UDPトンネルではインタフェースは、gifNではなくngNを使用します。 デフォルトでは、ng0から始まりユニット番号の若いインタフェースから順に動的に割り当てます。 特定のユニット番号以降を使用したい場合は、-Iオプションで指定できます。
UDPトンネルに使用するポートはトンネル毎に割り当てます。ポート番号は、デフォルトでは、4028以降で空いているものを使用します。 ポート番号の下限は-bオプションで変更できます。
UDPトンネルではインタフェースは、gifNではなくngNを使用します。 デフォルトでは、ng0を使用します。 変更したい場合は、-iオプションで指定します。
UDPトンネルに使用するポートは、デフォルトでは、4028を使用します。 ポート番号は-bオプションで変更できます。
UDPトンネルではインタフェースは、gifNではなくngNを使用します。 デフォルトでは、ng0を使用します。 変更したい場合には、dtcpclient_script.confのtunifで使用したいインタフェースを指定します。
UDPトンネルに使用するポートは、デフォルトでは、4028を使用します。 ポート番号は-bオプションで変更できます。
NATモードの場合、定期的にIPv6パケットを送出する必要があります。 このための簡単なスクリプトをdtcpclient-pinger.shに置いてあります。 最近のdtcpclientでは、dtcpclient_script.confにup_command / down_commandを指定できるように拡張してあります。 /usr/local/etc/dtcpclient_script.confで、
という感じに指定すると良いでしょう。 ここで、IPv6ホストには、DTCPサーバのIPv6アドレスなどを指定すると良いでしょう。up_command="/usr/local/etc/dtcpclient-pinger.sh IPv6ホスト &" down_command="/usr/local/etc/dtcpclient-pinger.sh -k"
NAT箱の特定のポート宛に届いたパケットをdtcpclientが動作するホスト宛にフォワードするよう設定できる場合は、NAT箱に設定したポート番号を-Bオプションで指定できます。 この場合、定期的にIPv6パケットを送出する必要はありません。