使用 iptables 重定向端口时出错:该名称没有链/目标/匹配

使用 iptables 重定向端口时出错:该名称没有链/目标/匹配

我正在尝试将所有传入的 TCP 连接(最初到端口 80)重定向到端口 8090,因为我在 8090 中运行 Confluence,并且我想避免它运行为,这是启用 Confluence 连接到端口 80 的要求。

为此,我使用了 IPTABLES,但遇到了这个奇怪的错误:

root@psbm-ptc01b05:/# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8090
iptables: No chain/target/match by that name.
root@psbm-ptc01b05:/# iptables -A PREROUTING
iptables: No chain/target/match by that name.
root@psbm-ptc01b05:/#

这是我第一次使用 iptables,我真的希望这个东西能够工作。我在这里做错了什么?我应该怎么办?

谢谢!

编辑:附加信息:

我的网络接口如下:

root@psbm-ptc01b05:~# ifconfig -a
eth1      Link encap:Ethernet  HWaddr 00:1c:42:2c:2d:97
          inet addr:176.111.109.11  Bcast:176.111.109.255  Mask:255.255.254.0
          inet6 addr: fe80::21c:42ff:fe2c:2d97/64 Scope:Link
          inet6 addr: 2001:4cc0:3:f::6925/80 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25458482 errors:0 dropped:0 overruns:0 frame:0
          TX packets:628471 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2767947725 (2.7 GB)  TX bytes:60340059 (60.3 MB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:466 errors:0 dropped:0 overruns:0 frame:0
          TX packets:466 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:109338 (109.3 KB)  TX bytes:109338 (109.3 KB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:127.0.0.1  P-t-P:127.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.255
          inet6 addr: ::2/128 Scope:Compat
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.137.96.0  P-t-P:10.137.96.0  Bcast:10.159.255.255  Mask:255.224.0.0
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

显然我没有加载任何模块。这很糟糕吗?

root@psbm-ptc01b05:~# lsmod|grep -E "nf_|xt_|ip"
root@psbm-ptc01b05:~#

命令 lsmod|grep table 也不返回任何内容。

iptables -t nat -L -vn 的输出:

root@psbm-ptc01b05:~# iptables -t nat -L -vn
Chain PREROUTING (policy ACCEPT 292K packets, 27M bytes)
 pkts bytes target     prot opt in     out     source               destination
 292K   27M            all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain POSTROUTING (policy ACCEPT 981 packets, 80153 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 981 packets, 80153 bytes)
 pkts bytes target     prot opt in     out     source               destination
root@psbm-ptc01b05:~#

再来一探:

root@psbm-ptc01b05:~# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
           all  --  anywhere             anywhere

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
root@psbm-ptc01b05:~#

更搞笑的事:

root@psbm-ptc01b05:~# lsmod
Module                  Size  Used by
root@psbm-ptc01b05:~#

顺便说一下,这是一个 VPS。

答案1

检查你的内核配置CONFIG_IP_NF_TARGET_REDIRECT

您需要启用它才能使用 -j REDIRECT 目标。

答案2

您似乎没有加载任何您需要的模块。

顺便说一句,您使用哪个发行版哪个内核版本:uname -a

当您运行以下命令之一时,验证 @ikrabbe 提到的模块是否已列出:

grep -i =m /usr/src/linux/.config
cat /proc/modules | grep nat
find /lib/modules/*/ -type f -iname '*.ko' | grep redirect

根据您的操作系统和内核版本,它会很容易帮助您

相关内容