我正在尝试将所有传入的 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
根据您的操作系统和内核版本,它会很容易帮助您