데비안 7에서 실행되고 포트 8080에서 수신 대기하는 웹 서비스가 있습니다. 인바운드 연결을 80에서 8080으로 리디렉션하고 포트 80만 허용하고 싶습니다. 내 구성은 다음과 같습니다 iptables
.
root@localhost:~# iptables -v -L --line-numbers
Chain INPUT (policy DROP 76 packets, 6266 bytes)
num pkts bytes target prot opt in out source destination
1 90 8898 ACCEPT all -- lo any anywhere anywhere
2 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:http
3 4515 3113K ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 4858 packets, 587K bytes)
num pkts bytes target prot opt in out source destination
그리고 nat 테이블:
root@localhost:~# iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 14 packets, 2288 bytes)
pkts bytes target prot opt in out source destination
0 0 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 8080
0 0 REDIRECT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:80 redir ports 8080
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 841 packets, 53415 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 841 packets, 53415 bytes)
pkts bytes target prot opt in out source destination
포트 80에서 외부적으로 연결을 설정할 수 없습니다. 어떤 결함이 존재할 수 있나요?
답변1
사용자가 포트 80에 도달하면 iptables
먼저 NAT PREROUTING
테이블을 확인한 다음 FILTER
테이블을 확인하므로 필터 입력 체인에서 포트 8080을 허용해야 합니다.
아래 예를 참조하세요.
필터 테이블에서:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT
Nat 테이블에서:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
위의 규칙은 Filter INPUT Policy Drop 및 작업을 사용하여 테스트되었습니다.
테이블의 순서는 다음과 같습니다.
- 맹글 사전 라우팅
- 자연스러운 사전 라우팅
- 관리 입력
- 필터 입력
자세한 내용은 확인해주세요이것페이지.