secure NAT 動作モードについて、
secure NATが、カーネルモードで実行されないのですが、何が原因か調べる方法はありますか?
secure NATが、カーネルモードにならない
-
- Site Admin
- Posts: 2293
- Joined: Sat Mar 09, 2013 5:37 am
Re: secure NATが、カーネルモードにならない
何が原因でカーネルモード NAT が利用できないかはデフォルトではログに残りません。
SecureNAT は DHCP で IP アドレスを取得できて、かつ DHCP で与えられたゲートウェイ情報で、インターネットとの疎通性があるインターフェイスを WAN 側として探しますが、これに失敗するとカーネルモード NAT が利用できません。
https://ja.softether.org/4-docs/3-kb/VPNFAQ036
SecureNAT は DHCP で IP アドレスを取得できて、かつ DHCP で与えられたゲートウェイ情報で、インターネットとの疎通性があるインターフェイスを WAN 側として探しますが、これに失敗するとカーネルモード NAT が利用できません。
https://ja.softether.org/4-docs/3-kb/VPNFAQ036
-
- Posts: 162
- Joined: Wed Mar 10, 2021 1:56 am
Re: secure NATが、カーネルモードにならない
たしかに、WIRESHARKでパケットをCAPTUREしてみると、ケース①では、DHCPメッセージがVPN SERVERから出ていません。
ケース②では出ていました。VPN 5.0のバグですかね?
また、
NAT のセッションテーブルの表示がVPN 4.0と5.0では違います。ICMP, PORT 137に関して。
TRACERTの表示もVPN 4.0と5.0では違います。VPN 5.0では最初と最後のルータのIP アドレスしか表示しない。
1.構成
①PC1:VPN SERVER<---PC2:VPN CLIENT
②PC1:VPN CLIENT--->PC2:VPN SERVER
PC1:
OS:WIN11 PRO 24H2
VPN:VPN V5.02B5187(VPNTEST.EXE S, VPNTEST.EXE C。CLIENT SERVERはどちらかを起動)
PC2:
OS:WIN11 HOME 23H2
VPN:VPN V4.44B9807(CLIENT, SERVER共インストール済み。CLIENT SERVERはどちらかを起動)
2.結果
VPNサーバがVPN 5.0 DEVELOPER EDITIONの場合(①)、SecureNATはユーザモードで実行、VPNサーバがDHCP送信しない
VPNサーバがVPN 4.0の場合 (②)、SecureNATはカーネルモードで実行、VPNサーバがDHCP送信した
3.添付
ケース②では出ていました。VPN 5.0のバグですかね?
また、
NAT のセッションテーブルの表示がVPN 4.0と5.0では違います。ICMP, PORT 137に関して。
TRACERTの表示もVPN 4.0と5.0では違います。VPN 5.0では最初と最後のルータのIP アドレスしか表示しない。
1.構成
①PC1:VPN SERVER<---PC2:VPN CLIENT
②PC1:VPN CLIENT--->PC2:VPN SERVER
PC1:
OS:WIN11 PRO 24H2
VPN:VPN V5.02B5187(VPNTEST.EXE S, VPNTEST.EXE C。CLIENT SERVERはどちらかを起動)
PC2:
OS:WIN11 HOME 23H2
VPN:VPN V4.44B9807(CLIENT, SERVER共インストール済み。CLIENT SERVERはどちらかを起動)
2.結果
VPNサーバがVPN 5.0 DEVELOPER EDITIONの場合(①)、SecureNATはユーザモードで実行、VPNサーバがDHCP送信しない
VPNサーバがVPN 4.0の場合 (②)、SecureNATはカーネルモードで実行、VPNサーバがDHCP送信した
3.添付
You do not have the required permissions to view the files attached to this post.
Last edited by hiura on Fri Sep 12, 2025 10:48 am, edited 2 times in total.
-
- Site Admin
- Posts: 2293
- Joined: Sat Mar 09, 2013 5:37 am
-
- Posts: 162
- Joined: Wed Mar 10, 2021 1:56 am
Re: secure NATが、カーネルモードにならない
1.Secure NATがカーネルモードにならないのは、VPN 5.0 のバグのようです。
ファイルIPC.C内の関数 IPCSendIPv4()でエラーreturnしています。結果DHCP Failed.になる。
// Filter the source IP address
if (CmpIpAddr(&ip_src, &ipc->ClientIPAddress) != 0)
{
Debug("___ERROR___IPCSendIPv4 ip_src=%r is not ipc->ClientIPAddress=%r IsIP6(ip)=%X\n", &ip_src, &ipc->ClientIPAddress, IsIP6(&ipc->ClientIPAddress)); // by HIURA
// Cut off packets from illegal IP address
return;
}
変数 ipc->ClientIPAddressの値がIPV6になっています。この変数はどこで定義するのでしょうか?
2.添付
ファイルIPC.C内の関数 IPCSendIPv4()でエラーreturnしています。結果DHCP Failed.になる。
// Filter the source IP address
if (CmpIpAddr(&ip_src, &ipc->ClientIPAddress) != 0)
{
Debug("___ERROR___IPCSendIPv4 ip_src=%r is not ipc->ClientIPAddress=%r IsIP6(ip)=%X\n", &ip_src, &ipc->ClientIPAddress, IsIP6(&ipc->ClientIPAddress)); // by HIURA
// Cut off packets from illegal IP address
return;
}
変数 ipc->ClientIPAddressの値がIPV6になっています。この変数はどこで定義するのでしょうか?
2.添付
You do not have the required permissions to view the files attached to this post.
-
- Site Admin
- Posts: 2293
- Joined: Sat Mar 09, 2013 5:37 am
Re: secure NATが、カーネルモードにならない
たしかにバグのようです。
DHCP要求は 0.0.0.0 から送信されるべきなのですが、0.0.0.0 からの送信が禁止されているため
要求パケットの送信に失敗してしまっているのでしょう。
DHCP要求は 0.0.0.0 から送信されるべきなのですが、0.0.0.0 からの送信が禁止されているため
要求パケットの送信に失敗してしまっているのでしょう。
-
- Posts: 162
- Joined: Wed Mar 10, 2021 1:56 am
Re: secure NATが、カーネルモードにならない
Continued
1.仮処置
ファイルVirtual.C内の関数NnGetNextInterface()で未定義値変数ret->Ipc->ClientIPAddressを参照しているみたいです。
定義値変数(IPV4のIPアドレスをセット)にするコードを追加した。
// Make my IP address zero to avoid error when filtering the source IP address by IPCSendIPv4() on SEP.17, 2025.
UINTToIP(&ret->Ipc->ClientIPAddress, 0);
修正後実行した結果、DHCP サーバーアドレスがIPV6になっている。これもバグ。添付参照。
DHCP サーバーアドレス:"c0a8:1:8051:100 :: "
2.添付
1.仮処置
ファイルVirtual.C内の関数NnGetNextInterface()で未定義値変数ret->Ipc->ClientIPAddressを参照しているみたいです。
定義値変数(IPV4のIPアドレスをセット)にするコードを追加した。
// Make my IP address zero to avoid error when filtering the source IP address by IPCSendIPv4() on SEP.17, 2025.
UINTToIP(&ret->Ipc->ClientIPAddress, 0);
修正後実行した結果、DHCP サーバーアドレスがIPV6になっている。これもバグ。添付参照。
DHCP サーバーアドレス:"c0a8:1:8051:100 :: "
2.添付
You do not have the required permissions to view the files attached to this post.
-
- Site Admin
- Posts: 2293
- Joined: Sat Mar 09, 2013 5:37 am
Re: secure NATが、カーネルモードにならない
これはログの方のバグですね。IP 型を期待するフォーマッタに UINT 型でIPアドレスを渡してしまっているようです。
NLog(t->v, "LH_KERNEL_MODE_START", a->DeviceName,
&a->Ipc->ClientIPAddress, &a->Ipc->SubnetMask, &a->Ipc->DefaultGateway, &a->Ipc->BroadcastAddress,
macstr, &a->CurrentDhcpOptionList.ServerAddress, &a->DnsServerIP);
NLog(t->v, "LH_KERNEL_MODE_START", a->DeviceName,
&a->Ipc->ClientIPAddress, &a->Ipc->SubnetMask, &a->Ipc->DefaultGateway, &a->Ipc->BroadcastAddress,
macstr, &a->CurrentDhcpOptionList.ServerAddress, &a->DnsServerIP);
-
- Posts: 162
- Joined: Wed Mar 10, 2021 1:56 am
Re: secure NATが、カーネルモードにならない
Continued.
1.仮処置
Virtual.C内の関数NativeNatThreadを変更。
IP dhcp_ip; // Added on SEP.17, 2025.
...
UINTToIP(&dhcp_ip, a->CurrentDhcpOptionList.ServerAddress); // Added on SEP.17, 2025.
NLog(t->v, "LH_KERNEL_MODE_START", a->DeviceName,
&a->Ipc->ClientIPAddress, &a->Ipc->SubnetMask, &a->Ipc->DefaultGateway, &a->Ipc->BroadcastAddress,
macstr, &dhcp_ip, &a->DnsServerIP); // IP address for argument must be of type IP. not UINT. on SEP.17, 2025.
2.添付
1.仮処置
Virtual.C内の関数NativeNatThreadを変更。
IP dhcp_ip; // Added on SEP.17, 2025.
...
UINTToIP(&dhcp_ip, a->CurrentDhcpOptionList.ServerAddress); // Added on SEP.17, 2025.
NLog(t->v, "LH_KERNEL_MODE_START", a->DeviceName,
&a->Ipc->ClientIPAddress, &a->Ipc->SubnetMask, &a->Ipc->DefaultGateway, &a->Ipc->BroadcastAddress,
macstr, &dhcp_ip, &a->DnsServerIP); // IP address for argument must be of type IP. not UINT. on SEP.17, 2025.
2.添付
You do not have the required permissions to view the files attached to this post.