iptables: tcp 연결을 SSH 터널로 리디렉션

iptables: tcp 연결을 SSH 터널로 리디렉션

나는 이것이 "ProxyDroid" 및 "SSHTunnel"과 같은 많은 안드로이드 기반 프로젝트에서 사용되는 것을 보았습니다.

프록시 또는 SSH 터널에 대한 연결을 설정한 다음 iptables를 사용하면 생성한 터널을 통해 모든 TCP 요청이 리디렉션됩니다.

"-I OUTPUT -p tcp --destination-not xxx.xxx.xx.xx --redirect-to xx.xxx.xx.xx:port"와 같아야 하지만 이에 대한 예제를 찾을 수 없습니다. nat에 삽입해야 하는지 아니면 다른 것에 삽입해야 하는지 모르겠습니다. + 예를 들어 들어오는 연결에 대해 하나 더 많은 규칙이 있어야 하는지 모르겠습니다.

편집하다:

터널을 직접 사용하는 것은 불가능한 것 같습니다. 아니면 에이전트를 사용하지 않고는 어떻게 하는지 모르겠어서, 이 작업을 하려면 로컬 서버 역할을 하는 redsocks라는 프로그램을 설치해야 했습니다.

여기에 사용된 iptables 명령은 다음과 같습니다.

# do not redirect connection sent to localhost so redirected connections can reach
# its destination, otherwise we'll stuck in a loop.
iptables -t nat -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
# Redirect all tcp connections except ones that are going to my tunnel server 
# to the local redsocks port
iptables -t nat -A OUTPUT -p tcp ! -d tunnel.ip.goes.here -j REDIRECT --to-ports 31338

RedSocks 저장소:https://github.com/darkk/redsocks


이제 모든 것이 잘 작동하지만 redsock(터널에 직접 연결) 없이 이 작업을 수행할 수 있는지 여부는 여전히 알아야 합니다.

답변1

SSH를 통해 가난한 사람의 VPN을 설정하시겠습니까? 그렇다면 이에 대한 Ubuntu 문서가 있습니다.

https://help.ubuntu.com/community/SSH_VPN

기본적으로 "-w" 옵션을 사용하여 새 tun0 인터페이스를 설정하고 이를 통해 라우팅을 시작합니다. iptables관련되지는 않지만 경로를 설정해야 합니다.

TCP를 통해 TCP를 수행하는 것은나쁜 생각. 더 나은 옵션은 OpenVPN과 같은 간단한 VPN일 수 있지만 이는 빠르고 더러운 SSH 터널보다 더 복잡합니다.

관련 정보