-D
SSH를 통해 네트워크 트래픽을 라우팅하려면 대부분의 사람들은 애플리케이션에서 사용하도록 구성할 수 있는 localhost에 SOCKS 프록시를 생성하는 옵션을 전달하라고 지시합니다 .
그러나 간단한 프록시는 나에게 가장 실용적인 솔루션이 아닙니다. TUN/TAP을 사용하여 자체 인터페이스로 SSH 터널에 액세스할 수 있는 방법이 있습니까?
저는 리눅스를 사용하고 있습니다.
답변1
Linux에서 OpenSSH를 사용하면 적절한 경우 올바른 라우팅 및 IP 전달을 설정하기만 하면 TUN 또는 TAP 인터페이스를 사용하여 SSH를 통해 터널을 생성할 수 있습니다.
TUN 터널을 생성하기 위해 여기에 실용적인 스크립트가 남습니다.Tun을 사용하여 SSH를 통해 IP 터널 설정;이 스크립트는 루트로 실행하고 있다고 가정합니다.
/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 터널을 생성하는 데 사용됩니다.