98.101、单独使用应用层SNAT
说明
1、使用
有效解决win7/8,win server2008/2012无法使用NetNat
的问题
如果你使用的是linker.tun
类库,已经集成应用层SNAT,使用LinkerTunDeviceAdapter.SetSystemNat
使用系统NAT和LinkerTunDeviceAdapter.SetAppNat
使用应用层SNAT即可
去windivert下载抓包驱动,放置合适的WinDivert.dll
和WinDivert.sys
到程序根目录,然后 nuget 安装 linker.snat
,然后编写 代码
internal class Program
{
static void Main(string[] args)
{
//初始化
LinkerSrcNat linkerSrcNat = new LinkerSrcNat();
bool result = linkerSrcNat.Setup(new SetupInfo{
//虚拟网卡IP
Src = IPAddress.Parse("10.18.18.2"),
//仅访问192.168.1.0/24时NAT
Dsts = new AddrInfo[]{
new AddrInfo(IPAddress.Parse("192.168.1.0"),24)
},
//本机局域网IP,用于替换为源IP
InterfaceIp = IPAddress.Parse("192.168.1.2")
},out string error);
//在将TCP/IP数据包写入网卡前增加一个操作
if(linkerSrcNat.Inject(packet) == false)
{
//不需要NAT或者NAT失败,这里可以继续把数据包写入虚拟网卡
}
//关闭
linkerSrcNat.Shutdown();
Console.ReadLine();
}
}