NOTE: This repo provides some iptables modules missing in the Synology system
- Useful for various transparent proxy services
- Support native Docker IPv6 NAT mode
- In case there are no precompiled modules for your model or for any other reason you can self compile the modules according to How to Self Compile
- translate the page for further information
- 用于各种透明代理服务
- 支持原生Docker IPv6 NAT模式
理论上只要架构、内核以及iptables版本吻合,预编译的模块就可以使用,或者说小版本的系统升级一般不会升级内核,可以继续使用。不吻合切勿尝试,可能造成未知的系统问题。
-
通过该页面Synology Architectures查询架构,比如DS918+的架构为apollolake
-
通过
uname -a
命令查询内核版本,比如DS918+ 7.0.1-42218系统内核为4.4.180+(结尾的加号代表自定义编译的4.X内核)
Linux DSM7 4.4.180+ #42218 SMP Mon Oct 18 19:17:56 CST 2021 x86_64 GNU/Linux synology_apollolake_918+
- 通过
iptables -V
命令查询iptables版本
iptables v1.8.3 (legacy)
本仓库提供以下系统的预编译模块,经测试可以正常加载。
arch | kernel | iptables version | system model | platform version |
---|---|---|---|---|
apollolake | 4.4.180+ | v1.8.3 | DS918+ | 7.0.1-42218 |
apollolake | 4.4.59+ | v1.6.0 | DS918+ | 6.2.3-25426 |
broadwell | 3.10.105 | v1.6.0 | DS3617xs | 6.2.3-25426 |
bromolow | 3.10.105 | v1.6.0 | DS3615xs | 6.2.3-25426 |
geminilake | 4.4.180+ | v1.8.3 | DS920+ | 7.1-42661 |
geminilake | 4.4.302+ | v1.8.3 | DS220+ | 7.2-64570 |
上传相应的ko模块至/lib/modules/
,上传相应的so模块至/usr/lib/iptables/
,即可。
📝 文件名含ip6的用于原生支持Docker IPv6 NAT,其余的用于各种透明代理服务,可根据需要选择,全部安装也没事。
📝 ko内核模块和so用户模块一般需要同时安装。
运行sudo -i
之后再运行以下insmod
命令尝试加载ko内核模块。由于模块互相有依赖性,需按一定顺序加载,有些是系统自带的模块。如果提示File Exists
,说明已经加载,如果没有提示,说明加载成功。
4.X内核
insmod /lib/modules/nfnetlink.ko
insmod /lib/modules/ip_set.ko
insmod /lib/modules/ip_set_hash_ip.ko
insmod /lib/modules/xt_set.ko
insmod /lib/modules/ip_set_hash_net.ko
insmod /lib/modules/xt_mark.ko
insmod /lib/modules/xt_connmark.ko
insmod /lib/modules/xt_comment.ko
insmod /lib/modules/xt_TPROXY.ko
insmod /lib/modules/xt_socket.ko
insmod /lib/modules/iptable_mangle.ko
insmod /lib/modules/textsearch.ko
insmod /lib/modules/ts_bm.ko
insmod /lib/modules/xt_string.ko
insmod /lib/modules/nf_nat_ipv6.ko
insmod /lib/modules/nf_nat_masquerade_ipv6.ko
insmod /lib/modules/ip6t_MASQUERADE.ko
insmod /lib/modules/ip6table_nat.ko
insmod /lib/modules/ip6table_raw.ko
insmod /lib/modules/ip6table_mangle.ko
4.4.302 内核
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
3.X内核
insmod /lib/modules/nfnetlink.ko
insmod /lib/modules/ip_set.ko
insmod /lib/modules/ip_set_hash_ip.ko
insmod /lib/modules/xt_set.ko
insmod /lib/modules/ip_set_hash_net.ko
insmod /lib/modules/xt_mark.ko
insmod /lib/modules/xt_connmark.ko
insmod /lib/modules/xt_comment.ko
insmod /lib/modules/nf_tproxy_core.ko
insmod /lib/modules/xt_TPROXY.ko
insmod /lib/modules/xt_socket.ko
insmod /lib/modules/iptable_mangle.ko
insmod /lib/modules/textsearch.ko
insmod /lib/modules/ts_bm.ko
insmod /lib/modules/xt_string.ko
insmod /lib/modules/nf_nat_ipv6.ko
insmod /lib/modules/ip6t_MASQUERADE.ko
insmod /lib/modules/ip6table_nat.ko
insmod /lib/modules/ip6table_raw.ko
insmod /lib/modules/ip6table_mangle.ko
📝 运行lsmod
查看已加载的内核模块列表,或运行dmesg | tail
查看加载失败的原因。
📝 不同内核版本netfilter编译生成的ko内核模块可能不完全一样。比如,nf_tproxy_core.ko
模块只有3.X内核才会有,nf_nat_masquerade_ipv6.ko
模块只有4.X内核才会有。
📝 为了群晖重启之后自动加载所需的内核模块,参考通用模块加载的方法。
本仓库无法提供适合所有群晖系统的预编译模块,或者不愿意使用预编译模块,可以尝试自编译。