VPN을 사용하지 않고 로컬에서 VPN과 유사한 동작을 달성해야 합니다.
WAN에서 액세스할 수 있는 특정 서버에 대해 SOCKS 프록시를 만들었으며 모든 트래픽이 프록시를 통해 전달되어 해당 네트워크 내의 호스트에 액세스할 수 있기를 원합니다.
내 SOCKS 프록시는 다음과 같습니다.
ssh -t -D 8088 user@proxy-host 'watch -n 1 date'
시스템 설정을 사용하여 시스템을 프록시로 설정했습니다.
환경 변수가 올바르게 설정되었는지 확인했습니다.
naftuli@macbook-nkay:~$ env | grep socks_proxy
socks_proxy=socks://127.0.0.1:8088/
그러나 SSH를 통해 특정 서버에 연결하면 해당 서버에 액세스할 수 없습니다.
$ ssh internal-host
ssh: Could not resolve hostname internal-host: Name or service not known
문제는 DNS가 SOCKS 터널을 통해 전달되지 않는다는 것입니다. 설정하는 방법이 있나요? 원격 DNS를 수동으로 사용하도록 Firefox를 구성할 수 있었는데, 이는 훌륭하게 작동했습니다. 이에 대한 환경 변수가 있습니까?
답변1
비슷한 주제수:
socks_proxy
openssh 자체는 환경 변수를 이해하지 못합니다 . 예를 들어 프록시를 통해 트래픽을 전달하려면 netcat을 사용해야 합니다.
ssh -o ProxyCommand='nc -X 5 --proxy 127.0.0.1:8088 %h %p' user@host
openssh의 하위 수준 기능이 환경 변수를 고려하지 않기 때문에 DNS 요청 전달이 더 복잡합니다. 요청을 프록시로 전달하는 로컬 DNS 확인자를 설정해야 할 수도 있습니다. 가지다dns-tcp-양말-프록시, 처리되어야 합니다.
./dns_proxy --socks_port=8088 --listen_port=53
이 데몬을 실행할 때 /etc/resolv.conf
이 DNS를 사용하도록 설정해야 합니다(Mac에서는 이를 존중하기를 바랍니다).
nameserver 127.0.0.1
간단한 테스트를 통해 다시 작동 해야 dig
하지만 이 파서가 작동하면 프록시 부분이 필요하지 않습니다.
dig example.com
점프박스 대신:
간단한 대안으로 일반 호스트를 점프 호스트로 사용하고 프록시 부분을 건너뛰고 -W
IO 리디렉션용 스위치를 사용하는 것이 좋습니다.
ssh -oProxyCommand="ssh -W %h:%p jumpbox" destination_host
점퍼박스에서 DNS 확인 및 라우팅을 수행해야 합니다. 이 옵션은 귀하의 시스템에 쉽게 통합될 수 있습니다.~/.ssh/config