VPN 클라이언트가 로컬 SOCKS5 프록시만 통과하도록 강제하는 방법은 무엇입니까?

VPN 클라이언트가 로컬 SOCKS5 프록시만 통과하도록 강제하는 방법은 무엇입니까?

원격 서버(VPS)에 SSH로 연결하고 Pi에서 포트를 열어 SOCKS5 프록시로 사용할 수 있는 Raspberry Pi가 있습니다. 다음은 터널을 설정하는 데 사용하는 명령입니다.

ssh -D 1080 -f -C -q -N user@hostname

그 이유는 네트워크가 DPI를 사용하여 VPN을 차단하지만 SSH는 차단하지 않기 때문입니다. 그래서 LAN에 VPN을 설정하고 SOCKS5 프록시(동일 Pi)를 설정했습니다. 문제는 프록시가 꺼지면 VPN 아웃바운드 트래픽(더 이상 VPN 트래픽이 아닌 일반 HTTP(S))이 이를 사용하지 않고 네트워크 방화벽을 통해 이러한 요청을 보내려고 한다는 것입니다. 프록시가 다운되면 VPN이 아웃바운드 연결을 허용하지 않도록 이런 일이 발생하지 않도록 하고 싶습니다.

이는 작동 방식을 보여줍니다.

                        ______________________________
                       |                              |
                       |            Client            |
                       |______________________________|
                                       |
                                       | L2TP over IPSEC
                       ________________|_______________ __ 
                      |                                |  |
                      |       VPN (192.168.1.XXX)      |  |
                      |________________________________|  |
                       ________________|_______________   |-RaspberryPi
                      |                                |  | 
                      |    SOCKS5 (127.0.0.1:1080)     |  |
                      |________________________________|__|
                                       |
                                       | SSH tunnel
                       ________________|________________
                      |                                 |
                      |         VPS (Amazon EC2)        |
                      |_________________________________|
                                       |
                                      / \
                                     /   \
                                  the internet 

내 iptable은 다음과 같습니다.

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.42.0/24 -o eth+ -j MASQUERADE
-A POSTROUTING -s 192.168.43.0/24 -o eth+ -m policy --dir out --pol none -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol none -j DROP
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m multiport --dports 500,4500 -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -j DROP
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -i eth+ -o ppp+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ppp+ -o eth+ -j ACCEPT
-A FORWARD -s 192.168.42.0/24 -d 192.168.42.0/24 -i ppp+ -o ppp+ -j ACCEPT
-A FORWARD -d 192.168.43.0/24 -i eth+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.43.0/24 -o eth+ -j ACCEPT
-A FORWARD -j DROP
COMMIT

VPN을 만드는 데 사용되는 스크립트입니다.https://github.com/hwdsl2/setup-ipsec-vpn

그래서 내 질문은: VPN 클라이언트가 LAN에서 SOCKS5 프록시만 사용하도록 하려면 이러한 iptable을 어떻게 변경합니까? (그렇지 않으면 프록시가 아닌 대상 패킷을 삭제합니다)

답변1

당신이 찾고 있는 것은투명 프록시. 투명 프록시는 게이트웨이에 배치하도록 되어 있지만 패킷이 노드를 통해 라우팅되는 한(예에서와 같이) iptables해당 노드에서 트래픽을 리디렉션하는 데 사용할 수 있습니다. 에이전트의 모든 프로세스를 처리하는 노드입니다.

Google에서 "Clear Socks Agency"를 빠르게 검색하면 다음과 같은 검색 엔진이 나타납니다.레드 삭스. 시도해 볼 수 있습니다. 동일한 노드에서 SOCKS5 세션과 인스턴스를 실행하고 ssh링크된 웹 사이트의 지침이 매우 완벽해 보이며 도움이 될 것입니다.redsocksredsocksssh

관련 정보