![호스트 이름을 공개 주소 대신 로컬 주소로 강제 변환하는 방법은 무엇입니까?](https://rvso.com/image/1585743/%ED%98%B8%EC%8A%A4%ED%8A%B8%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EA%B3%B5%EA%B0%9C%20%EC%A3%BC%EC%86%8C%20%EB%8C%80%EC%8B%A0%20%EB%A1%9C%EC%BB%AC%20%EC%A3%BC%EC%86%8C%EB%A1%9C%20%EA%B0%95%EC%A0%9C%20%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
홈 네트워크에 다음에서 제공하는 동적 DNS를 사용하는 Linux 서버가 있습니다.noip.com, 해당 호스트 이름 "xxxx.hopto.org". 내 네트워크 외부(예: 커피숍)에서 이 호스트 이름을 사용하여 내 서버에 핑하거나 SSH를 보낼 수 있습니다. 그러나 로컬 네트워크에 있는 경우 호스트 이름을 사용하여 서버에 ping 또는 SSH를 실행할 수 없습니다. 실행하면 host
내 서버의 호스트 이름이 내 컴퓨터의 공용 IP와 동일한 공용 IP로 확인되는 것으로 표시됩니다.
MacBook-Air:~ user$ host xxxx.hopto.org
xxxx.hopto.org has address 47.6.24.149
MacBook-Air:~ user$ curl ipinfo.io/ip
47.6.24.149
내 배경에는 실제로 네트워킹 개념이 포함되어 있지 않지만 이 문제에 대한 두 가지 잠재적인 해결책을 볼 수 있습니다.
- 서버와 동일한 네트워크에 있을 때 호스트 이름이 로컬(정적) IP 주소로 확인되도록 강제합니다.
- 어떻게든 내 서버에 자체 공용 IP 주소를 제공하세요.
이 중 하나(또는 둘 다)를 어떻게 수행합니까? 더 쉽고 더 나은 또 다른 솔루션이 있습니까? 당신의 도움을 주셔서 감사합니다.
답변1
첫째, AFH가 댓글에서 언급했듯이 단순히 공용 IP 주소를 사용하여 자신의 서비스에 액세스하려는 경우에는 이 작업을 전혀 수행할 필요가 없을 수도 있습니다. 필요한 것은 라우터에서 헤어핀 NAT(또는 NAT 루프백이라고도 함)를 활성화하여 네트워크 내부에서 자신의 공용 IP에 접근할 수 있도록 하는 것입니다. 네트워크 인프라가 이를 처리/구성할 수 있는 경우 이것이 최고의 솔루션입니다(소비자 등급이 아닌 모든 것은 쉽게 그렇게 할 수 있어야 합니다).
이제 여전히 DNS 접근 방식을 사용하고 싶다면 기술 용어는 다음과 같습니다.분할-수평 DNS, 요청의 소스 주소에 따라 다른 DNS 응답을 원합니다. 불행하게도 대부분의 동적 DNS 서버는 이를 제공하지 않으며 필요한 제어 수준도 없습니다. 따라서 두 가지 가능성이 있습니다.
- 공개적으로 연결 가능한 서버(예: VPS)에서 도메인에 대해 신뢰할 수 있는 사용자 지정 DNS 서버를 설정합니다.
- 로컬 네트워크 내에서만 DNS 전달자를 설정하십시오(대부분의 소비자 라우터에 내장된 것과 매우 유사함).
두 번째 접근 방식이 아마도 더 적합할 것입니다. 그러나 DNS 전달자를 확인자로 설정하려면 DHCP 서버(아마도 라우터에서)를 구성해야 합니다.
원래:
- 설치하다dnsmasq(방법은 서버 OS에 따라 다름)
- 확인자로 dnsmasq 서버를 가리키도록 DHCP를 구성합니다.
- 내부적으로 주소를 확인하기 위해 dnsmasq가 설치된 서버를 구성합니다. 예:
/etc/hosts
서버에서
이 접근 방식은 다음을 의미합니다.
- 외부 클라이언트는 동적 DNS 공급자로부터 직접 공용 IP를 얻습니다.
- 내부 클라이언트가 dnsmasq를 쳤습니다.
- 일반 공개 호스트를 요청하는 경우 평소와 같이 업스트림 서버(예: ISP DNS 서버)로 전달됩니다.
- 귀하가 구성한 내부 호스트 중 하나를 요청하는 경우 로컬 응답을 받습니다. 이는 클라이언트가 로컬 네트워크 내에 있을 때만 발생합니다.
또는 기본적으로 수평 분할을 수행할 수 있는 보다 완전한 기능을 갖춘 DNS 서버(bind9 등)를 사용할 수 있습니다.
답변2
파일 에 추가할 수 있지만 /etc/hosts
네트워크 외부에서 해결을 방해하지 않도록 별명을 제안하고 싶습니다. 따라서 다음과 같습니다 /etc/hosts
.
#internal IP of server #nickname
192.168.0.24 hopto.local
이제 hopto.local
서버의 로컬 주소로 확인됩니다.
자세한 내용은 /etc/hosts
여기를 확인하세요.맨페이지
행운을 빌어요!