iptables 전달 포트 오류-해당 이름의 체인 / 대상 / 일치 없음


11

포트 443을 8443으로 전달하기 위해 Ubuntu 12.04 LTS 서버에서 iptables를 구성하려고합니다.

그러나이 명령을 실행할 때 :

sudo iptables -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443

다음과 같은 오류가 발생합니다.

iptables: No chain/target/match by that name.

내 iptables 현재 구성 :

$ sudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
DROP       tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

내가 무엇을 놓치고 있거나 잘못하고 있습니까?

답변:


18

때문에 PREROUTING체인이 속한 NAT테이블이 아닌 FILTER테이블. -t옵션 으로 명시 적으로 테이블을 언급하지 않으면 FILTER가정합니다.

따라서 다음과 같이 테이블 유형을 언급해야합니다 -t nat.

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443

그 참고 MANGLERAW테이블도이 PREROUTING체인을하지만 당신은 단지 포트를 리디렉션, 당신은 아마도 찾고있는 NAT테이블.


여전히 같은 오류가 발생합니다. 이 답변은 여전히 ​​유효합니까?
piepi

@piepi 그래. 유효해야합니다. 아마도 당신은 당신의 문제에 대해 새로운 질문을해야합니다.
heemayl

upkuting 그리고 아마도 당신은 이와 비슷한 것에 대답 할 수 있습니다 : askubuntu.com/questions/1140644/…
WinEunuuchs2Unix

3

PREROUTING 체인은 nat, mangle 및 raw 테이블에만 사용할 수 있습니다.
iptables는 필터 테이블을 가정하므로 다음 중 하나를 지정해야합니다.iptables -t nat ...


3

도커 명령을 실행할 때 비슷한 오류가 발생합니다.

docker run -d -p 8084:8080 knockdata/zeppelin-highcharts


d9c5d34f500d621585470b0e70b915395fcb6b3437859e0f610dbb58d51faf25
docker: Error response from daemon: driver failed programming external connectivity on endpoint elegant_jang  
(7ca0f5ad689f5443ce7533f66b4a86c34d2dbd9d076bac4812288dd3f6a76698):  
iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8084 -j DNAT --to-destination 172.17.0.2:8080 
! -i docker0: iptables: No chain/target/match by that name.
(exit status 1).

docker-engine을 다시 설치하여 문제를 해결할 수있었습니다.

apt-get remove docker-engine
apt-get install docker-engine

0

(Config Server Security & Firewall)을 설치 하고 다음 설정을 사용할 수 있습니다.

nano /etc/csf/csf.conf
SYNFLOOD = "" => SYNFLOOD = "1"
CONNLIMIT = "" => CONNLIMIT = "80;75,443;75,21;50”
PORTFLOOD = "" => PORTFLOOD = "80;tcp;5;250"
SYSLOG = “0” => SYSLOG = "1"
DOCKER = “0” => DOCKER = "1"

nano /etc/csf/csfpost.sh

#!/bin/sh

echo "[DOCKER] Setting up FW rules."

iptables -N DOCKER

iptables -t nat -N DOCKER

iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER

iptables -t nat -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER

# Masquerade outbound connections from containers
iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE

# Accept established connections to the docker containers
iptables -t filter -N DOCKER
iptables -t filter -A FORWARD -o docker0 -j DOCKER
iptables -t filter -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j 
ACCEPT

# Allow docker containers to communicate with themselves & outside world
iptables -t filter -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
iptables -t filter -A FORWARD -i docker0 -o docker0 -j ACCEPT

echo "[DOCKER] Done."

참고 :이 구성은 또한 기본 DDOS 공격을 방지합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.