sjtuross / syno-iptables

Some missing iptables modules for Synology
180 stars 23 forks source link

测试IPv6连通性失败 #33

Open lkeme opened 4 months ago

lkeme commented 4 months ago

部署的环境

系统版本/型号

image

内核

image

iptables版本

image

image

遇到的问题

使用的是 geminilake的预编译模块 , 根据原生Docker IPv6 NAT模式 (DSM 7.x)的步骤进行部署

vim /var/packages/ContainerManager/etc/dockerd.json

X6@MSIB2)7@92SZ~~1KR9RR

vim /var/packages/ContainerManager/scripts/start-stop-status

image

sudo docker run --rm busybox ping -6 -c4 2400:3200::1

}RG3NDX~0F{G(V@BW8VIS}Y

sudo systemctl status pkg-ContainerManager-dockerd.service

5532T H6ZZTZ)Z~(EF EZLO

sjtuross commented 4 months ago

你修改的/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: trueipv6: true就没了,你可以通过再次查看/var/packages/ContainerManager/etc/dockerd.json来确认

lkeme commented 4 months ago

/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)

lkeme commented 4 months ago

image

ContainerManager里查看网络也有IPV6

lkeme commented 4 months ago

portainer 查看网络也是有分配

image

image

sjtuross commented 4 months ago

你宿主机运行ping -6 -c4 2400:3200::1能ping通吗?

如果宿主机没问题,你把ip6tables -t nat -S的输出结果贴出来看看

lkeme commented 4 months ago

宿主机能ping通

IMW6SMW}N9C(0)@WG7~SY}K

----------------------------ip6tables -t nat -S----------------------------------------------------

image

image

sjtuross commented 4 months ago

看上去都没什么问题,只能再看看相关模块是否真的都加载了lsmod | grep ip | sort

lkeme commented 4 months ago

image

sjtuross commented 4 months ago

模块都正常加载了,ip6table的nat表里有-A DEFAULT_POSTROUTING -s fd00::/80 ! -o docker0 -j MASQUERADE,就是docker ipv6 nat生成的,宿主机ipv6也是通的,已经具备了所有条件

如果还是不通,除了换个ULA试试,比如fd07::/64,没有其他想法了

yhboss commented 4 months ago

我也是一样的现象,看着ipv6都正常,也能解析出ipv6域名但是ping不通,每次启动系统后需要重启一下ContainerManager才能ping通ipv6地址,有没有什么解决的思路?

hengxin007 commented 2 weeks ago

补充一句,关于 "ipv6":true 消失的问题,可以注释掉 $DockerUpdaterBin postinst updatedockerdconf "$(get_install_volume_type)" image