ubuntu通过EUI-64固定IPv6地址后缀,方便防火墙规则配置

浩宇看科技 2025-02-19 21:58:59

本文隶属于“折腾进阶记录干货枯燥版”合集,是本人记录折腾过程记录的合集,用于方便后续复现。内容偏向干货相对枯燥。教程所有内容有经过本人设备实操,对其他设备可能环境不同无法复现,所以教程仅供参考。

折腾设备

ubuntu22.04桌面系统,虚拟系统,运行于esxi7.0上,3核6g,一张虚拟千兆网卡,一张直通x520万兆网卡。

折腾目的

ubuntu通过EUI-64 固定ipv6地址的后四段,后四段只与 MAC 地址有关,不随前缀变化,方便设置防火墙规则。使得ddns内网穿透过程中,可以从外网顺利通过防火墙访问内网的ubuntu服务器。

无状态的 IPv6 有 eui64 和 stable-privacy 模式

eui64 的 IPv6 地址后四段是固定的,只与 MAC 地址有关,不随前缀变化,方便设置防火墙规则。stable-privacy 的 IPv6 地址后四段是相对固定的,与 UUID,前缀都相关。前缀变化,后四段地址也会变,不利于防火墙规则的设置。修改配置文件切换为eui64模式

从桌面环境的网络配置中可以看到两个网络连接,分别是“有线连接1”和“有线连接2”。分别对应虚拟网卡和x520万兆网卡,本次修改x520。

通过终端输入下面命令,进入/etc/NetworkManager/system-connections/目录内,找到“'有线连接 2.nmconnection'”配置文件。

cd /etc/NetworkManager/system-connections/

使用root权限编辑配置文件

sudo vim '有线连接 2.nmconnection'

将下图红框中的stable-privacy改为eui64,保存重启。

重启后通过ip命令找到对应网卡的ipv6地址,例如查找eth0网卡的ipv6地址

ip -6 -o addr show eth0

分别查看ipv6地址的后四段是否通过eui64生成,如果是就代表配置成功。

防火墙配置

需要路由器支持ipv6防火墙配置,部分家用路由器不具备自定义ipv6防火墙规则。这里以openwrt为例子。

假设ipv6地址为“2500:3FB8:F42D:8EDE:9E42:20FF:FE41:1053”。前面4段为“2500:3FB8:F42D:8EDE”是路由器下发,对于非专线用户来说会随时间发生变化。后面4段“9E42:20FF:FE41:1053”是根据网卡mac地址使用eui64生成的不会发生变化。

在配置防火墙目标地址时,将其写成这这种格式“ ::后面4段的地址/::ffff:ffff:ffff:ffff ”

例如上面的ipv6地址就变成下面的样子

::9e42:20ff:fe41:1053/::ffff:ffff:ffff:ffff

登录openwrt控制面板配置防火墙,新增转发规则。由于数据包通过wan后在到lan。所以选择源区域为wan,目标区域为lan。选择协议,源端口留空,目标地址填入上面转化好的,目标端口选择,ubuntu需要穿透的端口,操作选接受,保存应用。

ddns-go动态域名软件,使用命令获取eui64生成地址并解析

ddns-go是动态域名更新软件,支持多个域名服务商,包括阿里云,华为云,百度云,腾讯云,赛博大善人Cloudflare等解析。本次仅仅讨论使用命令方式获取正确的eui64生成公网ipv6地址。

使用下面的命令获取网卡的ipv6地址,我这里的网卡名为ens224。根据自己实际情况修改网卡名。

ip -6 addr show ens224

获得一下输出

lu@dd:~$ ip -6 addr show ens2243: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000altname enp19s0inet6 2500:3fb8:f42d:8ede::2db/128 scope global dynamic noprefixroutevalid_lft 42570sec preferred_lft 42570secinet6 2500:3fb8:f42d:8ede:917c:7da4:37b3:5157/64 scope global temporary dynamicvalid_lft 223656sec preferred_lft 85666secinet6 2500:3fb8:f42d:8ede:9e42:20ff:fe41:1053/64 scope global dynamic mngtmpaddr noprefixroutevalid_lft 223656sec preferred_lft 137256secinet6 fe80::9e42:20ff:fe41:1053/64 scope link noprefixroutevalid_lft forever preferred_lft forever

可以发现有很多条ipv6地址,其中由eui64获得的地址第三条。

inet6 2500:3fb8:f42d:8ede:9e42:20ff:fe41:1053/64 scope global dynamic mngtmpaddr noprefixroute

由于ipv6地址前四段是变化的,后四段不变,又由于第四条ipv6地址的后四段也相同。所以取“9e42:20ff:fe41:1053/64 scope global dynamic mngtmpaddr”这个内容,即不随时间变化也不和第四条完全相同。

然后组成下面命令,即通过ip -6命令获取ens224网卡的ipv6地址,且仅输出包含“9e42:20ff:fe41:1053/64 scope global dynamic mngtmpaddr”的内容

ip -6 addr show ens224 | grep '9e42:20ff:fe41:1053/64 scope global dynamic mngtmpaddr'  

输出如下

lu@dd:~$ ip -6 addr show ens224 | grep '9e42:20ff:fe41:1053/64 scope global dynamic mngtmpaddr'inet6 2500:3fb8:f42d:8ede:9e42:20ff:fe41:1053/64 scope global dynamic mngtmpaddr noprefixroute

打开ddns-go控制面板-勾选命令获取——将命令复制到命令框-保存即可。

0 阅读:0
浩宇看科技

浩宇看科技

感谢大家的关注