web-dev-qa-db-ja.com

sshトンネルを介したTCP / IPv6

ssh/ipv4トンネル(ptp接続)を介してtcp/ipv6トラフィックをトンネリングする方法を知りたいです。出来ますか?どうすればそれを達成できますか?

10
ptr0

はい、それは可能であり、それほど難しくありませんが、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)。

15
Juliano