Page 1 of 1

SecureNAT機能の、プッシュするルーティングテーブル

Posted: Mon Mar 30, 2020 2:02 am
by Island
お世話になっております。
SecureNAT機能に、プッシュする静的ルーティングテーブルという設定があるかと思います。
そのエントリの上限は64エントリと記載があるのですが、32エントリ目を追記した後に再接続をすると、ルーティングテーブルがプッシュされない事象が発生します。
解決策を教えてください。

本環境では、OpenVPNサーバの機能を有効にし、接続に使用するクライアントソフトウェアもOpenVPNを使用しております。
よろしくお願いします。

Re: SecureNAT機能の、プッシュするルーティングテーブル

Posted: Fri Apr 10, 2020 10:27 am
by cedar
https://github.com/SoftEtherVPN/SoftEth ... PN.c#L2432

コードを見ても 64 エントリまでは解釈するようになっているようです。
また、オプション文字列のバッファも 4KB あり、十分のように見えます。
ログを見て、DHCP 応答からオプション文字列が意図したように構築されているか、確認してみてください。

Re: SecureNAT機能の、プッシュするルーティングテーブル

Posted: Thu May 07, 2020 8:22 am
by Saggggo
環境
windows 10, softether公式client
server version: v4.29-9680-rtm
client version: v4.29-9680-rtm

問題
私の環境(Windowsでのみ発生, Macは問題なし)でもルーティングテーブルが10を超えるあたりからDHCPが動作せず、IPとルーティングテーブルの取得に失敗します。

パケットをダンプしてみるとDHCP offerのThe Classless Static Route Option(121)が壊れているように見えます。しかしクライアントは正しいレスポンスを返すので、サーバー側のログでは正しく動作しているように見えます。

備考
dhcpgetで設定を確認してみると、Static Routing Table to Push の欄がIPの途中で途切れるのですが、関係ありますか?

Re: SecureNAT機能の、プッシュするルーティングテーブル

Posted: Tue May 19, 2020 6:11 am
by cedar
気になって調べたところ、この行でDHCPオプションのサイズを誤って8bitにキャストしてしまっているため、255バイトを越える長さのオプションの長さが誤って扱われているのが原因のようです。
この「(UCHAR)」を削除すると動作するようです。

https://github.com/SoftEtherVPN/SoftEth ... Ip.c#L3382

なお、SoftEther VPN の仮想DHCPサーバーは長いDHCPオプションの格納方法としてRFC3396ではなく、Microsoft独自の拡張オプションを採用しているようなので、Windows 以外の OS では、長いDHCPオプションを正しく解釈できないかもしれません。

https://docs.microsoft.com/en-us/opensp ... 672387b7e0

Re: SecureNAT機能の、プッシュするルーティングテーブル

Posted: Thu May 21, 2020 1:53 pm
by Field
cedarさん
私の環境(windows)でも、ルーティングテーブルへ32エントリ目を追記したあと再接続をすると、ルーティングテーブルがプッシュされない事象が発生します。
cedarさんが改修くださったソースコードで本事象が解消される認識ですが、改修されたソースコードをPull Requestされるご予定ありますでしょうか。
もしくは既にPull Requestなさっており、修正の反映待ちというステータスでしょうか。

Re: SecureNAT機能の、プッシュするルーティングテーブル

Posted: Fri May 22, 2020 1:49 am
by cedar
すみません。
私は安定版の方の SoftEther VPN のメンテナなので、そちらを修正して確認しておりました。
先進版の方へのPRも後ほど送っておきます。

追記
マージされた模様です。
https://github.com/SoftEtherVPN/SoftEtherVPN/pull/1134

Re: SecureNAT機能の、プッシュするルーティングテーブル

Posted: Thu Jun 25, 2020 12:17 am
by Field
cedarさん
ご対応・ご連絡下さり誠にありがとうございます!
先進版へのマージ完了された旨承知いたしました。

Re: SecureNAT機能の、プッシュするルーティングテーブル

Posted: Thu Jun 25, 2020 5:07 am
by Field
お世話になっております。追加での投稿失礼致します。
都合によりcedarさんに改修いただく前のソースコードのまま使用しなければならない環境があり、同じエラー(ルーティングテーブルへ32エントリ目を追記したあと再接続をすると、ルーティングテーブルがプッシュされない)が今後再発する可能性があります。
エラーが発生した場合に検知・対応できるよう監視を実装したく、検知にあたって使用できるトリガーがありましたらご教示いただけないでしょうか。

※ルーティングテーブルがプッシュされなくなった段階で特定のメッセージがログへ出力される場合、特定のメッセージをトリガーとして使用できる想定でおります。

Re: SecureNAT機能の、プッシュするルーティングテーブル

Posted: Tue Jun 30, 2020 9:41 am
by cedar
DHCPメッセージ生成のバグによる動作の異常なので、異常が発生したことはログには記録されていません。

Re: SecureNAT機能の、プッシュするルーティングテーブル

Posted: Wed Jul 01, 2020 11:54 pm
by Field
cedarさん
ご回答誠にありがとうございます!承知致しました。

Re: SecureNAT機能の、プッシュするルーティングテーブル

Posted: Thu Jul 02, 2020 2:33 am
by Saggggo
cedarさん

修正ありがとうございます

ご時世的にリモート勤務が多いのでとても助かります