
내 라우터의 포트 전달을 통해 공용 인터넷에 노출되는 로컬 네트워크에서 실행되는 SSH 서버가 있습니다. 또한 내 컴퓨터에서 로컬로( 를 통해) 및 원격으로(동적 DNS를 통해) 호스트 이름을 설정했습니다 etc/hosts
. 다음과 같이 가정해 보겠습니다.
ip name
locally 192.168.0.5 myhost
remotely 11.22.33.44 myhost.example.com
ssh 192.168.0.5
내 로컬 네트워크 내에서는 / 를 통해 서버에 액세스할 수 있고 네트워크 외부에서는 / 를 ssh myhost
통해 서버에 액세스할 수 있습니다 .ssh 11.22.33.44
ssh myhost.example.com
그 시점까지는 모든 것이 잘 작동합니다. 그러나 동일한 서버에 대해 두 개의 다른 호스트 이름을 사용하는 것은 약간 번거롭습니다. 서버에 액세스하고 싶습니다.통일된 방식즉, 로컬과 원격 모두에서 작동하는 단일 IP/호스트 이름만 사용합니다.
이 문제에 대한 쉬운 해결책이 있습니까? 그게 중요하다면 저는 macOS를 사용하고 있습니다.
참고: 공용 IP를 사용하여 로컬 네트워크에서 내 라우터에 액세스할 수 없습니다.
답변1
동적 DNS가 설정되어 있으므로 /etc/hosts 파일을 변경할 필요가 없습니다.
외부 액세스의 경우 호스트-IP 확인을 위해 DNS를 사용하고 로컬 네트워크에도 동일한 것을 원합니다.
대부분의 라우터는 DNS 주입을 지원합니다. 라우터 구성을 확인하고 외부 네트워크에 있는 것처럼 동일한 동적 DNS 호스트 이름에 해당하도록 192.168.0.5 IP 주소를 할당해야 합니다. 그런 다음 내부 네트워크에 있고 라우터를 DNS 서버로 사용하면 라우터는 myhost.example.com을 로컬 주소로 확인합니다. 그리고 밖으로 나가서 외부 액세스를 시도하면 동적 DNS가 차례대로 외부 IP를 확인합니다.
라우터 설정에 문제가 있는 경우 제조사와 모델을 게시하여 필요한 설정을 지원하는지 확인할 수 있습니다.
답변2
DNS를 설정할 수 없는 경우 상자에 있는 SSH 구성으로 일부 게임을 플레이하여 비슷한 작업을 수행할 수 있습니다. 먼저 "집"에 있는지 여부를 감지할 수 있는 방법이 필요합니다. 어디로 가는지, 어떻게 연결하는지에 따라 Wi-Fi SSID를 폴링하여 가장 쉽게 수행할 수 있지만 BSSID 또는 네트워크 구성이 더 강력하고 가능할 수도 있습니다. 샘플은 다음과 같습니다.
MY_SSID="local ssid name"
ssid=`/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | grep " SSID" | cut -d " " -f 2-`
if [ "$ssid" == "$MY_SSID" ]
then
exit 0
else
exit 1
fi
이것을 "at_home"이라고 부르고 경로에 넣으세요. 그런 다음 myserver
일반적으로 외부 주소로 확인된다고 가정하고 SSH config
파일에 다음과 유사한 스탠자를 추가하여 내부 주소를 재정의합니다.
Match host myserver exec at_home
Hostname myserver.localname # or "local IP"