私のtun2socksソフトウェア(Linux、Windows)は、指定されたプロキシサーバーを介してすべての着信TCP接続を転送する仮想ネットワークインターフェイスを作成します。SOCKSプロキシのみを使用でき、デフォルトではTCPのみを転送できますがudpgw
、SOCKSの背後でフォワーダーを実行できる場合はUDPも転送できます。これらの要件を満たしていると仮定して、設定方法は次のとおりです。
最初に仮想インターフェースを作成して構成します。Linuxの場合:
openvpn --mktun --dev tun0 --user <your_user>
ifconfig tun0 10.0.0.1/24
または、Windowsでは、OpenVPNをインストールしてTAP-Win32仮想インターフェイスを取得し、IP 10.0.0.1、netmask 255.255.255.0を割り当てます。
次に、tun2socksを起動します。これにより、実際の転送が行われます。
badvpn-tun2socks --tundev tun0
--netif-ipaddr 10.0.0.2 --netif-netmask 255.255.255.0
--socks-server-addr <socks_server_address>:<socks_port>
これ10.0.0.2
は、仮想インターフェイス内の仮想ルーターのIPです。仮想インターフェイス自体に割り当てられたサブネットと同じサブネットに存在する必要があります(10.0.0.1/24
)。Windowsでは、代わりにtun0
を使用します。
--tundev "tap0901:<display_name_of_TAP-Win32_device>:10.0.0.1:10.0.0.0:255.255.255.0"
この時点で、仮想ルーターにpingを実行できるはずです10.0.0.2
(この場合、実行中のtun2socks
プログラムが応答するプログラムになります)。プロキシを介して接続を転送するには、接続を仮想デバイス経由でルーティングするだけです。Linuxの場合:
route add default gw 10.0.0.2 metric 0
またはWindowsの場合:
route add 0.0.0.0 mask 0.0.0.0 10.0.0.2 metric 0
ここで重要なのは、ルートが既存のデフォルトルートを上書きすることです。また、SOCKSサーバーがローカルネットワーク上にない場合は、より高いメトリックの例外ルートを追加して、接続が仮想インターフェイスにルーティングされないようにする必要があります。詳細については、上部のリンクを参照してください。