産業で説明
- フレッツV6オプションを使い、拠点間IPv6接続を試してみた。
- ssh でログインは出来るけれど scp や rsync を行おうとすると、ハングアップします。
- そのときに、いろいろ試してみた記録です。
症状
ssh V6ホスト名 ・・・ 問題なく出来る
ssh V6ホスト名 ls ・・・ハングアップする
scp 適当な小さなファイル V6ホスト名: ・・・ハングアップする
rsync -auv 適当な小さなファイル V6ホスト名: ・・・ハングアップする
- 公開鍵認証を未設定の場合は、パスワードを聞かれて、パスワードを入れた直後にハングアップします
原因らしきもの
- 参考リンク等の情報によりますと、フレッツ光網の NGN網に DSCP値 (TOS値) が throughput の IPv6 パケットを送ると そのパケットは drop されるから、だそうです。
- sshコマンドの対話モードのときは DSCP値が lowdelayになっていて、バッチモードの時は throughput になるそうです。(ssh_configや ~/.ssh/config 等で設定変更は可能)
- これはNGN網の仕様のようなので、V6折り返し通信だけではなくIPoE接続なユーザーも影響を受けるかもしれません(あとで調査したい)
試したこと
-(1) /etc/ssh/ssh_config に以下の行を追加
ssh_config
Host *
・・・
IPQoS 0x00
- 回避出来ました。
-(2) パケットフィルターで、強制的にsshのパケットのDSCP値を書き換える
# ip6tables -A OUTPUT -t mangle -p tcp --dport 22 -j DSCP --set-dscp 00
- この方法でも回避出来ました。
それでもうまくいかない回線があった
- 原因は不明ですが、上記(1)、(2)のどちらを試しても症状が治らない回線がありました。
- 意味が分かりません。
- LinuxのVersionの異なるマシンに差し替えてみたり、NTTレンタル品HGWの代わりに市販ルーターを使ってNGN網に繋いだりと、やってみましたが、まったく症状が改善せず、
原因不明のままです。---> 解決しました。 - 解決方法は、接続先Linuxサーバー(Ubuntuです)の /etc/ssh/sshd_config の最後に1行付け足します。
/etc/ssh/sshd_config
・・・
ipqos none none
- 長年の謎が解けた。たぶん足掛け8年ぐらい。
備考
- V6直結は速いです。
- 同一県内ではPing値が異常に小さいです。3msとかになります。
- 但し、NTT西 管轄区同士、あるいはNTT東 管轄区同士のあいだでしか繋がりません。
- (東西をまたぐ接続は不可)両方IPoE契約している場合は当然接続出来ます
- ソフトイーサ様が行っているIPv6 DDNSサービスが名前解決方法として便利かもしれません。
https://i.open.ad.jp/howto/ - フレッツv6オプションは IPv6で繋いで flets-west.jp/ のようなサイトから直接申し込めば、工事費や月額費用は掛からず、わりとすぐに開通できるようでした。
(IPoE v6接続やDSLite接続のプロバイダーをご利用の場合はすでにオプション申し込み済になっているかと思います)
セキュリティに関する注意喚起
- NTTレンタル品のHGWではIPv6パススルーを入れた場合のファイアウォール機能が緩いです。
(デフォルトでは、LAN内のパソコンのどれに対しても日本列島の半分側からはssh接続可能になります) - 外部からの接続を遮断するには、
IPv6セキュリティのレベルの設定にて
- IPv6ファイアウォール機能 :有効
- IPv6セキュリティのレベル :標準 ←これを「高度」にすると、LANの外側からのIPv6接続を拒否できる
-但し、古いHGWや廉価品の市販ルーターでは、そもそもIPv6セキュリティの設定項目自体が無いこともしばしば
- なので、Linux側でip6tables を使って通信相手以外からの接続を拒否するようにしたほうが良いです。
参考リンク
- フレッツ光ネクスト + IPoE で scp, cvs, rsync の SSH通信ができない問題
- https://ch.nicovideo.jp/tsutsui/blomaga/ar1652866