使用应该很简单iptables
,例如理查德·弗吉 (Richard Fergie) 在这篇文章中描述了,但我的设备 Synology DS115j(运行 DSM 5.0)显然无法执行此操作:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
回报
iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
我是否需要使用该nat
表进行端口转发?这不是网关,不想转发到另一个设备,只想转发到另一个本地端口。
语境:
- 我的目标是在非特权端口上运行服务器,以避免必须以 root 身份运行它。
- 我知道
setcap
,authbind
但这些在 Synology NAS (DSM5) 上不可用。 - Synology DS115j 也不支持码头工人。
答案1
如果 Synology 防火墙尚未使用 nat,则可能不会启用必要的内核模块,因此-t nat
不会找到该表。您需要以 root 身份:
cd /lib/modules
insmod nf_nat.ko
insmod iptable_nat.ko
insmod ipt_REDIRECT.ko
然后iptables -L -t nat
应该列出空链,lsmod|grep nat
应该显示模块,并且您可以添加规则。
答案2
Synology Os (DSM) 使用名为 的闭源二进制文件firewalltool
来重建 iptables 转储。您可以花时间通过查看/usr/syno/etc/rc.d/S01iptables.sh
和来了解其内部工作原理/etc/firewall
,但请记住,任何 DSM 更新都可能会覆盖您所做的手动更改。