DMZ의 호스트(인터넷->DMZ 및 DMZ->인터넷 트래픽의 경우)와 로컬 네트워크의 호스트(DMZ->로컬, 로컬->DMZ의 경우)를 보호하기 위해 외부/내부 방화벽이 있는 AWS VPC를 설정하고 있습니다. 및 로컬->인터넷 트래픽). 이제 OpenBSD에는 Xen 드라이버가 있으므로 두 개의 OpenBSD 6.1 VM을 만들고 아래 다이어그램에 따라 구성했습니다. 외부 방화벽 Vegeta는 정상적으로 인터넷과 통신할 수 있습니다. 그러나 내부 방화벽으로는 Bulma가 할 수 없습니다.
내가 부르마에 있고 다음을 수행하는 경우:
$ telnet 50.194.72.148 80
그런 다음 bulma의 기본 경로인 vegeta:xnf3에서 패킷을 볼 것으로 예상했지만 그렇지 않았습니다. bulma에서 vegeta로 ssh를 연결할 수 있으므로 패킷이 통과됩니다. 또한 내 pf 방화벽 규칙은 기본적으로 모든 것을 차단하더라도 트래픽을 허용하고 다른 모든 오류를 기록합니다. 그러나 pf는 눈에 띄는 실패를 나타내지 않았습니다. 이 작업을 수행하기 위한 일부 AWS 구성이 누락된 것입니까?
bulma의 라우팅 테이블:
bulma# route -n show -inet
Routing tables
Internet:
Destination Gateway Flags Refs Use Mtu Prio Iface
default 192.168.15.238 UGS 0 209 - 8 xnf0
224/4 127.0.0.1 URS 0 0 32768 8 lo0
127/8 127.0.0.1 UGRS 0 0 32768 8 lo0
127.0.0.1 127.0.0.1 UHhl 1 22 32768 1 lo0
192.168.15.0/28 192.168.15.14 UCn 2 0 - 4 xnf1
192.168.15.1 0a:8f:0f:99:77:46 UHLc 0 5668 - 3 xnf1
192.168.15.2 0a:8f:0f:99:77:46 UHLc 0 3 - 3 xnf1
192.168.15.14 0a:cb:41:73:83:ca UHLl 0 6052 - 1 xnf1
192.168.15.15 192.168.15.14 UHb 0 0 - 1 xnf1
192.168.15.224/28 192.168.15.228 UCn 2 0 - 4 xnf0
192.168.15.225 0a:28:c7:f3:88:0c UHLc 0 5671 - 3 xnf0
192.168.15.228 0a:15:e5:12:a4:28 UHLl 0 5806 - 1 xnf0
192.168.15.238 0a:c4:41:0e:06:74 UHLch 5 113 - 3 xnf0
192.168.15.239 192.168.15.228 UHb 0 0 - 1 xnf0
부르마의 /etc/pf.conf:
dmz_if = "xnf0"
int_if = "xnf1"
icmp_types = "{ echoreq, unreach }"
table <aws_nets> const { 192.168.15.0/24 }
set block-policy return
set skip on lo
block log all
block in quick inet6 all
# Allow ping and path MTU discovery
pass in log inet proto icmp all icmp-type $icmp_types keep state
pass out log on $dmz_if inet proto { udp, icmp } all keep state
# Allow anything on the NAT interface
pass in log on $dmz_if inet from <aws_nets> to any
pass out log on $dmz_if inet from $dmz_if:network to any
# Allow anything on the internal interface
pass out log on $int_if inet from $int_if:network to any
# Nat
match out log on $dmz_if inet from $int_if:network to any \
nat-to ($dmz_if:0)
pass out log on $dmz_if from any to any
# Allow ssh
pass in log on $dmz_if inet proto tcp from $dmz_if:network to \
$dmz_if:0 port = ssh
pass out log on $dmz_if inet proto tcp from $dmz_if:network to \
$dmz_if:network port = ssh
# By default, do not permit remote connections to X11
block return in on ! lo0 proto tcp to port 6000:6010
vegeta의 /etc/pf.conf:
ext_if = "xnf0"
dmz_if = "xnf3"
icmp_types = "{ echoreq, unreach }"
table <aws_nets> const { 192.168.15.192/28, 192.168.15.208/28, \
192.168.15.224/28 }
set block-policy return
set skip on lo
block log all
block in quick inet6 all
# Allow ping and path MTU discovery
pass in log inet proto icmp all icmp-type $icmp_types keep state
pass out log on $ext_if inet proto { udp, icmp } all keep state
# Allow anything on the NAT interface
pass in log on $dmz_if inet from <aws_nets> to any
# Nat
match out log on $ext_if inet from $dmz_if:network to any \
nat-to ($ext_if:0)
pass out log on $ext_if from any to any
# Allow ssh
pass in log on $ext_if inet proto tcp from any to \
any port = ssh
pass in log on $dmz_if inet proto tcp from any to \
any port = ssh
pass out log on $dmz_if inet proto tcp from $dmz_if:network to \
$dmz_if:network port = ssh
# By default, do not permit remote connections to X11
block return in on ! lo0 proto tcp to port 6000:6010
답변1
글쎄요, 그것은 모두 당신이 패킷을 보고 있는 인터페이스에 따라 다릅니다. pf는 xnf0에서 실행되며 nat의 모든 패킷을 xnf3에서만 온 것처럼 처리합니다. vegeta의 xnf3에서 iftop 모니터를 실행하고 다시 테스트하여 무슨 일이 일어나는지 확인하십시오.
# pkg_add -v iftop
# iftop -i xnf3
또한 Bluma에서 경로를 확인하세요.
# netstat -rn -f inet
기본 게이트웨이가 192.168.15.238로 설정되어 있는지 확인하세요.