林中阴影

Recent content on 林中阴影

马上订阅 林中阴影 RSS 更新: https://blog.heysh.xyz/feed.xml

与IPv6地址战斗

2025年6月4日 21:13

捣腾家里服务器的另一些副产品。

配置ULA前缀

当你需要设置IPv6网关时,常常需要一个不随着运营商前缀变化的内网地址,这时候设置ULA很好用。

OpenWrt设置ULA前缀

OpenWrt设置ULA前缀

这样,在需要临时修改网关时,可以直接

sudo ip -6 route del default && sudo ip -6 route add default via fd22:9:30::88:88 metric 100

其中,fd22:9:30::88:88是网关地址。

自定义后缀

相比于60d1:24e0:fe4a:5c66这样的后缀,还是::88更帅一些。回字自定义后缀有4种写法,我们Linux真是太厉害辣。

如果是原生Debian,用ifupdown的话:

# /etc/network/interfaces
iface <你的ensXX> inet6 auto
 post-up /sbin/ip token set ::88 dev $IFACE

如果是Ubuntu(或者Ubuntu味道的Armbian),一般使用networkmanager:

sudo nmcli connection modify "Wired connection 1" ipv6.addr-gen-mode eui64
sudo nmcli connection modify "Wired connection 1" ipv6.ip6-privacy 0
sudo nmcli connection modify "Wired connection 1" ipv6.token "::88"

如果是(直接安装的)OpenMediaVault,它使用netplan:

# touch /etc/netplan/30-fix-token.yaml
network:
 ethernets:
 ens18:
 ipv6-address-token: "::123:123"
# sudo netplan apply

应该还会有人用systemd-networkd配置网络,自己读manpage去吧,祝你成功。

更快地推送IPv6地址

之前的DDNS更新脚本,或者ddns-go,都是使用cron来轮询的。而ip monitor命令不需要轮询,在IP地址变更的第一时间就会发送消息。配合靠谱的推送服务,可以比别人提前……呃……大概五分钟。

所以没什么用处,建议直接ddns-go。

#cat /etc/systemd/system/dns-updater.service
[Unit]
Description=Dynamic DNS updater
DefaultDependencies=no
Wants=local-fs.target
After=local-fs.target
Wants=network-pre.target
Before=network-pre.target

[Service]
Type=exec
ExecStart=/opt/ddns-updater

[Install]
WantedBy=sysinit.target
#cat /opt/ddns-updater
#!/bin/sh -e

ip -o -6 monitor address |
 while read index iface proto addr dummy scope temporary dummy; do
 case "$iface:$proto:$scope:$temporary" in
 ens18:inet6:global:dynamic)
 addr="${addr%/*}"
 case "$addr" in
 f*) continue ;; # 跳过以 f 开头的地址
 esac
 if [ "$addr" != "$current" ]; then
 NEW_IP="$addr"
 # 我这里发送到了企业微信机器人,也可以用bark、nfty.sh之类
 curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxx' \
 -H...

剩余内容已隐藏

查看完整文章以阅读更多