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

SoftEther VPN に関するご質問はこのフォーラムにお気軽にご投稿ください。
Post Reply
Island
Posts: 1
Joined: Mon Mar 30, 2020 1:54 am

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

Post by Island » Mon Mar 30, 2020 2:02 am

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

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

cedar
Site Admin
Posts: 2070
Joined: Sat Mar 09, 2013 5:37 am

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

Post by cedar » Fri Apr 10, 2020 10:27 am

https://github.com/SoftEtherVPN/SoftEth ... PN.c#L2432

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

Saggggo
Posts: 2
Joined: Thu May 07, 2020 7:58 am

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

Post by Saggggo » Thu May 07, 2020 8:22 am

環境
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の途中で途切れるのですが、関係ありますか?

cedar
Site Admin
Posts: 2070
Joined: Sat Mar 09, 2013 5:37 am

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

Post by cedar » Tue May 19, 2020 6:11 am

気になって調べたところ、この行で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

Field
Posts: 25
Joined: Thu May 21, 2020 1:39 pm

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

Post by Field » Thu May 21, 2020 1:53 pm

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

cedar
Site Admin
Posts: 2070
Joined: Sat Mar 09, 2013 5:37 am

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

Post by cedar » Fri May 22, 2020 1:49 am

すみません。
私は安定版の方の SoftEther VPN のメンテナなので、そちらを修正して確認しておりました。
先進版の方へのPRも後ほど送っておきます。

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

Field
Posts: 25
Joined: Thu May 21, 2020 1:39 pm

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

Post by Field » Thu Jun 25, 2020 12:17 am

cedarさん
ご対応・ご連絡下さり誠にありがとうございます!
先進版へのマージ完了された旨承知いたしました。

Field
Posts: 25
Joined: Thu May 21, 2020 1:39 pm

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

Post by Field » Thu Jun 25, 2020 5:07 am

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

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

cedar
Site Admin
Posts: 2070
Joined: Sat Mar 09, 2013 5:37 am

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

Post by cedar » Tue Jun 30, 2020 9:41 am

DHCPメッセージ生成のバグによる動作の異常なので、異常が発生したことはログには記録されていません。

Field
Posts: 25
Joined: Thu May 21, 2020 1:39 pm

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

Post by Field » Wed Jul 01, 2020 11:54 pm

cedarさん
ご回答誠にありがとうございます!承知致しました。

Saggggo
Posts: 2
Joined: Thu May 07, 2020 7:58 am

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

Post by Saggggo » Thu Jul 02, 2020 2:33 am

cedarさん

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

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

Post Reply