iptables가 localhost로 리디렉션됩니까?


13

네트워크 내부에서 인터넷으로 모든 연결을 라우팅하는 서버가있는 네트워크가 있다고 가정합니다. 들어오는 연결을 인터넷으로 라우팅하는 대신 로컬 호스트 포트 8080으로 라우팅하도록 iptables를 어떻게 설정할 수 있습니까? 모든 도움을 주셔서 감사합니다.


문제는 간단한 리디렉션 (대상 IP 주소 NAT)을 사용하면 원래 대상 IP 주소가 손실된다는 것입니다. 투명한 HTTP 프록시를 설정 하시겠습니까? 아니면 HTTP 이외의 다른 프로토콜도 처리해야합니까?
pabouk

투명 여부에 관계없이
DankMemes

프록시 모든 트래픽을 리디렉션 입니다 : 투명 프록시에 대한 기본
pabouk

여기 정말 도움이되는 또 다른 답변이 있습니다 : unix.stackexchange.com/questions/111433/…
Wren T.

답변:


6
sysctl net.ipv4.ip_forward=1 
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080

1
굵게 사용하지 마십시오 ....

감사! 나는 이것을 시도하지 않았지만 내가 놓친 것은 ip forwarding 명령이라고 생각합니다. 그리고 다음에는 굵게 표시되지 않은 코드 블록을 사용하십시오.
DankMemes

@AlexAntonov는 코드 블록을 사용하십시오. 편집 모드에서 텍스트를 선택하고 괄호 아이콘을 클릭하십시오.
DankMemes

@ZoveGames, 죄송합니다. 수정했습니다.
Alex Antonov

2
나는 이것을 실험했다. ip_forward sysctl은 필요하지 않습니다. 그러나 여기 route_localnet 옵션 이 있습니다. 나는 이것이 Juan Cespedes의 대답 이 정확히 무엇인지 알 수 있습니다.
Matt Joiner

31

이는 iptables커널> = 3.6에서만 가능합니다.

다음을 수행해야합니다.

sysctl -w net.ipv4.conf.all.route_localnet=1
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080

ip_forward패킷이 전달되지 않기 때문에 필요하지는 않지만 sysctl을 포함하지 않으면 route_localnet(커널> 3.6에서만 작동) 패킷이 "마티니"라고 간주되어 커널에 의해 삭제됩니다. 외부에서 목적지 주소 127.0.0.1


그렇습니다, 효과가 있습니다
Nick De Greek

route_localnet에 대해 몰랐습니다. 너무 오래된 학교이며 ip_forward가 작동하지 않는 이유를 알 수 없었습니다 (필요하지는 않았지만 어쨌든 시도한 것으로 의심 됨).
dmourati

1
당신이 저장 확인 net.ipv4.conf.all.route_localnet=1/etc/sysctl.conf그렇지 않으면 지속되지 않습니다 재부팅 후 변수는 패킷이 하락의 원인이 0으로 돌아갈 것입니다. 그렇다면 왜 모든 것이 작동하지 않는지 이해하기가 매우 어려울 것입니다. ;)
viz

죄송합니다 오래된 질문을 네크로 만의 IPv6를 동등한 존재하기 net.ipv4.conf.all.route_localnet에 사용이 ip6tables?
Kebian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.