
내 설정에서는 먼저 VPN에 연결한 다음 SSH를 통해 서버에 연결해야 합니다.
현재 나는 이것을 좋아합니다 :
openvpn myconfig.ovpn
ssh myuser@myserver
그러면 내 모든 네트워크 트래픽이 해당 VPN을 통과하게 됩니다.
그러나 나는한다~ 아니다내 모든 데이터 트래픽이 이 VPN을 통과하기를 원합니다. GNU/Linux를 사용하여 하나의 특정 SSH 연결에서만 VPN을 사용하려면 어떤 도구를 사용해야 합니까?
즉, 다음을 수행하기 위해 bash 스크립트에 어떤 도구를 사용할 수 있습니까?
ssh-over-vpn.sh myuser.ovpn [email protected]
SSH 연결에만 VPN 구성을 사용하려면[이메일 보호됨]?
현재 myuser.ovpn 구성 파일은 다음과 같습니다.
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 200.200.200.18 443
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-GCM
setenv opt block-outside-dns
key-direction 1
verb 3
<ca> ... </ca> <cert> ...<key> ...<tls-auth> ...
답변1
하지만 모든 데이터 트래픽이 이 VPN을 통과하는 것을 원하지 않습니다. GNU/Linux를 사용하여 하나의 특정 SSH 연결에서만 VPN을 사용하려면 어떤 도구를 사용해야 합니까?
OpenVPN 클라이언트 구성을 다음으로 변경하세요.~ 아니다서버에서 '기본' 경로를 가져옵니다. 대신 필요한 경로만 지정하십시오.
route-nopull
route 10.0.0.66 255.255.255.255 vpn_gateway
즉, 다음을 수행하기 위해 bash 스크립트에 어떤 도구를 사용할 수 있습니까?
선택할 수 있는 것이 많지 않습니다. 전송 계층 터널이 래핑된 프로그램이 생성하는 소켓에 직접 매핑되므로 유사한 도구는 SOCKS 프록시(예: torify)에 대해 상대적으로 쉽습니다.약간IP 계층 터널(VPN)의 경우 래핑 도구가 실제 OpenVPN 프로토콜을 다시 구현하는 것 외에도 운영 체제의 네트워크 스택 대부분(IP 패킷 생성, 수신된 패킷을 에뮬레이트된 소켓에 매핑 등)을 다시 구현해야 하기 때문에 더 어렵습니다. .
당신이 사용할 수있는 가장 가까운 것은네트워크 네임스페이스(컨테이너의 빌딩 블록 중 하나) 이는 프로그램에 완전히 격리된 인터페이스 및 라우팅 테이블 세트를 제공합니다. unshare
또는를 사용하여 네트워크 네임스페이스를 만들고 그 안에서 프로그램을 실행하는 것은 쉽지만 ip netns
기본적으로 연결이 끊어져 있으므로(openvpn 클라이언트는 서버에 액세스할 수 없음) veth를 사용하여 "기본" 네임스페이스에 연결해야 합니다. 등.
이 모든 네임스페이스 설정은 결국 Docker/nspawn/etc의 일부를 다시 구현하게 되므로 OpenVPN 클라이언트와 SSH 클라이언트를 실행하는 Docker 컨테이너를 가동하는 것이 가능할 수도 있습니다.
답변2
따라서 VPN은 본질적으로 세 번째 계층 위의 어떤 것도 인식하지 못합니다.OSI 모델, 이는 어떤 포트나 프로토콜이 사용되고 있는지 볼 수 없음을 의미합니다. 원하는 효과를 얻기 위해 방화벽 마법을 사용할 수도 있지만 SSH를 직접 사용하는 것이 좋습니다.
관련된 모든 시스템과 네트워크는 귀하가 소유하고 관리한다고 가정합니다. SSH는 적절하게 구성되면 매우 안전한 프로토콜이며 openvpn과 마찬가지로 인터넷을 통해 사용해도 안전합니다. 훌륭한 것들이 있습니다가이드"강화"를 위해 openssh가 있습니다. 보안을 위한 몇 가지 기타 권장 사항:
- 서버 포트를 모호한 것으로 변경하십시오.이것이 실제로 그 자체로 더 "안전"하게 만드는 것은 아니지만 실패한 로그인 시도로 로그를 넘치게 만드는 웹 스크래핑 봇의 수를 줄입니다. 나는 몇 년 전에 이 일을 했고 그 이후로 단 한 번의 시도도 본 적이 없습니다.
- Fail2ban을 살펴보세요.이것은 로그인 시도를 모니터링하고 iptables에 방화벽 규칙을 추가하여 여러 번의 실패 후 IP 주소가 서버에 액세스하는 것을 "금지"하는 편리한 소프트웨어입니다. 환상적이야.
그런 다음 openssh의 ProxyJump 구성 옵션을 사용하여 해당 연결을 LAN의 다른 연결을 위한 터널로 사용할 수 있습니다.
도움이 되었기를 바랍니다!