Nat6 的实现#
部署这个的原因呢是我改造家里的软路由,原先使用的 openwrt,使用 dnsmasq 我不喜欢,所以寒假空忙时间去实现自己从零开始配置,选择自己喜欢的软件和工具,DIY 化
可能有人看到这个标题就要问了,ipv6 明明可以直接公网分配给每一个设备,为什么还要设置 nat6 呢
其实不是我不想配置,实在是我所动用的工具有点难以实现(主要还是技术不够)
大部分所实现分配公网 v6 所使用的是使用 dnsmasq 和 wide-dhcpv6-client 之类的工具,我使用的工具是 isc-dhcp-server 和 radvd,dns 解析为 AdGurad Home
Important
本文基于 Debian11.8,X86_64 架构,如使用环境不同,请自行搜索相应对照
1. 编辑 isc-dhcp-server#
- 编辑 isc-dhcp-server
vim /etc/default/isc-dhcp-server
- INTERFACESv6="" 填上你的内网网卡名称(lan 口)
-
编辑 sysctl.conf
vim /etc/sysctl.conf
貌似在电信宽带下需要修改
/etc/sysctl.conf, 这条需要 2 改为 1
net.ipv6.conf.ppp0.accept_ra=1
而联通宽带还需要增加一条
在 /etc/ppp/peers/dsl-provider 文件,加入
+ipv6
否则 wan 口没法获取 ipv6 公网地址
-
配置 ipv6 静态地址
vim /etc/network/interfaces
-
添加以下内容,加在 lan 口配置处,我是 eno1
iface eno1 inet6 static
address fc00:a:b:100::1
netmask 64
这个地址你可以根据 v6 规范自己修改,内网地址
-
配置 dhcp6
vim /etc/dhcp/dhcpd6.conf
添加上面内容,subnet6 那里开始,那个 fc00🅰️b:100 要根据上面的对照
-
配置 ip6tables
vim /etc/ufw/before6.rules
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s fc00:a:b:100::/64 -o ppp0 -j MASQUERADE
COMMIT
我使用的是 ufw 防火墙,如果你要使用如 iptables 或者 nftables 之类的防火墙,请自行搜索一下如何配置
注意 ppp0 是你的 wan 口名称,请自行修改
2. 安装 radvd#
apt-get install radvd
vim /etc/radvd.conf
这个主要是发 ra 使用,eno1 是 lan 口网卡
interface eno1{
AdvSendAdvert on;
prefix fc00:a:b:100::/64{
AdvOnLink on;
AdvAutonomous on;
};
};
接下来就剩 ipv6 的 dns 了,由于我配置的有AdGuradHome担任 DNS 解析工作,所以我只需要在 dhcpd6.conf 中指定 lan 口的 v6 地址即可
应该是 fc00🅰️b💯:1 和 fe80::62be:b4ff:fe08都可以
TEST#
你可以用你局域网设备测试一下是否有 v6 了
curl 6.ipw.cn
如果有,那就恭喜你成功了
参考#
- wide-dhcpv6 https://blog.otakusaikou.com/2020/11/11/x86-soft-router-and-ipv6/
- ubuntu 路由配置 ipv4 和 ipv6 https://www.youtube.com/watch?v=GnKcM7RZbyc&t=128s
- ipv6 端口转发https://www.emonq.com/ip6tables%E5%AE%9E%E7%8E%B0%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91/
- radvd https://blog.csdn.net/l0605020112/article/details/18225143
- radvd https://www.tomicki.net/ipv6.router.php
- 部署教程 https://arc.net/l/quote/spnbtpmi
此文由 Mix Space 同步更新至 xLog
原始链接为 https://www.ssstttar.com/posts/Z-turn/Nat6