LAN 외부에서는 접근할 수 없는 인트라넷 웹사이트를 호스팅하는 방법은 무엇입니까?

LAN 외부에서는 접근할 수 없는 인트라넷 웹사이트를 호스팅하는 방법은 무엇입니까?

내 LAN에 서버(Debian Squeeze)가 있습니다. Nginx 웹 서버를 설치했습니다. 서버에는 소프트웨어 패키지를 다운로드하고 설치할 수 있는 인터넷 액세스가 있습니다.

내 질문:

LAN상의 사용자가 다음을 입력할 때 웹사이트를 호스팅할 수 있습니다.

http://abcd (no .com, .net, etc.) 

웹사이트가 브라우저에서 열리나요? 또한 완전한 인터넷 접속이 가능하며 Google이나 기타 기본 검색 엔진에 직접 접속할 수 없습니다.

동시에, 어떤 URL을 입력하더라도 LAN 외부의 누구도 해당 항목에 액세스할 수 없습니다.

가능합니까?

답변1

네트워크에 대한 제어권이 없고, 클라이언트 시스템에 대한 제어권도 없고, 외부에서 서버에 액세스할 수 없다면 이것이 불가능할 것 같습니다. Google 또는 Stackexchange를 서버로 리디렉션하지 못하게 하는 것이 무엇인지 상상해 보십시오.

당신이 할 수 있는 일은 관리자에게 당신의 IP 주소를 가리키는 DNS 항목을 생성하도록 요청하는 것입니다 abcd. 그러면 표준 포트에서 수신 대기하는 웹 서버만 있으면 됩니다. 그가 거부하면 호스트 이름 대신 IP 주소로 웹 서버에 액세스할 수 있습니다.

답변2

다른 컴퓨터가 귀하의 컴퓨터에서 실행되는 서버에 액세스할 수 있는지 여부를 제어하는 ​​이름이 아니라 단지 편의의 문제일 뿐입니다. LAN 외부에서 컴퓨터나 최소한 웹 서버에 접근할 수 없도록 하려면 IP 또는 HTTP 수준에서 이를 차단하는 조치를 취해야 합니다.

LAN 관리자가 LAN 내의 웹 서버로 들어오는 연결을 차단했을 수 있으며, 이 경우 사용자가 할 수 있는 일은 없습니다. 그러나 그럼에도 불구하고 만약을 대비해 컴퓨터에 필터를 설정하고 싶을 수도 있습니다.

LAN 외부의 웹 트래픽을 제공하지 않으려면 IP 수준에서 들어오는 웹 트래픽을 차단하세요. 사용iptables이를 수행하려면 iptables 규칙을 설정하는 일부 고급 도구를 사용하십시오.우프보. 들어오는 모든 HTTP 및 HTTPS 트래픽을 차단하려면 LAN이 주소 범위 203.0.113.0/24(즉, 203.0.113.*)에 해당한다고 가정하고 TCP 포트 80 및 443을 차단합니다.

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 80,443 -s \!203.0.113.0/24 -j REJECT

필요한 포트를 제외한 모든 수신 포트를 차단할 수도 있습니다. 예를 들어, 들어오는 SSH 요청과 LAN에서 들어오는 트래픽만 허용하고 다른 모든 들어오는 트래픽을 제외하려면 다음을 수행합니다.

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -p tcp --dport http,https -s 203.0.113.0/24 -j ACCEPT
iptables -A INPUT -j REJECT

당신은 또한 볼 수 있습니다Debian에서 시작 시 iptables 로딩에 대한 정책을 구성하는 표준 방법이 있습니까?,iptables: 특정 IP는 허용하고 다른 모든 연결은 차단합니다.그리고로컬 네트워크 연결만 허용하도록 특정 방화벽 포트를 설정하시겠습니까?.

어디에서나 컴퓨터에 대한 웹 연결을 허용하고 LAN에서 특정 가상 호스트에 대한 액세스만 허용하려면 Apache 서버 수준에서 필터링해야 합니다(Apache를 사용한다고 가정합니다). 이는 가상 호스트 구성 파일 또는 파일에서 다음을 .htaccess사용하여 수행됩니다.허용하다그리고부정적인지침.

Order deny,allow
Deny from all
Allow from 203.0.113.0/24

이름에 관해 말하자면, 서버에 점이 없는 이름을 지정하려면 클라이언트 시스템의 협력이 필요합니다. 그러나 서버에 대해 전역적으로 유효한 이름을 지정할 수 있습니다. 이는 서버가 어디에서든 액세스할 수 있는지 여부와 완전히 독립적입니다. 당신에게 필요한 것은도메인 명 시스템귀하의 기계에 대한 항목입니다. 연간 약 10달러에 도메인 이름과 기본 DNS 서비스를 구입할 수 있으므로 컴퓨터의 IP 주소는 www.spartanblogger.net. 상관없어. 컴퓨터의 IP 주소가 다른 경우 지원되는 공급자가 필요합니다동적 도메인 이름 확인. 개인용 단일 주소의 경우 자신의 도메인 이름이 없어도 괜찮다면 다음과 같은 무료 서비스를 사용할 수 있습니다.동적 DNS(귀하의 IP 주소가 실제로 동적인지 여부에 관계없이) 와 같은 이름을 선택할 수 있습니다 spartanblogger.dyndns.org.

답변3

귀하의 질문에서 도메인 이름이나 IP 액세스만을 사용하고 싶다고 직접 언급하지 않았습니다. 직접 IP 액세스를 사용하면 원하는 것을 할 수 있지만 그렇지 않으면 그렇게 간단하지 않습니다(설명 참조).

IP를 확인하세요. ifconfig그러면 대학(동일한 네트워크에 있는 경우)에서 IP 주소를 브라우저에 입력하여 nginx를 통해 렌더링하는 내용을 볼 수 있습니다. 그러나 라우터는 네트워크 외부의 요청을 컴퓨터로 전달하지 않기 때문에 외부에서 이 콘텐츠에 액세스할 수 없습니다. (필요하지 않은 경우 라우터 구성에 전달 규칙을 추가할 수 있습니다)

/etc/nginx/nginx.conf기본 nginx 구성 파일에 무엇이 있는지 잘 모르겠지만 여기에 구성 파일( ) 에 추가할 수 있는 다음과 같은 간단한 구성을 삽입했습니다 .

server {
  listen       80;
  server_name  _;
  # path to your folder what you want to render
  root   /usr/share/nginx/html;
  index index.php index.htm index.html;
}

그러나 nginx를 실행하는 사용자에게 루트 폴더에 대한 읽기 권한이 있어야 합니다. nginx가 사용하는 사용자를 확인 ps aux | egrep nginx하고 다음을 사용하여 구성에서 설정할 수 있습니다.user nginx;

공식 구성 웹사이트에서더 읽어보실 수 있습니다!

그러나 대학 컴퓨터에 액세스할 때 컴퓨터의 호스트 파일을 편집하여 컴퓨터를 가리키는 사용자 지정 도메인을 삽입할 수 있습니다 /etc/hosts.

<your_ip> something.com

관련 정보