syno-iptables
syno-iptables copied to clipboard
测试IPv6连通性失败
部署的环境
系统版本/型号
内核
iptables版本
遇到的问题
使用的是 geminilake
的预编译模块 , 根据原生Docker IPv6 NAT模式 (DSM 7.x)的步骤进行部署
vim /var/packages/ContainerManager/etc/dockerd.json
vim /var/packages/ContainerManager/scripts/start-stop-status
sudo docker run --rm busybox ping -6 -c4 2400:3200::1
sudo systemctl status pkg-ContainerManager-dockerd.service
你修改的/var/packages/ContainerManager/scripts/start-stop-status
中是否包含以下这行?
cat /var/packages/ContainerManager/etc/dockerd.json | jq '. + {experimental: true, "fixed-cidr-v6": "fd00::/80", ip6tables: true, ipv6: true}' > /var/packages/ContainerManager/etc/dockerd.json2; mv -f /var/packages/ContainerManager/etc/dockerd.json{2,}
之前遇到过的问题是,ContainerManager重启后ip6tables: true
和ipv6: true
就没了,你可以通过再次查看/var/packages/ContainerManager/etc/dockerd.json
来确认
/var/packages/ContainerManager/scripts/start-stop-status
包含了
# install modules
iptablestool --insmod "${DockerServName}" ${InsertModules}
$DockerUpdaterBin postinst updatedockerdconf "$(get_install_volume_type)"
# start docker event watcherd
/usr/syno/bin/synosystemctl start "${DockerEventWatcherd}"
insmod /lib/modules/nfnetlink.ko &> /dev/null
insmod /lib/modules/ip_set.ko &> /dev/null
insmod /lib/modules/ip_set_hash_ip.ko &> /dev/null
insmod /lib/modules/xt_set.ko &> /dev/null
insmod /lib/modules/ip_set_hash_net.ko &> /dev/null
insmod /lib/modules/xt_mark.ko &> /dev/null
insmod /lib/modules/xt_connmark.ko &> /dev/null
insmod /lib/modules/xt_comment.ko &> /dev/null
insmod /lib/modules/nf_conntrack_ipv6.ko &> /dev/null
insmod /lib/modules/nf_defrag_ipv6.ko &> /dev/null
insmod /lib/modules/xt_TPROXY.ko &> /dev/null
insmod /lib/modules/xt_socket.ko &> /dev/null
insmod /lib/modules/iptable_mangle.ko &> /dev/null
insmod /lib/modules/textsearch.ko &> /dev/null
insmod /lib/modules/ts_bm.ko &> /dev/null
insmod /lib/modules/xt_string.ko &> /dev/null
insmod /lib/modules/ip6_tables.ko &> /dev/null
insmod /lib/modules/nf_nat.ko &> /dev/null
insmod /lib/modules/nf_nat_ipv6.ko &> /dev/null
insmod /lib/modules/nf_nat_masquerade_ipv6.ko &> /dev/null
insmod /lib/modules/ip6t_MASQUERADE.ko &> /dev/null
insmod /lib/modules/ip6table_nat.ko &> /dev/null
insmod /lib/modules/ip6table_raw.ko &> /dev/null
insmod /lib/modules/ip6table_mangle.ko &> /dev/null
cat /var/packages/ContainerManager/etc/dockerd.json | jq '. + {experimental: true, "fixed-cidr-v6": "fd00::/80", ip6tables: true, ipv6: true}' > /var/packages/ContainerManager/etc/dockerd.json2; mv -f /var/packages/ContainerManager/etc/dockerd.json{2,}
# start docker
if ! start_docker_daemon; then
exit 1
fi
多次重启nas ,查看/var/packages/ContainerManager/etc/dockerd.json
也是存在(ip6tables: true和ipv6: true)
ContainerManager里查看网络也有IPV6
portainer 查看网络也是有分配
你宿主机运行ping -6 -c4 2400:3200::1
能ping通吗?
如果宿主机没问题,你把ip6tables -t nat -S
的输出结果贴出来看看
宿主机能ping通
----------------------------ip6tables -t nat -S
----------------------------------------------------
看上去都没什么问题,只能再看看相关模块是否真的都加载了lsmod | grep ip | sort
模块都正常加载了,ip6table的nat表里有-A DEFAULT_POSTROUTING -s fd00::/80 ! -o docker0 -j MASQUERADE
,就是docker ipv6 nat生成的,宿主机ipv6也是通的,已经具备了所有条件
如果还是不通,除了换个ULA试试,比如fd07::/64,没有其他想法了
我也是一样的现象,看着ipv6都正常,也能解析出ipv6域名但是ping不通,每次启动系统后需要重启一下ContainerManager才能ping通ipv6地址,有没有什么解决的思路?
补充一句,关于 "ipv6":true
消失的问题,可以注释掉 $DockerUpdaterBin postinst updatedockerdconf "$(get_install_volume_type)"