내부 웹 서버로 포트 포워딩을 하고 싶습니다.
글쓴이: eminency / 작성시간: 화, 2006/06/27 - 4:11오후
현재 외부에 물려 있는 윈도 서버와 리눅스 서버가 있습니다. 게이트웨이는 윈도 서버(192.168.0.1)를 이용하고 리눅스 서버는 내외부에 모두 고정 ip로 연결되어 있습니다(내부 : 192.168.0.102, 외부 : 1.1.1.1(가정)).
사내용 웹서버는 192.168.0.18인데 이를 리눅스 서버를 통해 외부에서도 볼 수 있게 하고 싶습니다(외부에 파견나가 있는 인원들 때문에).
검색해 본 바로는 다음과 같이 iptables 룰을 추가하면 되는 것 같던데...(/etc/sysconfig/iptables)
(...생략...)
*nat
-A PREROUTING -p tcp -d 1.1.1.1 --dport 80 -j DNAT --to 192.168.0.18:80
COMMIT
실제로 1.1.1.1로 접속해보면 오랫동안 브라우저가 응답을 기다리다가 서버를 찾지 못한다고 나옵니다.
접속하자마자 에러가 뜨지 않는 걸로 보아 무언가 패킷은 처리가 되고 있는 듯 하긴 합니다만...;
제 생각엔 위의 룰은 들어오는 패킷에 대해서만 처리하는 것 같은데 웹 서버가 응답해 주는 패킷에 대해서도 따로 정의를 해 주어야 하는게 아닌지요?
리눅스 서버는 레드햇 9이며 커널 2.4.20 입니다.
도움을 부탁드립니다.
Forums:
sysctl.conf net.ipv4.ip_forw
혹시 이게 문제일까요?
현재 커널에 적용하는건 /proc/ 밑에 같은 경로에 있습니다.
emerge money

https://xenosi.de/
송효진님의 얘기
송효진님의 얘기 대로 ip_forward 시스템 변수(proc 파일 시스템에선 /proc/sys/net/ipv4/ip_forward 가상 파일)의 값도 확인을 해주셔야 하고, 추가로 한 가지 더 신경을 써주셔야 할 겁니다.
외부의 어느 클라이언트(IP 주소: 2.2.2.2)가 1.1.1.1:80으로 TCP 연결을 시도한다고 해보겠습니다. 그러면 현재 구성에서 일어나는 일은...
언급하셨던 대로, 웹 서버가 응답 패킷을 윈도 서버가 아닌 리눅스 서버로 보내도록 할 수 있는 방법이 필요합니다. 가장 간단한 방법은 리눅스 서버를 거쳐서 웹 서버로 들어가는 패킷의 출발지 주소를 리눅스 서버의 LAN측 주소로 바꿔버리는 것입니다. 그러면 웹 서버는 당연히 리눅스 서버로 응답 패킷을 보낼 것이고, 리눅스 서버는 다시 주소를 원복시킨 후, 2.2.2.2로 패킷을 보내주게 됩니다. 인즉, nat 테이블에
정도의 추가 규칙이 필요합니다.
----
$PWD `date`
$PWD `date`
감사합니다
설명에 빠뜨렸습니다만 sysctl 설정은 이미 해 두었었구요
wariua님 말씀대로 룰을 추가하니까 바로 되네요.
예측이 맞아서 기분은 좋지만 아직도 공부할게 많군요, 좀 더 네트웍에 대해 봐야 겠습니다 ^^;;
답변해 주신 두 분 모두 감사드립니다.
노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5
댓글 달기