跳到主要内容

98.102、单独使用网段映射

说明

1、使用

有效解决使用虚拟网卡组网时,多个设备内网网段冲突的问题

如果你使用的是linker.tun类库,已经集成网段映射,使用LinkerTunDeviceAdapter.SetMap设置映射即可

在nuget 安装 linker.snat,然后编写代码


internal class Program
{
static void Main(string[] args)
{
//初始化
LinkerDstMapping linkerDstMapping = new LinkerDstMapping();

//在喜欢的时候设置映射,随时都可以,设置为空数组就不启用了
linkerDstMapping.SetDsts(new DstMapInfo[]{
new DstMapInfo{
//一个假IP。比如对方访问 192.168.188.2
FakeIP = IPAddress.Parse("192.168.188.0"),
//真实IP,实际访问到的IP
RealIP = IPAddress.Parse("192.168.1.0"),
//掩码,24替换前三段
//当问192.168.188.2的时候,将会访问到192.168.1.2
PrefixLength = 24,
}
});

//在收到对方发来的数据包写入网卡前使用,替换为真IP
linkerDstMapping.ToRealDst(packet);
//在从虚拟网卡读取到数据包发送给对方之前调用,还原为假IP
linkerDstMapping.ToFakeDst(packet);

Console.ReadLine();
}
}

2、原理图

Docusaurus Plushie