• Linux ipv6设置


    一、IPV6简介

    随着IPV4地址耗尽,运营商开始回收并推进IPV4大内网地址,基于IPV4的传统内网映射、动态域名即将失效;但同时我们也要看到,运营商的IPV6推进计划基本快要完成了,现在我们的宽带、手机流量、各大门户网站,其实都已经支持IPV6了。

    IPV6地址优势和特点:

    1.全局可达性和灵活性
    2.网络地址聚合性更高
    3.地址的多宿主特性
    4.地址自动分配方式简单
    5.更容易实现端到端通讯

    IPV6分为:

    IPV6单播地址
    IPV6组播地址
    IPV6任意播地址

    ipv6的地址格式类似:XXXX: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX。它是128位的,一共8段,每段包含四个X,每个X是一个16进制(16=2^4)数(4位),因此一段XXXX是4*4=16位,8段一共128位。相邻字段用冒号分隔。

    ipv6的IP包含三部分:

    1)站点前缀:前三段(48位),通常由ISP或者区域网络注册机构分配的公共拓扑;
    2)子网ID:第四段(16位),是站点的内部ID;
    3)接口ID:最右侧的四段(64位),接口ID可以从MAC地址自动配置,也可手动配置。

    IP示例:

    2001:0db8:3c4d:0015:0000:0001:1a2f:1a2b

    2001:0db8:3c4d是站点前缀,0015是子网ID,0000:0001:1a2f:1a2b是接口ID。

    IPV6的简化表示法,每段中前面的0000可以省略,连续的多段0000可以省略为::,但只能出现一次。

    案例:

    1. 1080:0:0:0:8:800:200c:417a -> 1080::8:800:200c:417a
    2. Ff01:0:0:0:0:0:0:101 -> ff01::101
    3. 0:0:0:0:0:0:0:0 -> ::
    4. 0:0:0:0:0:0:0:1 -> ::1(代表ipv4中的127.0.0.1
    5. ::ffff:10.3.69.93是支持IPV4映射过来的IPV6地址,它是在不支持IPV6的节点上用来表示IPV4节点,原ipv4地址为10.3.69.93

    申请 IPv6 地址

    1、在 tunnelbroker.net 上申请一个免费的 IPv6 地址。

    1) 访问 tunnelbroker.net 注册一个自己的账号。

    2) 创建IPV6隧道 

    选择 Create Regular Tunnel 创建一个到自己公网 IP 的通道。(经本人测试,Tunnel Servers 可用 Tokyo, JP,Los Angeles, CA, US 可以配置,但实际网络环境不可用)。

    输入服务器IP  然后选择 日本 点击下面的创建 ,经本人测试可用:

     

    3) 找到 Example Configurations,选择操作系统对应的脚本(CentOS 7.x 选择 Linux-net-tools)

    复制下来,在 linux 的控制台中执行脚本:

    1. ifconfig sit0 up
    2. ifconfig sit0 inet6 tunnel ::66.220.15.43
    3. ifconfig sit1 up
    4. ifconfig sit1 inet6 add 2001:4e0:d:e60::2/64
    5. route -A inet6 add ::/0 dev sit1

    注意:

    1. sit0代表你的设备
    2. 这里我的是eth0 (如果不知道可以执行 ifconfig 查看自己的设备名称 )
    3. 然后执行:

    4) ping一下服务器的 IPv6 地址,看看是否工作正常(CentOS 上 IPv6 版的 ping 名为 ping6),如果通了就说明可以了:

    1. ping6 2001:4e0:d:e60::2
    2. PING 2001:4e0:d:e60::2(2001:4e0:d:e60::2) 56 data bytes
    3. 64 bytes from 2001:4e0:d:e60::2: icmp_seq=1 ttl=64 time=340 ms
    4. 64 bytes from 2001:4e0:d:e60::2: icmp_seq=2 ttl=64 time=348 ms
    5. 64 bytes from 2001:4e0:d:e60::2: icmp_seq=3 ttl=64 time=349 ms

    2、修改 /etc/init.d/network 网卡的启动脚本, 系统重启时自动配置IPv6 tunnel

    编辑脚本:

    1. cp /etc/init.d/network /etc/init.d/network_backup
    2. vi /etc/init.d/network

    在 touch /var/lock/subsys/network 之前添加以下脚本:

    1. # 添加 IPv6 脚本支持
    2. ifconfig sit0 up
    3. ifconfig sit0 inet6 tunnel ::66.220.15.43
    4. ifconfig sit1 up
    5. ifconfig sit1 inet6 add 2001:4e0:d:e60::2/64
    6. route -A inet6 add ::/0 dev sit1
    7. #修改结束

    现在每次重启机器都可以自动分配好 IPv6 地址。

    3、域名解析 ,使用 AAAA 记录设置 IPv6 

    接下来就是ping6 域名了:

    4、网站配置IPV6

    为域名配置AAAA记录,A记录为IPV4地址,AAAA记录为IPV6地址,IP地址在我们购买VPS时会告诉我们。

    为我们的web服务配置IPV6监听,比如我所使用的APPNODE面板需要单独为IPV6配置监听服务。

    DNS同步需要一些时间,随后我们对域名进行ping测试,此时解析的已经是IPV6地址了。(注意,解析IPV6地址的前提是你的电脑也是IPV6):

    1. 正在 Ping 9sb.org [2a00:b700:2::9] 具有 32 字节的数据: 
    2. 来自 2a00:b700:2::9 的回复: 时间=134ms 
    3. 来自 2a00:b700:2::9 的回复: 时间=137ms 
    4. 来自 2a00:b700:2::9 的回复: 时间=134ms 
    5. 来自 2a00:b700:2::9 的回复: 时间=134ms

    网页解析测试,按F12查看,此时网站为IPV6响应,配置完成。

    5、 配置家庭宽带IPV6地址

    IPV6号称可以为地球上的每一粒沙子配置IP地址,目前三大运营商的宽带和数据流量都已经配置公网IPV6了,但是很多家用路由器尚不支持IPV6,这里我以我的Padavan老毛子固件为例展示IPV6的配置。

    如果使用路由器拨号,需要检查光猫是否开启了IPV6桥接,如果没有,百度一下,实在不行你就打客服嘛。

    路由器设置,两步,配置完成后保存重启路由器,此时局域网内的设备都获取到了公网地址。

    查看电脑IP地址:

    此时ping外网地址已经通了:

    1. 正在 Ping 9sb.org [2a00:b700:2::9] 具有 32 字节的数据: 
    2. 来自 2a00:b700:2::9 的回复: 时间=134ms
    3. 来自 2a00:b700:2::9 的回复: 时间=137ms 
    4. 来自 2a00:b700:2::9 的回复: 时间=134ms 
    5. 来自 2a00:b700:2::9 的回复: 时间=134ms

    进行IPV6测试,此网站可以确定我们IPV6的状态test-ipv6.com。

    外网ping进来是不通的,不是说IPV6都是公网地址吗?为什么不通呢?

    这里就要重点说一下,安全问题!

    如果你仅仅是想要访问外部IPV6地址,那么配置到此就结束了,如果你确定你要将自己的内部网络配置为IPV6公网地址并直接暴露在互联网上,自愿承受因此带来的风险,勇士请继续看下去!

    IPV6之所以不能被外网访问,是因为我们的设备还有至少三层防火墙。

    第一层防火墙是电信运营商防火墙,出于安全考虑,运营商会阻断我们80、443、21等常见端口的流量,并限制UDP发包;我们是不能关闭运营商防火墙的,所以只能选择使用其他端口。

    第二层防火墙是路由器内的防火墙,此防火墙默认配置为禁止外部访问,在这个默认状态下,我们的IPV6设备是安全的,等于还是处于内网之中;此防火墙可以关闭。

    第三层防火墙是设备自身的防火墙,比如windows10默认就禁止了ping协议,即便是公网的机器也不能ping通;此时我们可以设置解除ping和开放端口。

    关闭路由器防火墙(此时你必须明确,你已经没有内网保护了,你必须为自己的信息安全负责!)

    关闭windows防火墙,或允许ping通过:

    从外网ping内网设备地址,已经ping通了,此时内部设备全部为IPV6公网状态:

    6、可使用以下网址测试服务器对 IPv6 的支持情况:

    1. chair6.net
    2. ipv6-test.com
    3. https://ipv6.jmu.edu.cn/

    7、IPV6 DNS服务器

    阿里ipv6 dns:2400:3200::1 / 2400:3200:baba::1

    百度ipv6 dns:240c::6666

    天地互连 ipv6 dns:240C::6666 240C::6644

    谷歌 vip6 dns:2001:4860:4860::8888/2001:4860:4860::8844

    二、Linux配置IPV6

    开启IPV6模块

    阿里云公开的 CentOS6和CentOS7 镜像将 IPv6 支持给去掉了,需要加载相关模块。

    并且在内核目录下查找到一个文件:

    但是不能编辑: 

    1、修改 /etc/modprobe.d/disable_ipv6.conf(没有则创建),开启centos系统的IPV6功能

    修改 options ipv6 disable 为 0:

    1. cp /etc/modprobe.d/disable_ipv6.conf /etc/modprobe.d/disable_ipv6.conf_backup ##先备份原始配置
    2. vi /etc/modprobe.d/disable_ipv6.conf
    3. 修改前:
    4. alias net-pf-10 off
    5. options ipv6 disable=1
    6. 修改后:
    7. alias net-pf-10 off
    8. options ipv6 disable=0

    2、修改 /etc/sysconfig/network(没有则创建)

    修改 NETWORKING_IPV6为yes:

    1. cp /etc/sysconfig/network /etc/sysconfig/network_backup
    2. vi /etc/sysconfig/network
    3. 修改前:
    4. PEERNTP=no
    5. NETWORKING_IPV6=no
    6. GATEWAY=139.255.255.0
    7. 修改后:
    8. PEERNTP=no
    9. NETWORKING_IPV6=yes
    10. GATEWAY=139.255.255.0

    3、修改 /etc/sysconfig/network-scripts/ifcfg-eth0

    添加 IPV6INIT 为 yes 和 IPV6_AUTOCONF 为 yes,主要是新增 IPV6ADDR 和 IPV6_DEFAULTGW 两部分, 网址根据情况配置IPV6INIT="yes"
    IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy" IPV6ADDR=2001:250:4000:2000::53 IPV6_DEFAULTGW=2001:250:4000:2000::1等:

    1. cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0_backup
    2. vi /etc/sysconfig/network-scripts/ifcfg-eth0
    3. 修改前:
    4. DEVICE=eth0
    5. ONBOOT=yes
    6. BOOTPROTO=static
    7. IPADDR=10.10.10.1
    8. NETMASK=255.255.254.0
    9. 修改后:
    10. DEVICE=eth0
    11. ONBOOT=yes
    12. BOOTPROTO=static
    13. IPADDR=10.10.10.1
    14. NETMASK=255.255.254.0
    15. IPV6INIT=yes
    16. IPV6_AUTOCONF=yes

    4、修改 /etc/sysctl.conf

    修改 net.ipv6.conf.all.disable_ipv6 为 0, net.ipv6.conf.default.disable_ipv6 为 0 和 net.ipv6.conf.lo.disable_ipv6 为 0:

    1. cp /etc/sysctl.conf /etc/sysctl.conf_backup
    2. vi /etc/sysctl.conf
    3. 修改前:
    4. vm.swappiness = 0
    5. net.ipv4.neigh.default.gc_stale_time=120
    6. net.ipv4.conf.all.rp_filter=0
    7. net.ipv4.conf.default.rp_filter=0
    8. net.ipv4.conf.default.arp_announce = 2
    9. net.ipv4.conf.all.arp_announce=2
    10. net.ipv4.tcp_max_tw_buckets = 5000
    11. net.ipv4.tcp_syncookies = 1
    12. net.ipv4.tcp_max_syn_backlog = 1024
    13. net.ipv4.tcp_synack_retries = 2
    14. net.ipv6.conf.all.disable_ipv6 = 1
    15. net.ipv6.conf.default.disable_ipv6 = 1
    16. net.ipv6.conf.lo.disable_ipv6 = 1
    17. net.ipv4.conf.lo.arp_announce=2
    18. 修改后:
    19. vm.swappiness = 0
    20. net.ipv4.neigh.default.gc_stale_time=120
    21. net.ipv4.conf.all.rp_filter=0
    22. net.ipv4.conf.default.rp_filter=0
    23. net.ipv4.conf.default.arp_announce = 2
    24. net.ipv4.conf.all.arp_announce=2
    25. net.ipv4.tcp_max_tw_buckets = 5000
    26. net.ipv4.tcp_syncookies = 1
    27. net.ipv4.tcp_max_syn_backlog = 1024
    28. net.ipv4.tcp_synack_retries = 2
    29. net.ipv6.conf.all.disable_ipv6 = 0
    30. net.ipv6.conf.default.disable_ipv6 = 0
    31. net.ipv6.conf.lo.disable_ipv6 = 0
    32. net.ipv4.conf.lo.arp_announce=2

    5、创建系统在启动时自动加载 IPv6 模块的脚本

    创建脚本文件 ipv6.modules:

    1. vi /etc/sysconfig/modules/ipv6.modules
    2. !/bin/sh
    3. if [ ! -c /proc/net/if_inet6 ] ; then
    4. exec /sbin/insmod /lib/modules/uname -r/kernel/net/ipv6/ipv6.ko
    5. fi

    6、重启系统,加载 IPv6 模块

    查看是否开启Ipv6:

    lsmod | grep ipv6
    

    果没有加载执行该命令加载:

    modprobe ipv6

    ifconfig查看是否有ipv6地址:

     查看 IPv6 模块:

    1. ifconfig | grep -i inet6 #### 查看ipv6的信息,有看到输出就可以
    2. inet6 addr: fe80::x:x:x:x/64 Scope:Link
    3. inet6 addr: fe80::x:x:x:x/64 Scope:Link
    4. inet6 addr: x:x:x:x::2/64 Scope:Global
    5. inet6 addr: fe80::x:x/128 Scope:Link
    6. inet6 addr: ::1/128 Scope:Host

    netstat –tuln查看服务监听的ip是否有ipv6格式地址: 

    静态IPV6地址设置

    打开/etc/sysconfig/network-scripts:

    打开ifcfg-ensxxx配置静态ipv6地址:

    1. IPV6INIT=“yes” //是否开机启用IPV6地址
    2. IPV6_AUTOCONFI=“no” //是否使用IPV6地址的自动配置
    3. IPV6ADDR=“2001:da8:8003:801:10:3:71:220//IPV6地址
    4. IPV6DEFAULTGW=“2001:da8:8003:801::1%ens192” //IPV6地址网关
    5. IPV6_FAILURE_FATAL=no //如果配置失败,不会关闭网口,保证IPV4的配置还能生效

    配置完成后重启生效:

    service network restart

    配置完成后使用ssh/scp/rsync/ping命令不在需要指定网卡名。

    CentOS5 IPV6配置:

    1. vim /etc/sysconfig/network-scripts/ifcfg-eth0
    2. DEVICE=eth0
    3. BOOTPROTO=static
    4. BROADCAST=192.73.1.255
    5. HWADDR=00:0C:29:2C:16:24
    6. IPADDR=192.73.1.45
    7. IPV6ADDR=2021:1:14:18::45/64
    8. IPV6_DEFAULTGW=2021:1:14:18::1
    9. IPV6INIT=yes
    10. IPV6_AUTOCONF=no
    11. NETMASK=255.255.254.0
    12. NETWORK=192.73.0.0
    13. ONBOOT=yes
    1. vim /etc/resolv.conf
    2. search 0.5.4a3
    3. nameserver 218.30.19.40
    4. nameserver 114.114.114.114
    1. vim /etc/sysconfig/network
    2. NETWORKING=yes
    3. NETWORKING_IPV6=yes
    4. HOSTNAME=2.0.5.4a3
    5. GATEWAY=192.73.0.1
    6. IPV6_DEFAULTGW=2021:1:14:18::1%eht0

    CentOS6 IPV6配置:

    IPV6地址为2020:2500:4000:2000::88,前缀64。网关为2020:2500:4000:2000::1

    1. vim ifcfg-ens33
    2. DEVICE=eth0
    3. TYPE=Ethernet
    4. ONBOOT=yes
    5. NM_CONTROLLED=yes
    6. BOOTPROTO=none
    7. IPADDR=192.73.1.46
    8. GATEWAY=192.73.0.1
    9. NETMASK=255.255.254.0
    10. DNS1=218.30.19.40
    11. DNS2=114.114.114.114
    12. IPV6INIT=yes
    13. IPV6ADDR=2021:5:6:2000::47/64
    14. IPV6_DEFAULTGW=2021:5:6:2000::1
    15. PREFIX=23
    16. DEFROUTE=yes
    17. IPV4_FAILURE_FATAL=yes
    18. IPV6_AUTOCONF=no
    19. IPV6_DEFROUTE=yes
    20. IPV6_FAILURE_FATAL=no
    21. NAME="System eth0"
    22. HWADDR=00:0C:29:7F:E8:55

    Centos7 IPV6配置:

    1. vim ifcfg-ens33
    2. PROXY_METHOD="none"
    3. BROWSER_ONLY="no"
    4. BOOTPROTO="static"
    5. DEFROUTE="yes"
    6. IPV4_FAILURE_FATAL="no"
    7. IPV6INIT="yes"
    8. IPV6_AUTOCONF="yes"
    9. IPV6_DEFROUTE="yes"
    10. IPV6_FAILURE_FATAL="no"
    11. IPV6_ADDR_GEN_MODE="stable-privacy"
    12. NAME="ens33"
    13. UUID="daf72edb-d29f-453a-beca-e2396b4dbbf2"
    14. DEVICE="ens33"
    15. ONBOOT="yes"
    16. IPV6ADDR=2020:2500:4000:2000::58/64
    17. IPV6_DEFAULTGW=2020:2500:4000:2000::1/64
    18. IPADDR=192.73.1.45
    19. GATEWAY=192.73.0.1
    20. NETMASK=255.255.254.0
    21. DNS1=218.30.19.40
    22. DNS2=114.114.114.114
    23. IPV6_PRIVACY=no
    24. ZONE=public

    增加网关:

    1. vim /etc/sysconfig/network
    2. NETWORKING=yes
    3. NETWORKING_IPV6=yes
    4. GATEWAY=192.73.0.1
    5. IPV6_DEFAULTGW=2021:5:6:2000::1%ens33

    添加IPV6 DNS:

    1. vim /etc/resolv.conf
    2. # Generated by NetworkManager
    3. search localdomain
    4. nameserver 218.30.19.40
    5. nameserver 114.114.114.114
    6. nameserver 2400:3200:baba::1
    7. nameserver 240c::6666

    添加IPV6路由:

    1. route -A inet6 add default gw 2020:2500:4000:2000::1/64 dev eth0
    2. route -A inet6 -n
    3. route -A inet6 del 2020:2500:4000:2000::/64

    关闭防火墙:

    service ip6tables stop

    测试:

    1. C:\Users\Lenovo>ping -6 fe80::14cc:7f77:da11:3ef1%9     // ping -6 目标机IPv6%本机IPv6端口
    2. C:\Users\Lenovo>ping6 fe80::8db7:57f0:78fe:f6d2%ens33  // ping6 目标机IPv6%本机IPv6端口

    访问:

    http://[2020:2500:4000:2000::58]:8080/

    Windows和Linux互相ping通:

    windows和linux之间相互ping通,需要DNS一样都为240c::6666,并且Linux要设置IPV6地址为手动。

    windows7:

    1. 2021:5:6:2000::45
    2. 64
    3. 2021:5:6:2000::1
    4. 240c::6666
    5. 2400:3200:baba::1

    Linux:

    1. TYPE=Ethernet
    2. PROXY_METHOD=none
    3. BROWSER_ONLY=no
    4. BOOTPROTO="static"
    5. DEFROUTE=yes
    6. IPV4_FAILURE_FATAL=no
    7. IPV6INIT=yes
    8. IPV6_AUTOCONF=no
    9. IPV6_DEFROUTE=yes
    10. IPV6_FAILURE_FATAL=no
    11. IPV6_ADDR_GEN_MODE=stable-privacy
    12. NAME=ens33
    13. #UUID="f2182a02-5fa2-4dba-aea3-6a16692ae005"
    14. DEVICE=ens33
    15. ONBOOT=yes
    16. IPADDR=192.73.1.47
    17. PREFIX=23
    18. HWADDR=00:0C:29:01:14:18
    19. GATEWAY=192.73.0.1
    20. DNS1=218.30.19.40
    21. DNS2=114.114.114.114
    22. IPV6ADDR=2021:5:6:2000::47/64
    23. IPV6_DEFAULTGW=2021:5:6:2000::1
    24. IPV6_PRIVACY=no
    25. DNS3=240c::6666
    26. UUID=c96bc909-188e-ec64-3a96-6a90982b08ad

    测试:

    1. ping -6 2021:5:6:2000::47
    2. ping6 2021:5:6:2000::45
    3. https://[2021:5:6:2000::45]:3000/login.html

    CentOS7:

    1. TYPE=Ethernet
    2. PROXY_METHOD=none
    3. BROWSER_ONLY=no
    4. BOOTPROTO=none
    5. DEFROUTE=yes
    6. IPV4_FAILURE_FATAL=yes
    7. IPV6INIT=yes
    8. IPV6_AUTOCONF=yes
    9. IPV6_DEFROUTE=yes
    10. IPV6_FAILURE_FATAL=no
    11. IPV6_ADDR_GEN_MODE=stable-privacy
    12. NAME=ens33
    13. UUID=fcd4e886-2dec-4475-877e-0446fd5efeeb
    14. DEVICE=ens33
    15. ONBOOT=yes
    16. IPADDR=192.73.1.47
    17. PREFIX=23
    18. GATEWAY=192.73.0.1
    19. DNS1=218.30.19.40
    20. DNS2=114.114.114.114
    21. IPV6ADDR=2021:5:6:2000::47/64
    22. IPV6_DEFAULTGW=2021:5:6:2000::1
    23. DNS3=240c::6666
    24. IPV6_PRIVACY=no     
    25. vim /etc/resolv.conf
    26. # Generated by NetworkManager
    27. nameserver 218.30.19.40
    28. nameserver 114.114.114.114
    29. nameserver 240c::6666

    windows7:

    1. 2021:5:6:2000::49
    2. 64
    3. 2021:5:6:2000::1
    4. 240c::6666
    5. 2400:3200:baba::1

    测试:

    1. ping6 2021:5:6:2000::49
    2. ping -6 2021:5:6:2000::47

    配置临时IPV6地址

    配置临时的IPV6地址,配置的地址在系统重启或者网卡重启后失效:

    ifconfig eth0 inet6 add 2001:250:250:250:250:250:250:222/64 

    为网卡ethX添加IPV6网关,配置的网关在系统重启或者网卡重启后失效:

    route -A inet6 add default gw 2001:250:250:250::1 dev ethX

    ping 一个可连通的IPV6地址:

    ping6 2001:250:250:250:250:250:250:222

    查看ipv6地址

    cat /proc/net/if_inet6
    

     

    三、IPV6通信

     1、ping命令

    1. ping6/ping -6 ipv6地址%网络的网段名
    2. ping6/ping -6 ipv6地址 -I 网络网段名

    2、 ssh命令

    1. ssh 用户名@Ipv6地址%网段名
    2. ssh fe80::20c:29ff:feb1:bc32%ens192

    3、scp命令 

    1. scp 文件 [ipv6地址]:需要拷贝的路径
    2. scp -r mysql-libs.zip [fe80::20c:29ff:fe47:8073%ens32]:/root

    4、rsync命令

    1. rsync –itv 文件 [ipv6地址%网段名]:拷贝路径
    2. rsync -rtv kafka_2.11 [fe80::20c:29ff:fe47:8073%ens32]:/root/test

     

    5、获取网卡名 

    cat /proc/net/dev| awk '{i++;if(i>2){print $1}}'|awk -F ':' '{print $1}'|grep -v -E 'docker|flannel|lo|veth'
    

  • 相关阅读:
    js 对页面任一地方进行监听点击事件 (如果点击是超链接以另一窗口打开 并 对超链接赋值内容,300毫秒后还原超链接)
    Scala的隐式转换
    SpringBoot实现定时任务的三种方式
    Kamiya丨Kamiya艾美捷小鼠转铁蛋白ELISA说明书
    为什么vscode更新不成功,系统找不到指定路径
    【架构师(第十二篇)】脚手架之命令行交互工具 inquirer.js 使用方法
    NFTScan NFT API 在 NFTFi 开发中的应用
    JavaEE UDP报文结构
    高效、优雅的对象copy之MapStruct入门到精通,实战踩坑版
    30天消化MyBatis源码解析笔记,吊打面试官,offer接到手软
  • 原文地址:https://blog.csdn.net/qq_35029061/article/details/126209898