저는 Linux를 처음 사용하지만 비즈니스 프로젝트의 일부로 NAT 및 DNS를 통해 리디렉션되도록 방화벽을 구성해야 합니다.
예를 들어 트래픽이 www.A_DOMAIN.com:9000
(DNS가 내 서버로 변환됨) 다음으로 리디렉션됩니다.hw.ANOTHER_DOMAIN.io:9998
이 목표를 어떻게 달성할 수 있나요?
감사해요
피트
답변1
www.A_DOMAIN.com
DNS를 사용하면 별칭을 만들 수 있지만 hw.ANOTHER_DOMAIN.io
이는 포트 번호에 영향을 주지 않습니다. 따라서 서비스가 일반 HTTP/HTTPS가 아닌 이상 DNS 스푸핑은 귀하의 요구 사항을 충족하지 못합니다.
서버 포트 9000에서 들어오는 트래픽을 허용하는 방화벽 DNAT 규칙을 설정할 수 있습니다. 이 규칙은 주소 지정을 에서 로 변경하고 original_client:some port -> your_server's_IP:9000
응답 your_server's_IP:some port -> other_server's_IP:9998
을 자동으로 역 매핑하여 원래 클라이언트에게 응답이 클라이언트가 쿼리를 보낸 위치에서 나온 것처럼 보이도록 합니다. TCP 프로토콜 수준에서 이는 원래 연결의 일부로 응답을 식별하는 데 중요합니다.
그러나 간단한 방화벽 규칙은 요청 자체에 대해 아무 작업도 수행하지 않으므로 HTTP를 사용하는 경우 서버는 hw.ANOTHER_DOMAIN.io
요청이 아직 전송되었음을 확인 www.A_DOMAIN.com
하고 오류 메시지로 응답할 수도 있고 응답하지 않을 수도 있습니다 hw.ANOTHER_DOMAIN.io
. 나는 그것에 대해 아무것도 모른다 www.A_DOMAIN.com
. 마찬가지로, 클라이언트의 웹 브라우저는 서버의 호스트 이름이 클라이언트가 요청한다고 생각하는 것과 일치하지 않는다는 경고를 표시할 수도 있습니다.
TLS 보안 연결(예: HTTPS)을 사용하는 경우 클라이언트는정말답변을 생성한 서버의 인증서가 클라이언트가 요청한 주소와 일치하지 않으며 심각한 경고가 표시됩니다.
www.A_DOMAIN.com:9000
보다 발전된 접근 방식은 들어오는 요청을 다시 제출하고 hw.ANOTHER_DOMAIN.io:9998
프로토콜 헤더를 수정하며 필요에 따라 패킷을 해독하고 다시 암호화하는 역방향 프록시를 설정하는 것입니다 .
사용 가능한 옵션 중 이는 hw.ANOTHER_DOMAIN.io:9998의 콘텐츠를 www.A_DOMAIN.com:9000에 표시하는 가장 원활한 솔루션이지만 서버의 최대 처리 능력도 필요합니다.
클라이언트가 실제로 리디렉션되는 연결을 보는 것에 신경 쓰지 않는다면 HTTP/HTTPS를 사용하는 또 다른 가능성이 있습니다. 해당 URL로 리디렉션하여 모든 요청에 응답하는 hw.ANOTHER_DOMAIN.io:9998
작은 웹 서버를 설정할 수 있습니다 . 기본적으로 웹 브라우저에 "대신 hw.ANOTHER_DOMAIN.io:9998로 이동"이라고 말하면 됩니다.www.A_DOMAIN.com:9000
hw.ANOTHER_DOMAIN.io:9998
이는 일반적으로 클라이언트가 서버에 단 한 번의 요청만 하고 이후의 모든 요청은 다른 서버에 직접 이루어짐을 의미하므로 아마도 HTTP/HTTPS에 가장 효율적인 솔루션일 것입니다. 그러나 클라이언트는 웹 브라우저의 주소 표시줄에 있는 주소가 로 업데이트된 것을 볼 수 있으므로 hw.ANOTHER_DOMAIN.io:9998
전달을 비공개로 유지하려면 이 방법이 적합하지 않습니다. 클라이언트가 에 직접 연결할 수 없는 경우 hw.ANOTHER_DOMAIN.io:9998
.
보시다시피 사용 사례의 다양한 세부 사항에 따라 적용할 수도 있고 적용할 수 없는 여러 솔루션이 있습니다. 각 솔루션에는 고유한 제한 사항이 있으며 이는 중요할 수도 있고 중요하지 않을 수도 있습니다.
현재 질문하는 방식에는 실제로 질문과 관련된 Unix/Linux가 없습니다. 원한다면 Windows에서 설명한 모든 해결 방법을 수행할 수 있습니다. 문제에 TCP 수준 NAT가 적용되는 경우 서버를 사용하지 않고도 기업 네트워크 라우터나 하드웨어 방화벽 장치에서 수행할 수 있습니다. Linux 서버를 보유하고 계시지만, 배포판의 이름과 버전을 지정하지 않으셔서 정확한 추천을 드리기 어렵습니다. 귀하의 질문은 현재 "더 많은 주의가 필요합니다" 유형의 마감 투표를 받기 시작할 위험이 있습니다.
그리고 내가 그렇게 말할 수 있다면, 그렇게 초점이 없는 방식으로 질문을 해야 한다는 사실은 당신이 Linux에 익숙하지 않을 뿐만 아니라 아마도 일반적인 TCP/IP 네트워킹에 익숙하지 않을 수도 있음을 암시합니다. 실제로 상업 프로젝트를 진행하고 있다면 자신의 환경에 대해 올바른 질문을 시작할 만큼 충분히 배울 시간이 없을 수도 있습니다.현재의 한계를 인식하고 가능하다면 보다 기술적인 수준에서 귀하의 특정 상황을 이해하는 조직 내 사람들에게 도움을 구해야 한다고 생각합니다.
DNS, 방화벽, 역방향 프록시와 같은 기술이 무엇인지, 그리고 무엇을 할 수 있고 무엇을 할 수 없는지에 대한 기본적인 이해를 얻으려면 일종의 "IP 네트워킹 기초" 과정이 필요한 것 같습니다. 그러한 기본 지식은기초적인다양한 솔루션을 평가하고 특정 문제에 효과가 있는 것과 그렇지 않은 것을 이해할 수 있습니다.