외부 호스트에 대한 로컬 DNS 확인 강제

외부 호스트에 대한 로컬 DNS 확인 강제

내 환경: *운영 체제:* 에스트롬리눅스

도메인 명 시스템:제본

현재 상황:

  1. 사용자가 내 개인 오프라인 네트워크에 연결합니다.
  2. 사용자가 google.com에 액세스하려고 하는데 내 상자가 개인 네트워크에 있으므로 연결을 사용할 수 없다는 오류가 발생합니다.

필수 시나리오의 예:

  1. 사용자가 내 개인 오프라인 네트워크에 연결합니다.
  2. 사용자가 브라우저에서 google.com이나 다른 외부 호스트에 액세스하려고 하면 내 스플래시 페이지로 리디렉션됩니다.

내 컴퓨터의 인터넷 연결이 끊기더라도 최종 사용자는 계속해서 google.com이나 다른 외부 웹사이트를 방문하여 내 실행/포털 페이지로 리디렉션될 수 있다는 아이디어입니다.

이를 달성하는 방법에 대한 아이디어나 피드백을 주시면 감사하겠습니다.

답변1

방법 1#IPTABLES

                                                                     xxxxx
      +----------+                 +----------+             xxxxxxxxx     xxx xxxxx
      |          |                 |          |            xx                     xx
      |          |                 |  Linux   |          xxx                       xx x
      |          |                 |  Box     |          x                            x
      |  Clinet  |     ========>   |  As      |  ====>  x   WebServer portal page.
      |          |                 |  GateWay |          xx                        xxx
      |          |                 |          |           x                         x
      |          |                 |          |            xx xxx       x       xxxxx
      +----------+                 +----------+                   xxxxxxxxxx xxx

클라이언트 컴퓨터에서 게이트웨이를 사용하고 Linux 상자에 다음 규칙을 추가하고 Ipforwording을 활성화합니다.

/sbin/iptables -t nat -A PREROUTING -s [source network/mask] -p tcp --dport 80 -j DNAT --to-destination [your webserver]

IP_전달 활성화:

sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf

그런 다음 신청하세요

sysctl -p

드라브가 말했듯이

포트 443을 리디렉션할 수 있지만 이렇게 하면 브라우저가 유효하지 않은 인증서에 대한 경고를 표시하게 된다는 점에 유의하세요(이는 무엇을 하든 발생합니다).

방법 2#DNS

명명된.conf에서:

zone "." IN {
    type master;
    file "named.root";
};

"named.root"에서:

$ORIGIN .
$TTL 1D
@    IN     SOA  @ none. ( 0 1D 1H 1W 3H );
.     IN     NS   @
@     IN     A   10.0.0.1
*     IN     A   10.0.0.1

IP 주소 10.0.0.1을 웹 서버로 바꾸십시오.

위의 방법은 테스트를 거쳤으며 효과적입니다.

관련 정보