NAT, 방화벽, DNS 및 DHCP용 다른 모든 VM 앞에 Proxmox 및 OpenBSD VM을 설치했습니다.
나는 완전한 기능을 갖춘 DNS와 DHCP를 가지고 있습니다. 내 DHCP가 내 DNS 레코드를 올바르게 업데이트하고 있습니다. 다른 VM이 인터넷에 액세스할 수 있으므로 내 NAT도 제대로 작동합니다.
이제 작동하는 방화벽과 수신 NAT 규칙이 필요합니다.
예를 들어, .NET을 통해 연결할 수 있는 nginx라는 가상 머신이 있습니다 nginx.local.lan
.
간단히 말해서 내가 하고 싶은 일은 다음과 같다.
- 포트 80 및 443을 내
ngnix.local.lan
. - nated(80 및 443에서 nginx까지) 및 SSH를 제외한 WAN 인터페이스(em0)의 모든 것을 차단합니다.
- 하지만 LAN 인터페이스(em1)의 모든 것도 허용하고 싶습니다.
이것은 내 현재 pf.conf
파일입니다.
set skip on lo
block return # block stateless traffic
pass # establish keep-state
# Define interfaces
ext_if=em0
int_if=em1
# Allow SSH connections
pass in on $ext_if inet proto tcp from any to ($ext_if) port 22
# Allow VMs to get out of the network
pass out on $ext_if inet from $int_if:network to any nat-to $ext_if
답변1
나는 마침내 내가 전에 말한 모든 것을 할 수 있는 방법을 찾았습니다. 설명하겠습니다.
존재하다 /etc/pf.conf
:
모든 수신 트래픽 거부
(LAN 인터페이스 제외)
block in all
pass in quick on $int_if
첫 번째 줄은 모든 것을 차단하고 두 번째 줄은 LAN 인터페이스에서 들어오는 모든 것을 허용합니다. quick
키워드가 무엇인지 알고 싶다면 읽어보세요.이것.
그것이 작동하는지 어떻게 확신할 수 있나요? a를 실행하면 pfctl -sr
다음과 같은 결과가 출력됩니다.
block drop in all
pass in quick on em1 all flags S/SA
HTTP(S) 트래픽을 가상 머신으로 리디렉션
앞서 언급했듯이 유효한 DNS, DHCP, DDNS 설정을 구성했습니다. 즉, DHCP 임대를 요청하는 nginx 가상 머신이 있으면 자동으로 nginx.local.lan
도메인 항목을 임대된 IP와 연결합니다.
이를 알고 매크로를 사용하여 구성 파일에서 우아하게 만들려고 노력했습니다.
nginx_vm_map=80 443
pass in quick on $ext_if proto tcp from any to any port {$nginx_vm_map} rdr-to nginx.local.lan
첫 번째 줄은 가상 머신으로 리디렉션할 포트를 정의한 다음 $nginx_vm_map
내팅 규칙에 이 매크로를 사용하여 쉽게 변경할 수 있도록 합니다.