iptables를 사용하여 모든 트래픽을 로컬 웹 서버로 리디렉션

iptables를 사용하여 모든 트래픽을 로컬 웹 서버로 리디렉션

알로하,

iptables를 사용하여 Wi-Fi 라우터의 모든 트래픽을 로컬 웹 서버로 리디렉션하려고 합니다. 명령이 올바른지 잘 모르겠고 규칙에서 라우터 IP(172.16.0.1)를 제외하여 라우터에 액세스하지 못하도록 차단하고 싶습니다.

내가 지금까지 생각해낸 것:

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to 172.16.0.2:80
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to 172.16.0.2:80

라우터에 다시 액세스할 수 없게 될까봐 아직 위에서 테스트하지 않았습니다. 172.16.0.1이 172.16.0.2로 리디렉션되지 않도록 제외하려면 어떻게 해야 합니까?

설정: 172.16.0.2는 웹 서버의 IP입니다. 172.16.0.1은 내 라우터(dd-wrt)이며 인터넷에 연결되어 있지 않습니다.

내가 달성하려는 목표에 대한 예:

  • 사용자가 www.siteA.com에 액세스하려고 Wi-Fi 핫스팟에 연결하면 172.16.0.2(/index.html)로 리디렉션됩니다.
  • 사용자가 www.siteB.com에 액세스하려고 Wi-Fi 핫스팟에 연결하면 172.16.0.2(/index.html)로 리디렉션됩니다.
  • 사용자가 172.16.0.1에 액세스하려고 시도하지만 방향이 이루어지지 않습니다. :)

좋은 하루 보내세요. 감사합니다!

답변1

iptables 규칙은 순서대로 처리되므로 첫 번째 규칙은 라우터로 전달되는 모든 트래픽을 허용해야 합니다.

iptables -t nat -I PREROUTING -i br0 -p tcp -d 172.16.0.1--dport 80 -j ACCEPT 

다음으로 트래픽을 리디렉션하는 규칙을 추가합니다.

iptables -t nat -A PREROUTING -d !172.16.0.1 -i br0 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.2:80

SSL을 사용하여 서버에 연결하지 않기 때문에 이것이 https에서는 작동하지 않을 것이라고 생각합니다.

관련 정보