Network-Interface
從 SSH 隧道創建網路介面
要通過 SSH 路由您的網路流量,大多數人會告訴您傳遞
-D
選項以在 localhost 上創建一個 SOCKS 代理,您可以配置您的應用程序以使用該代理。然而,一個簡單的代理對我來說並不是最實用的解決方案。有什麼方法可以訪問 SSH 隧道作為它自己的介面,也許是 TUN/TAP?
我正在使用 Linux。
在 Linux 中使用 OpenSSH,可以使用 TUN 或 TAP 介面通過 SSH 創建隧道,只要設置正確的路由並在適當的地方進行 IP 轉發。
對於創建 TUN 隧道,將在此處留下一個實用腳本,來自Ip Tunnel Over Ssh With Tun;該腳本假定您以 root 身份執行。
將“PermitTunnel yes”添加到 /etc/ssh/sshd_config
現在,在客戶端上使用一些參數執行 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.sh的腳本,用於在 TAP 介面上創建 OpenSSH 隧道。