ssh/ipv4トンネル(ptp接続)を介してtcp/ipv6トラフィックをトンネリングする方法を知りたいです。出来ますか?どうすればそれを達成できますか?
はい、それは可能であり、それほど難しくありませんが、SSHはTCPで実行され、かなりのオーバーヘッドがあるため、ソリューションは非常に最適ではありません。
サーバーの設定ファイルにはsshd_config
が必要です:
PermitTunnel point-to-point
次に、両方マシンでrootになる必要があります。以下を使用してサーバーに接続します。
ssh -w any root@server
接続後、両方のシステムでip link
コマンドを使用して、それぞれに作成されたtunNデバイスを確認し、次のコマンドで使用します。使用されていないサイトローカルアドレスの例を使用していることに注意してください。ただし、この導入では問題ありません。
サーバー上:
server# ip link set tun0 up
server# ip addr add fec0:1::1/112 dev tun0
クライアント上:
client# ip link set tun0 up
client# ip addr add fec0:1::2/112 dev tun0
ファイアウォールルールのブロックがない場合は、トンネルを介して反対側にpingを送信できるようにこれで十分です。次のステップは、トンネルを介してルートを設定し(net.ipv6.conf.default.forwarding = 1を忘れないでください)、リンクのMTUを調整して最適なパフォーマンスを実現することです。
server# sysctl net.ipv6.conf.all.forwarding=1
client# ip -6 route add default via fec0:1::1
これにより、ターゲットがリモートクライアントに戻るルートを持っている場合、クライアントはサーバーがアクセスできる他のネットワークにpingを実行できます。
また、サーバーが転送できないパケットをクライアントが送信しないように、リンクMTUを修正する必要があります。これは、サーバー自体のIPv6リンクのMTUに依存します。 SSHトンネルでは正しく機能しないため、パスMTU検出に依存しないでください。疑わしい場合は、1280などの低いMTU値から始めます(IPv6で許可される最小MTU)。