WAN에서 포트 80을 사용할 수 없도록 설정할 수 없습니다. 이유는 모르겠습니다.
내 설정은 WAN 역할을 하는 홈 네트워크와 LAN 역할을 하는 "실험실"입니다. WAN 192.168.0.0/24, LAN 192.168.5.0/24. 라우터 wan 인터페이스는 192.168.0.113이고 LAN 인터페이스는 192.168.5.1입니다. 웹 서버는 192.168.5.17에 있고 포트 80을 192.168.0.133으로 전달하려고 합니다. WAN에서 사용할 수 있도록 설정하세요. 아래에 현재 버전의 규칙과 pf 로그를 넣었습니다. 제 생각에는 트래픽을 리디렉션하지 않는 것 같은데 그 이유는 모르겠습니다. 도움을 주시면 감사하겠습니다. 추가 정보가 필요하시면 기꺼이 제공해 드리겠습니다. 감사해요!
아, ssh 규칙은 잘 작동합니다. 아마도 wan 인터페이스를 사용하고 다른 시스템으로 리디렉션하지 않는 것 같습니다.
또한 포트 80 rdr-to 192.168.5.17을 사용하거나 사용하지 않고 마지막 규칙을 시도했지만 동일한 오류가 발생했습니다.
pflog 메시지를 포함하려고 했는데 스택 교환에서 스팸이라고 했습니다...
#no need to run rules on the loop back int
set skip on lo
#macro to set the external int to em0
ext_if = "em0"
#macro to set the internal int to the other eth int
int_if = "re0"
#macro for the webserver
web_server = "192.168.5.17"
#making table for people that we want to block
table <badguys> persist file "/etc/badguys"
block quick from <badguys>
#naming specific trusted IPs
trusted = "{ 192.168.0.155 }"
#blocking all inbound and outbound ip6 traffic
block inet6
#default policy, remember pf is a last match application unless you use quick
block all
#this is for passing and taging all internal traffic
pass in on $int_if tag ALLOWED
#perform NAT
match out on $ext_if inet from ($int_if:network) to any nat-to ($ext_if)
#pass out all of the packets that were tagged
pass out on $ext_if tagged ALLOWED
#allows traffic out from the host
pass out from { ($ext_if),$int_if }
#rule to let in ssh
pass in on $ext_if proto tcp from {192.168.0.0/24 $trusted} to {192.168.0.113} port 22 flags S/SA keep state \
(max-src-conn 5, max-src-conn-rate 5/5, \
overload <badguys> flush global)
#trying to forward http
pass log on $int_if from 192.168.5.17 to any binat-to 192.168.0.113
pass in log on $ext_if proto tcp from any to 192.168.0.113 port 80 rdr-to 192.168.5.17
답변1
규칙은 필요하지 않습니다 binat
.
pass in on $ext_if proto tcp to $(ext_if) port 80 rdr-to 192.168.5.17
pass out on $int_if proto tcp to 192.168.5.17 port 80
그 정도면 충분합니다. 마지막 규칙은 포함되지 않습니다.
pass out from { ($ext_if),$int_if }
리디렉션된 패킷은 $ext_if
IP 주소나 $int_if
.
호스트에서 발생하는 일을 어느 정도 제어할 수 있으므로 pass out
WAN 및 LAN에서 들어오는 트래픽만 필터링하는 간단한 규칙을 추가하고 다른 모든 pass out ...
규칙을 제거하면 작업이 더 간단해질 수 있습니다.
tcpdump
패킷(및 해당 응답)이 실제로 전달되고 리디렉션/NAT되는지 확인하기 위해 외부 및 내부 인터페이스에서 사용하는 것이 도움이 될 수 있습니다. 또한 웹 서버에서도 동일한 작업을 수행하는 것이 좋습니다.
또한 라우팅 문제에도 주의하세요. 웹 서버가 응답을 보낼 위치를 알고 있는지 확인하십시오. 귀하의 예에서 192.168.5.1이 192.168.0.0/24로 향하는 패킷의 게이트웨이(또는 기본 게이트웨이)임을 알고 있는 경우입니다.