-D
SSHを介してネットワークトラフィックをルーティングするには、ほとんどの人がアプリケーションで使用するように設定できるlocalhostにSOCKSプロキシを作成するオプションを渡すように指示します。
しかし、単純なプロキシは私にとって最も実用的な解決策ではありません。 TUN / TAPを使用して独自のインターフェイスでSSHトンネルにアクセスする方法はありますか?
私はLinuxを使用しています。
答え1
LinuxでOpenSSHを使用すると、適切な場合は正しいルーティングとIP転送を確立するだけで、TUNまたはTAPインターフェースを使用してSSH経由でトンネルを作成できます。
TUNトンネルを生成するために、ここに実用的なスクリプトが残ります。Tunを使用したSSH経由のIPトンネルの設定; このスクリプトは root として実行していると仮定します。
/etc/ssh/sshd_config に「PermitTunnel yes」を追加します。
これで、クライアントでいくつかのパラメータを使用してsshを実行するのと同じくらい簡単です。起動スクリプトは次のとおりです。#!/bin/sh HOST=REMOTE_PARTY_ADDRESS HOST_PORT=22 TUN_LOCAL=0 # tun device number here. TUN_REMOTE=0 # tun device number there IP_LOCAL=192.168.111.2 # IP Address for tun here IP_REMOTE=192.168.111.1 # IP Address for tun there. IP_MASK=30 # Mask of the ips above. NET_REMOTE=192.168.0.0/16 # Network on the other side of the tunnel NET_LOCAL=192.168.8.0/24 # Network on this side of the tunnel echo "Starting VPN tunnel ..." modprobe tun ssh -w ${TUN_LOCAL}:${TUN_REMOTE} -f ${HOST} -p ${HOST_PORT} "\ ip addr add ${IP_REMOTE}/${IP_MASK} dev tun${TUN_REMOTE} \ && ip link set tun${TUN_REMOTE} up \ && ip route add ${NET_LOCAL} via ${IP_LOCAL} \ && true" sleep 3 ip addr add ${IP_LOCAL}/${IP_MASK} dev tun${TUN_LOCAL} ip link set tun${TUN_LOCAL} up ip route add ${NET_REMOTE} via ${IP_REMOTE} echo "... done."
単一のコンピュータではなくネットワークにアクセス/設定するには、次のようにIP転送も有効にする必要があります。
sudo sysctl -w net.ipv4.ip_forward=1
スクリプトもあります。https://github.com/trustedsec/tap/blob/master/scripts/ssh-tunnel.shTAP インターフェイスを介して OpenSSH トンネルを生成するために使用されます。