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


10

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

linux  ssh  ipv6 

JUST ipV6トラフィックをトンネル経由でトンネルしようとしていますか?SSHトンネルを使用すると、両端のネットワークでIPV5またはV6を問題なくサポートできます。
サムコーガン

2
TCP over TCPは、通常、良い考えではありません。sites.inka.de / sites / bigred / devel / tcp-tcp.html TCP over TCP over TCP:音が良くない
Reece45

回答:


15

はい、可能ですが、それほど難しくはありませんが、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に依存します。パスMTU検出は、SSHトンネル上では正しく機能しないため、これに依存しないでください。疑わしい場合は、1280などの低いMTU値から始めます(IPv6で許可される最小MTU)。


1
IPv6がサポートする最小MTUは1280です(最小MTUが576をサポートするIPv4とは対照的)。警告:MTUを1280未満に設定すると、IPv6アドレスは表示されなくなり、SSHを再起動するまで再追加できません!
Jeremy Visser、2011

1
OS Xにはipコマンドがないので、IPアドレスを sudo ifconfig tun0 inet6 fec0:1::2/112 up 設定し、ルートを設定します sudo route add -inet6 -mtu 1280 default fec0:1::1
larsr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.