ルーティングテーブル調整処理の不具合?
Posted: Tue Sep 13, 2022 8:13 am
ルーティングテーブル調整処理の不具合?
IPV6接続で、VPN CLIENT接続設定/高度な接続設定/ルーティングテーブル調整処理をONでVPN SERVERへ接続した場合
の不具合です。ルーティングテーブル調整処理のバグと思われます。VPN接続の不安定感に悩まされている方は参考に。
1.不具合:
関数GetBestRouteEntryFromRouteTableEx()内で取得したルーティングテーブルのインターフェースは
UPの場合もあり、DOWNの場合もあるのに、インターフェースは常にUPしたものとして処理している。
2.対策:
関数GetBestRouteEntryFromRouteTableEx()内でインターフェースがUPかどうかチェックして、UPなら採用し、
それ以外ならそのインターフェースは対象外にする。
3.添付ファイル(対策済み):
GetBestRouteEntryFromRouteTableEx.C (Network.c内の関数 GetBestRouteEntryFromRouteTableEx()を変更)
4.テスト:
PC1: WIN10 PRO, VPN CLIENT(DEVELOPER EDITION Ver 5.02 Build 5180)
PC2: WIN10 HOME, VPN SERVER(Ver 4.38 Build 9760)
VPN CLIENTで同一VPN SERVERへの複数の接続設定、例えばA,Bを作り
接続A:仮想NICをVPN、IPV6
接続B:仮想NICをVPN2, IPV6
接続Aを「接続」ーー>「切断」ーー>接続Bを「接続」した場合、
接続Aの仮想NIC(VPN)は死んでいるのにも関わらずその仮想NIC(VPN)がBESTルート(①)となる。②でないといけない。
①aaaa:aaaa:aaaa:aaaa::/ffff:ffff:ffff:ffff:: :: m=291 ifm=35 if=25 lo=1 p=1 <ーーこれがまちがい。
if=25は仮想NIC(VPN)。GWなし(直結?)でプリフィックスは64。ロンゲストマッチの原則で採用された?。
実際のプリフィックスはaaaa:aaaa:aaaa:aaaaと書き換えています。
②::/:: fe80::1eb1:7fff:fe74:aec8 m=41 ifm=25 if=13 lo=0 p=0 <ーーこれが正解。
結果として、VPN SERVERへの経路(物理NICのデフォルトGW)がルーティングテーブルに登録されないのでVPN接続できない。
IPV6接続で、VPN CLIENT接続設定/高度な接続設定/ルーティングテーブル調整処理をONでVPN SERVERへ接続した場合
の不具合です。ルーティングテーブル調整処理のバグと思われます。VPN接続の不安定感に悩まされている方は参考に。
1.不具合:
関数GetBestRouteEntryFromRouteTableEx()内で取得したルーティングテーブルのインターフェースは
UPの場合もあり、DOWNの場合もあるのに、インターフェースは常にUPしたものとして処理している。
2.対策:
関数GetBestRouteEntryFromRouteTableEx()内でインターフェースがUPかどうかチェックして、UPなら採用し、
それ以外ならそのインターフェースは対象外にする。
3.添付ファイル(対策済み):
GetBestRouteEntryFromRouteTableEx.C (Network.c内の関数 GetBestRouteEntryFromRouteTableEx()を変更)
4.テスト:
PC1: WIN10 PRO, VPN CLIENT(DEVELOPER EDITION Ver 5.02 Build 5180)
PC2: WIN10 HOME, VPN SERVER(Ver 4.38 Build 9760)
VPN CLIENTで同一VPN SERVERへの複数の接続設定、例えばA,Bを作り
接続A:仮想NICをVPN、IPV6
接続B:仮想NICをVPN2, IPV6
接続Aを「接続」ーー>「切断」ーー>接続Bを「接続」した場合、
接続Aの仮想NIC(VPN)は死んでいるのにも関わらずその仮想NIC(VPN)がBESTルート(①)となる。②でないといけない。
①aaaa:aaaa:aaaa:aaaa::/ffff:ffff:ffff:ffff:: :: m=291 ifm=35 if=25 lo=1 p=1 <ーーこれがまちがい。
if=25は仮想NIC(VPN)。GWなし(直結?)でプリフィックスは64。ロンゲストマッチの原則で採用された?。
実際のプリフィックスはaaaa:aaaa:aaaa:aaaaと書き換えています。
②::/:: fe80::1eb1:7fff:fe74:aec8 m=41 ifm=25 if=13 lo=0 p=0 <ーーこれが正解。
結果として、VPN SERVERへの経路(物理NICのデフォルトGW)がルーティングテーブルに登録されないのでVPN接続できない。