연결된 네트워크에서 호스트 이름을 조건부로 확인하는 방법은 무엇입니까?

연결된 네트워크에서 호스트 이름을 조건부로 확인하는 방법은 무엇입니까?

나는 작은 홈 서버를 가지고 있고 랩톱의 프로그램이 LAN과 WAN 모두에서 액세스할 수 있기를 원합니다. 이를 달성하는 가장 깔끔한 방법은 사용자 정의 호스트 이름을 정의하고 연결된 네트워크에 따라 다르게 해결하는 것이라고 생각합니다.

즉, 호스트 이름을 확인할 수 있습니까?엑스IP 주소로네트워크에 연결된 경우부자및 IP 주소로두번째그렇지 않으면?

저는 netctl네트워크 관리자로 Arch Linux를 사용하고 있습니다. 내가 원하는 것을 달성하는 방법은 네트워크 구성 파일에 후크를 설정하는 것이라고 가정합니다.부자어떻게든 호스트 파일을 변경하지만 후자를 수행하는 방법을 잘 모르겠습니다.

물론 더 나은 해결책도 듣고 싶습니다.

답변1

저는 이 문제를 dnsmasq. 질문의 예에 따라 dnsmasq노트북에 DNS 캐싱을 설정한 후 수행한 작업은 다음과 같습니다.

  1. 디렉터리 생성/etc/hosts.d

  2. 다음 스크립트를 넣고 /etc/netctl/X/실행 가능하게 만듭니다.

 #!/bin/sh
 # /etc/netctl/X/X_local.sh
 echo 'A X' > /etc/hosts.d/X
 chmod 744 /etc/hosts.d/X
 #!/bin/sh
 # /etc/netctl/X/X_remote.sh
 echo 'B X' > /etc/hosts.d/X
 chmod 744 /etc/hosts.d/X
  1. 네트워크 구성 파일에 다음 줄을 추가하세요./etc/netctl/Foo
 ExecUpPost=/etc/netctl/X/X_local.sh
 ExecDownPre=/etc/netctl/X/X_remote.sh
  1. addn-hosts=/etc/hosts.d에 추가하다/etc/dnsmasq.conf

이는 옵션이 디렉토리에서 추가 호스트 이름 연결을 찾도록 addn-hosts지시하기 때문에 작동합니다.dnsmasq/etc/hosts.d

관련 정보