openbsd의 포트 전달/Nat 문제

openbsd의 포트 전달/Nat 문제

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_ifIP 주소나 $int_if.

호스트에서 발생하는 일을 어느 정도 제어할 수 있으므로 pass outWAN 및 LAN에서 들어오는 트래픽만 필터링하는 간단한 규칙을 추가하고 다른 모든 pass out ...규칙을 제거하면 작업이 더 간단해질 수 있습니다.

tcpdump패킷(및 해당 응답)이 실제로 전달되고 리디렉션/NAT되는지 확인하기 위해 외부 및 내부 인터페이스에서 사용하는 것이 도움이 될 수 있습니다. 또한 웹 서버에서도 동일한 작업을 수행하는 것이 좋습니다.

또한 라우팅 문제에도 주의하세요. 웹 서버가 응답을 보낼 위치를 알고 있는지 확인하십시오. 귀하의 예에서 192.168.5.1이 192.168.0.0/24로 향하는 패킷의 게이트웨이(또는 기본 게이트웨이)임을 알고 있는 경우입니다.

관련 정보