「ルーティングテーブルの調整処理を行なわない」について

SoftEther VPN に関するご質問はこのフォーラムにお気軽にご投稿ください。
Post Reply
hiura
Posts: 143
Joined: Wed Mar 10, 2021 1:56 am

「ルーティングテーブルの調整処理を行なわない」について

Post by hiura » Sun Jan 30, 2022 7:07 am

「ルーティングテーブルの調整処理を行なわない」について

VPN Client は、通常の設定では、VPN 接続後に仮想 LAN カードに設定されたデフォルトゲートウェイなどの IP 経路が、
VPN サーバーへのを上書きしてしまい、VPN サーバーへの経路が失われてしまうことを防ぐため、
セッションの間 VPN サーバーの IP アドレスへの静的経路を Windows のルーティングテーブルに追加します。
「ルーティングテーブルの調整処理を行なわない」を有効にすると、この挙動を無効化するため、
仮想 LAN カードに追加されたルーティング設定が VPN サーバーへの経路を上書きしてしまった場合に、VPN 接続が失われてしまう問題を招きます。
https://ja.softether.org/4-docs/3-kb/VPNFAQ019

について、質問です。

①:
「仮想 LAN カードに追加されたルーティング設定が VPN サーバーへの経路を上書きしてしまった場合」で
VPN サーバーへの経路を上書きするとはだれがするのですか?。OSですか、VPN CLIENTですか、それとも人がする(手動設定等)のですか。
上書きするケースってどんなケースですか?。仮想LANへのルートが追加されるだけで、ルートを上書きすることはないと思うのですが。

②:
VPN サーバーへの経路が失われるのなら、VPN接続用パケットは指定した物理LANカードから出力してやればいいだけではないでしょうか?。
指定した物理LANカードから出力すればルーティングテーブルに無関係になり、ルーティングテーブルの影響は受けなくなります。
物理LANに設定のデフォルトゲートウエイ経由でVPN SERVERとつながることになります。

指定した物理LANカードから出力できれば、
複数のVPN SERVEがある場合、複数の物理LANカードを準備し一対一で対応させることで、物理LANカードをVPN SERVER専用とすることもできます。

ソフト的には、指定したLANカード(画面から入力可能にする)のIPアドレスをソケットにbind()し、connect()すれば接続要求TCP.SYNの
送信元IPアドレスが、指定したLANカードのIPアドレスになり、仮想LANカードのIPアドレスになることはありません。

③:
接続状況画面表示のTCPコネクション数が実際(WIRESHARKでキャプチャ)のTCPコネクションの数と違う件(IPV6接続で確認)。
送信元IPアドレスが物理LANカードであるTCPコネクションのみカウントすべきですが、
現状、送信元IPアドレスが仮想LANカードであるTCPコネクションもカウントしていると思われます。
バグと認識していますが、②を実施すれば、TCP.SYNパケットの送信元IPアドレスが物理LANカード以外のIPアドレスになることはないので、正しい表示になるのでは。
viewtopic.php?f=15&t=67335
Last edited by hiura on Thu Feb 17, 2022 8:59 am, edited 1 time in total.

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

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by cedar » Mon Jan 31, 2022 6:51 am

1.どれもあり得ますが、多くの場合ではDHCPクライアントが上書きします。
DHCP では、デフォルトゲートウェイの情報が配布されている事が多いです。
VPN サーバーにデフォルトルートで接続していると、デフォルトゲートウェイが仮想 LAN カードの方に上書きされると切断されます。

2. もっともな提案のように見えます。
パッチの提出については、この掲示板ではなく GitHub で行うことをお勧めします。
開発者チームは、この掲示板はあまり見ていないようです。(特に日本語では)

hiura
Posts: 143
Joined: Wed Mar 10, 2021 1:56 am

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by hiura » Sun Feb 06, 2022 5:55 am

ルーティングテーブルの調整処理とはFAQ情報から
VPN サーバーの IP アドレスへの静的経路を Windows のルーティングテーブルに追加することのみであると受け取れるのですが、
VPN CLIENTがルーティングテーブルのデフォルトルートを、仮想LANカードのデフォルトGWに強制的に設定するみたいです。
複数ルート(複数物理LANカード))があっても一つにするので、全ての複数の物理LANカードに設定済みのデフォルトGWはすべて削除されます。
要は、仮想LANからしかインターネットに出ていけないようになる。メトリック値に関係なく。

そういう仕様であれば、FAQ情報の表現が事実を表していないのではと思います。
正確な仕様が知りたいです。

また同時に複数のVPN SERVERへ接続した場合はどの仮想LANカードがデフォルトGWになるのでしょうか。
Last edited by hiura on Sun Feb 06, 2022 6:08 am, edited 1 time in total.

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

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by cedar » Sun Feb 06, 2022 6:05 am

その動作はWindowsのDHCPクライアントによるものだと思われます。
その動作が発生したときに VPN Server への経路が失われることを防ぐためにルーティングテーブルの調整機能があるようです。

hiura
Posts: 143
Joined: Wed Mar 10, 2021 1:56 am

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by hiura » Sun Feb 06, 2022 9:21 am

そうゆうことだったんですか。納得です。

そうであれば、ルーティングテーブルの調整処理を行わない設定で実行した場合、
ルーティングテーブルにデフォルトルートが複数できるようなんですが、なんででしょうか?。

調整処理が有効な場合と無効な場合でDHCPの処理に違いが発生するということでしょうか?。

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

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by cedar » Sun Feb 06, 2022 10:48 pm

すみません。
私はその動作については把握していません。

hiura
Posts: 143
Joined: Wed Mar 10, 2021 1:56 am

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by hiura » Mon Feb 07, 2022 1:36 am

現状把握している内容です。参考まで。

1.WIN10(IPV6)での、ルーティングテーブルの調整処理を行う設定(仮にAとする)と、行わない設定(仮にBとする)で実行した場合の違いは、

①Aの場合ルーティングテーブルにデフォルトルート一つ(仮想LAN側GW)しかできないが、Bの場合は、複数(仮想LAN側GW、物理LAN側GW)のデフォルトルートができる。
②Aの場合VPN SERVERへの経路が設定されるが、Bの場合は設定されない。


2.WIN10より前(IPV4)の、ルーティングテーブルの調整処理を行う設定(仮にCとする)と、行わない設定(仮にDとする)で実行した場合の違いは、
https://forum.vpngate.net/viewtopic.php?t=5029
から推測(2015年ごろ)。

①Cの場合ルーティングテーブルに仮想LAN側GWへのデフォルトルートが一つでき、Dの場合は、物理LAN側GWへのデフォルトルートが一つできる。
②Cの場合VPN SERVERへの経路が設定されるが、Dの場合は設定されない?。

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

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by cedar » Mon Feb 07, 2022 7:19 am

使用されている SoftEther VPN のバージョンはどちらでしょうか?

公式サイトのドキュメントは、かなり古い安定版に準拠して書かれている模様です。
先進版については、まとまったドキュメントは存在しない模様です。

hiura
Posts: 143
Joined: Wed Mar 10, 2021 1:56 am

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by hiura » Mon Feb 07, 2022 9:59 am

>使用されている SoftEther VPN のバージョンはどちらでしょうか?

1.VPN VERSIONは以下の通りです。
PC1:VPN CLIENT(VPN DEVELOPMENT EDITION)(VER5.02,BUILD5246)
PC2:VPN SERVER(VER4.38,BUILD9760)

IPv6 route management 対応のDEVELOP EDITION があるとの情報で、試しました。
viewtopic.php?f=15&t=67354

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

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by cedar » Mon Feb 07, 2022 11:15 am

なるほど。私は開発版の方は追いかけていないので、知らない挙動が増えているのかも知れません。

hiura
Posts: 143
Joined: Wed Mar 10, 2021 1:56 am

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by hiura » Wed Feb 09, 2022 7:52 am

>なるほど。私は開発版の方は追いかけていないので、知らない挙動が増えているのかも知れません。
正式な現バージョンは追っかけていると理解しましたので仕様の再確認をお願いします。

正式な現バージョンでIPV4の場合でルーティングテーブルの調整処理ON,OFF時の処理&違い。
正式な現バージョンでIPV6の場合でルーティングテーブルの調整処理ON,OFF時の処理&違い。違いは非対応のためないと思いますが。
ルーティングテーブルの調整処理ON,OFFすることにより、ルーティングテーブルはどうかわるのか。

ソースコードにはルートエントリー削除関数があります。
VLAN32.C:DeleteRouteEntry()

ルートトラッキングメイン関数に削除に関してのコメントがあります。
VLANWIN32.C:void RouteTrackingMain(SESSION *s)
// If the virtual LAN card want to be the default gateway and
// there is no LAN card with smaller metric of 0.0.0.0/0 than
// the virtual LAN card, delete other default gateway entries
// to elect the virtual LAN card as the default gateway

hiura
Posts: 143
Joined: Wed Mar 10, 2021 1:56 am

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by hiura » Fri Feb 18, 2022 3:39 am

本件、インターネットにでるためのキーポイントであると認識しています。
前REPLYの回答がないので再度REPLYしました。

1.
>使用されている SoftEther VPN のバージョンはどちらでしょうか?

>公式サイトのドキュメントは、かなり古い安定版に準拠して書かれている模様です。
>先進版については、まとまったドキュメントは存在しない模様です。

先進版は無視してもらって、安定版に準拠して書かれている公式サイトのドキュメントは正式な現バージョン(下記)には適用されるのでしょうか?、されないのでしょうか?。

正式な現バージョン
VPN CLIENT(VER4.38,BUILD9760)
VPN SERVER(VER4.38,BUILD9760)

2.
>その動作はWindowsのDHCPクライアントによるものだと思われます。
この根拠はなにでしょうか?
DHCPクライアントがこのルーティングテーブルの調整処理のON,OFFフラグをみてどうこうすることはできないし、
ルーティングテーブルの調整処理をON,OFFした場合の差はVPN CLIENTの処理の差そのものだと思います。
そう考えると、VPN CLIENTが行っているのでは?。

>その動作が発生したときに VPN Server への経路が失われることを防ぐためにルーティングテーブルの調整機能があるようです。
1項に記載

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

Re: 「ルーティングテーブルの調整処理を行なわない」について

Post by cedar » Fri Feb 18, 2022 11:02 am

ルーティングの調整処理を行っているのは
VLANWIN32.C:void RouteTrackingMain(SESSION *s)
で正しいと思います。
動作については、そちらのソースコードを読んでいただくのが正確ではないかと思います。

Post Reply