フレッツ光ネクスト + IPoE で scp, cvs, rsync の SSH通信ができない問題
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

フレッツ光ネクスト + IPoE で scp, cvs, rsync の SSH通信ができない問題

2019-02-07 23:47
  • 2
5か月くらいハマっていた問題が解決したのでメモ。

環境

問題

ホストの NetBSD/i386 8.0 からインターネット上の外部ホスト (IPv4, IPv6 ともに持つ VPS上のホスト) への操作が、以下のようになる。

  • ssh -6 での IPv6 の外部ホストへのログイン:
    → 問題なし
  • scp -6 での IPv6 の外部ホストへのコピー:
    → パスフレーズの入力画面までは進むが、パスフレーズ入力後の転送が開始されず、 progress meter も表示されない
  • cvs, rsync での IPv6 の SSH 経由転送:
    → パスフレーズの入力画面までは進むが、パスフレーズ入力後の転送が開始されずタイムアウトする
  • scp, cvs, rsync の IPv4 外部ホストへの接続:
    → いずれも正常に動作する

ホームゲートウェイのセキュリティログには関連するパケットフィルターの記録は残っておらず、宅内フィルタの設定の問題ではないと思われたが、結局解決策がわからず、IPv6で接続可能な scp/cvs/rsync 対象ホストに対しては明示的に IPv4 で接続する設定を書いて暫定対策していた。

解決策

ホストの ssh の設定 (/etc/ssh/ssh_config もしくは ~/.ssh/config) に以下のように IPQoS の設定で DSCP の指定を追加することで IPv6経由の接続も正常に動作するようになった。

IPQoS 0x00
もしくは
IPQoS af21 cs1
もしくは
IPQoS lowdelay none
等々。
2番目の設定が OpenSSH 7.8 以降のデフォルトなのでオススメと思われるが、VMware上では別の問題を引き起こす(後述)ようなので、環境により使い分ける必要があるようである。
2019/2/8 2:42 追記: af21 も後述のフレッツ光 NGN網のフィルタに引っかかるようなので記述を修正

参照リンク

まとめ

  • OpenSSH 7.7 以前の IPQoS 設定のデフォルトは
    対話型セッションでは lowdelay
    非対話型セッションでは throughput
  • フレッツ光網の NGN網に DSCP値 (TOS値) が throughput の IPv6 パケットを送ると drop される
  • 以上の2つの理由により SSH の IPv6 経由の非対話型セッションが接続不能になる
  • OpenSSH の SSH 設定 (/etc/ssh/ssh_config もしくは ~/.ssh/config) の IPQoS 設定で非対話型セッションの DSCP 値を以下のいずれかにすることで解決可能
    • 0x00 (CS0)
    • cs1 (OpenSSH 7.8 以降の非対話型セッションデフォルト)
    • none (OSのデフォルト設定を使用)

備考

  • OpenSSH の IPQoS 設定の違いによる実際の通信速度やレイテンシの差が体感できるのかは未確認
  • DSCP 値 (TOS値) の具体的なマクロ定義は /usr/include/netinet/ip.h にある
    /*
    * Definitions for DiffServ Codepoints as per RFC2474
    */
    #define IPTOS_DSCP_CS0 0x00
    #define IPTOS_DSCP_CS1 0x20
    #define IPTOS_DSCP_AF11 0x28
    #define IPTOS_DSCP_AF12 0x30
    #define IPTOS_DSCP_AF13 0x38
    #define IPTOS_DSCP_CS2 0x40
    #define IPTOS_DSCP_AF21 0x48
    #define IPTOS_DSCP_AF22 0x50
    #define IPTOS_DSCP_AF23 0x58
    #define IPTOS_DSCP_CS3 0x60
    #define IPTOS_DSCP_AF31 0x68
    #define IPTOS_DSCP_AF32 0x70
    #define IPTOS_DSCP_AF33 0x78
    #define IPTOS_DSCP_CS4 0x80
    #define IPTOS_DSCP_AF41 0x88
    #define IPTOS_DSCP_AF42 0x90
    #define IPTOS_DSCP_AF43 0x98
    #define IPTOS_DSCP_CS5 0xa0
    #define IPTOS_DSCP_EF 0xb8
    #define IPTOS_DSCP_CS6 0xc0
    #define IPTOS_DSCP_CS7 0xe0
    /*
    * Definitions for IP type of service per RFC1349 (ip_tos)
    * DEPRECATED
    */
    #define IPTOS_LOWDELAY 0x10
    #define IPTOS_THROUGHPUT 0x08
    #define IPTOS_RELIABILITY 0x04
    #define IPTOS_MINCOST 0x02
上記からすると lowdelaythroughput も DEPRECATED (非推奨) であるが、 throughput のパケットのみが drop される(≒「許容されたプロトコルと転送優先度の組み合わせ以外のパケットに転送優先度を指定することは許容しません」のフレッツ網制限規定に該当する)理由は未確認。
広告
×
VDSL主装置でフィルタかけられてる可能性は無いんでしょうか
7ヶ月前
×
>>1
「フレッツ光網で DSCP 値をよく考えずに NGN 網に流すと黙って局側で drop される」という情報のみで、実際にどこでドロップされているかまでは確認できていません。ただ、VDSLモデムそのものの設定変更が可能なUIは用意されていないようです。
どちらかというと、ホームゲートウェイでのルーティング時に DSCP値を置き換えるような設定ができないのだろうかと思っていますが、こちらも確認できていません。
7ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。