---
sidebar_position: 102
---

# 98.102、单独使用网段映射

:::tip[说明]

###  1、使用

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

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

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

```c#

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](./img/mapto.jpg)

:::
