我有一台旧的 12.04 服务器,具有以下 iptables 规则:
Chain NAME (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:discard /* someservice */
ACCEPT udp -- anywhere anywhere udp dpt:port /* someservices */
ACCEPT tcp -- private-ip anywhere tcp dpt:domain
ACCEPT tcp -- private-ip anywhere tcp dpt:service /* service server */
Chain NAME2 (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:port
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:tftp
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT udp -- anywhere anywhere udp dpt:bootpc
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
Chain OTHERNAME (1 references)
target prot opt source destination
DROP all -- public-ip anywhere
DROP all -- public-ip anywhere
DROP all -- public-ip anywhere
RETURN all -- anywhere anywhere
这只是一个例子,还有更多的规则。我尝试通过启动新的 18.04 VM 来迁移服务器。除了 iptables 之外,我能够正确传输所有内容。当我执行 ''' iptables-restore < iptables-export ''' 时,我收到“第 46 行失败”它只是一个带有规则的随机行,我将其删除,然后它会在下一行失败,什么都不起作用。
我尝试从导出文件手动输入命令,但得到:
iptables: No chain/target/match by that name.
or
iptables v1.6.1: Couldn't load target `OTHERNAME':No such file or directory
我确实在新服务器上添加了这些链名称。旧 iptables 版本是 1.4.12。我还尝试了 iptables-converter,但没有任何效果。
如果最终我无法添加这些 iptables 规则,那么使用 ufw 命令的规则会是什么样子?
答案1
解决了。我刚刚重启了虚拟机,所以它升级了内核,现在 iptable-restore 可以正常工作了。谢谢大家。