프록시로서의 iptables

프록시로서의 iptables

어떻게 시작하는 것이 더 나은지 잘 모르겠으니 곧장 하겠습니다. 외국으로 여행을 가야 하는데 고향 네트워크에 있는 로컬 서버에 액세스해야 합니다. 내 PC만 뒤에 연결된 DD-WRT 라우터가 있습니다. 그래서 제 질문은: 외부 네트워크(외국)에서 라우터에 연결하고 로컬 네트워크(ISP 제공)로 리디렉션할 수 있는 iptables 규칙을 만들 수 있습니까? 나는 내 필요에 대한 "지도"를 만들려고 노력할 것입니다.

/Me - X/  
/My router - R/  
/Internet - I/  
/Local Server - S/  

S(로컬 서버)에 액세스하는 일반적인 방법은 다음과 같습니다. X-R-S 인터넷에 액세스하는 일반적인 방법 은 다음과 같습니다. X-R-I 필요한 사항은 다음과 같습니다. R<--I<--X(R에서 S에 연결)
이는 외부 네트워크에서 S에 액세스할 수 없기 때문입니다.
집에 없을 때는 라우터 뒤에 활성 PC가 없으므로 프록시를 실행할 수 없습니다.

답변1

이는 상대적으로 사소한 일입니다. SSH의 경우 다음과 같이 하면 괜찮습니다.

iptables -t nat -A PREROUTING -p tcp \  
  -i ppp0 --dport 22 \  
  -j DNAT   \
  --to-destination 10.10.10.10:22

가정: R의 외부 인터페이스는 ppp0. 이는 규칙이 적용되어야 하는 수신 인터페이스입니다.

가정: S의 IP 주소는 10.10.10.10입니다. 물론 올바른 주소로 대체하세요.

이것이 하는 일은 "대상 NAT"입니다. 기본적으로 "일반 NAT"와 정확히 동일하지만 대상 주소를 내부 서버의 주소로 바꾸고 돌아오는 길에 취소합니다. 이를 사용하려면 X에서 해야 할 일은 S의 sshd에 연결하는 ssh R대신 실행하는 것뿐입니다. (이것은 X가 현재 켜져 있는 경우에만 작동합니다.ssh S~ 아니다인터넷뿐만 아니라 내부 네트워크에도 있습니다. S에서 R을 통해 응답을 보내려면 SNAT("일반" 또는 소스 NAT)도 실행해야 하며 규칙을 "-i ppp0"에서 "-d <로 변경해야 합니다.R의 외부 주소>", 패킷이 외부뿐만 아니라 내부에서 수신될 때 일치하도록 하기 위한 것입니다. 알 수 있듯이 약간 털이 많아집니다.

메모:물론 다른 포트에서도 이 작업을 수행할 수 있지만정말 강하게Samba(Windows 공유) 또는 암호화되지 않은 HTTP(공용, 인증되지 않은 콘텐츠가 아닌 한) 노출을 권장하지 않습니다. 아니면 정말 다른 것. 가능한 경우 보안을 유지하는 것이 중요하므로 SSH의 포트 전달을 피기백하면 많은 골치 아픈 일을 줄일 수 있습니다.

Samba 전달이 어렵다는 점을 제외하면 그것 없이 완전히 수행하는 것이 가장 좋습니다.

관련 정보