8090에서 Confluence를 실행하고 있고 다음과 같이 실행되는 것을 피하고 싶기 때문에 들어오는 모든 TCP 연결(처음에는 포트 80)을 포트 8090으로 리디렉션하려고 합니다.뿌리이는 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
OS 및 커널 버전에 따라 쉽게 도움이 될 것입니다.