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リンクされたWebサイトの指示が非常に完璧に見え、役に立ちます。redsocksredsocksssh

おすすめ記事