동일한 도메인을 사용하여 LAN과 외부에서 서버에 액세스

동일한 도메인을 사용하여 LAN과 외부에서 서버에 액세스

상황

LAN에 LAMP 서버를 실행하는 서버가 있고 TeamSpeak, nextcloud, 개인 웹 호스팅 등에 사용합니다.

저는 cloudflare를 "통해" 도메인을 소유하고 있으며, 공용 IP 주소로 리디렉션됩니다.

LAN과 외부에서 서버에 액세스합니다.

내 문제 / 내가 바꾸고 싶은 것

내 서버가 내 LAN에 있기 때문에 내 클라이언트와 동일한 공용 IP 주소를 갖습니다(물론 내가 집에 있을 때만). 따라서 내 자신의 공용 IP를 핑하는 것이 작동하지 않기 때문에 내 서버에 액세스할 수 없습니다(정상적인 동작인 것 같습니다).

따라서 이 문제를 극복하기 위해 호스트 파일을 사용하여 도메인을 서버의 로컬 IP 주소로 리디렉션합니다. 하지만 위치를 바꿀 때마다(거의 매일) 이 파일을 편집해야 합니다.

또한 이 파일을 편집할 수 있는 몇 가지 장치에서만 작동합니다. 따라서 예를 들어 내 휴대전화(안드로이드)에서는 내 웹사이트나 도메인 관련 항목에 액세스할 수 없습니다.

이 문제를 극복할 수 있는 방법이 있나요?

사실 나한테 몇 가지 생각이 있어

  • 내 공용 IP 주소가 내 LAN에서 "핑 가능"하도록 하는 방법을 찾는 중입니다.
  • 로컬 DNS 서버 설정
  • 가능하다면 요청하는 IP 주소에 따라 다른 DNS 영역 파일을 사용합니다(cloudflare가 이 기능을 제공할 수도 있음). (요청 IP 주소가 도메인이 리디렉션되는 것과 동일한 경우 서버에 대한 내 로컬 IP로 응답합니다)

편집 (17.03.17)

앞으로 이 서버를 메일용으로도 사용하고 싶다는 사실을 언급하는 것을 잊어버렸습니다. 그러므로 이에 대비해야 합니다.

이제 내 도메인을 서버의 로컬 IP 주소로 확인하는 DNS 서버를 설치했습니다( bind9역방향으로도 ; 사용). 이 방법은 완벽하게 작동하지만 이를 위해서는 DNS 서버(내 컴퓨터가 요청하는 서버)를 수동으로 설정해야 했기 때문에 다른 웹사이트의 로딩 시간이 느려졌습니다. 그러나 이것은 또한 완벽한 솔루션이 아닙니다. 왜냐하면 내 친구와 같은 사람은 목록에 내 DNS 서버가 없기 때문에 서버에 액세스할 수 없기 때문입니다. 내 라우터의 기본 DNS 서버를 변경하면 이 문제가 해결됩니까?

불행히도 저는 동적 공개 IP 주소를 가지고 있는데, 이는 약 3주마다 변경됩니다. 지금까지는 DNS 항목을 수동으로 변경했지만 변경해야 합니다(그래서 Cloudflare로 전환했는데 Cloudflare에서 이를 위한 API를 제공합니다).

외부에서 내 서버에 액세스하려면 일부 포트를 서버로 리디렉션/전달해야 했습니다. 다음은 그 스크린샷입니다:

여기에 이미지 설명을 입력하세요

답변1

대답은 유틸리티에 따라 다릅니다. 내부 LAN(공개 이름으로)에 있는 서버와 통신하기 위해 http만 사용하는 경우 포트에 따라 동작을 변경할 수 있습니다. 예를 들어 소스 IP 주소를 기반으로 로컬 램프에서 리디렉션을 실행할 수도 있습니다. (예를 들어 소스 주소가 외부 게이트웨이인 경우 요청을 내부 IP 주소로 리디렉션할 수 있습니다.) 그래도 이름 매핑을 얻을 수는 없습니다.

언급된 내용에도 불구하고 라우터의 포트 전달에 잘못된 구성이 있는 것 같습니다. 내 라우터도 지원하지 않는 헤어핀에 대해서는 이야기하지 않지만 포트 전달을 사용하고 외부 도메인/인터페이스를 통해 라우팅하여 LAN 내부 또는 외부에서 내부 서버에 연결할 수 있습니다. 예를 들어 라우터의 wan 인터페이스를 가리키는 home.domain.com DNS 항목이 있습니다. 내부에 있든 외부에 있든 home.domain.com에 대한 요청은 wan 인터페이스로 이동한 다음 올바른 대상 서버로 다시 포트 전달됩니다. 어떤 면에서는 여전히 간접적이지만 효과가 있으므로 여러분에게도 효과가 있을 것입니다.

또한 LAN 내부에 포트/서비스를 제공하는 다른 서버가 몇 개 있는지에 대한 질문입니다. 그것밖에 없나요?

마지막으로, 나는 연결된 네트워크에 따라 달라지는 호스트 이름 정책을 원하기 때문에 때때로 이 문제도 고려합니다. 어쩌면 쉬운 옵션은 { (a) 스케줄러 스크립트를 작성하거나(Windows를 사용하는 경우) (b) ifup/ifcfg에 스크립트를 추가하여 LAN 내부의 특정 Linux 호스트 또는 기타 알려진 자산을 ping한 다음 설정하는 것입니다. 이를 기반으로 호스트 값을 지정합니다. 자체 내부 규칙을 사용하여 자체 DNS 서버를 실행하는 것만큼 우아하지는 않습니다(그런데 dhcp가 내부 LAN DNS 서버를 제공할 수 있기 때문에 처리하기 쉬울 수 있습니다).

아마도 동적 DNS가 아닌 도메인 이름에 대한 IP 리디렉션을 사용하고 있기 때문에 작동하지 않을 수도 있습니다. 예를 들어, 우리의 공용 IP는 동적이므로 내부 서버에서 정기적으로 외부/공용 IP 주소로 dnsmadeeasy 하위/도메인을 업데이트하도록 합니다. 그런 다음 호스트 이름 조회는 올바른 IP 주소로 바로 이동하며 그곳으로 리디렉션되지 않습니다.

답변2

마침내 이 최종 답변을 작성하는 데 너무 오랜 시간이 걸려서 죄송합니다.

(질문 편집에서 이미 언급됨)
완벽한 방법은 헤어핀/NAT를 지원하는 라우터를 갖는 것입니다. 하지만 내 것은 그렇지 않습니다. 그래서 DNS 서버를 사용하기로 결정했습니다. 내 컴퓨터와 전화 등의 기본 DNS 서버만 변경하면 되었습니다(모든 일반 운영 체제에서 가능함). 이로 인해 로딩 시간이 거의 눈에 띄지 않게(적어도 나는 그렇게 믿습니다) 느려졌습니다. 그러나 그것은 큰 문제가 아니다.

그러나 다음 문제(다른 사람들이 목록에 내 DNS 서버가 없어서 내 LAN에 있을 때 서버에 액세스할 수 없는 경우)가 더 큰 문제였기 때문에 나는 그대로 두기로 결정했습니다. 내가 존재한다고 가정하는 유일한 방법은 내 라우터의 기본 DNS 서버를 변경하는 것입니다. 하지만 그렇게 하려면 전체 설정을 수정해야 하지만 그렇게 하는 알려진 방법이 있습니다.

IP 주소 변경 관련 문제:
저는 새 IP 주소가 있는지 여부를 5초마다 확인하고, 그렇다면 위에서 언급한 cloudflare API를 통해 자동으로 IP 주소를 변경하는 작은 스크립트를 직접 작성했습니다. 누군가 필요하고 너무 게을러서 직접 작성할 수 없다면 제가 게시할 수 있습니다.

@Beracah님의 답변에 감사드립니다 :)

관련 정보