방화벽 내부 영역이 거부됨

방화벽 내부 영역이 거부됨

아래와 같이 ubuntu/jammy64에서 간단한 방화벽 설정을 시도하고 있습니다.

Source (K1) ------ (fw int) | Firewall (FW1) | (fw ext) ------ Destination (K2)

┌──(vagrant㉿k1)-[~]
└─$ ip -4 a show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 172.16.10.51/24 brd 172.16.10.255 scope global eth1
       valid_lft forever preferred_lft forever
┌──(vagrant㉿k1)-[~]
└─$ ip r
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
172.16.10.0/24 dev eth1 proto kernel scope link src 172.16.10.51
172.16.20.0/24 via 172.16.10.10 dev eth1
----------

vagrant@firewall:~$ ip -4 a show enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 172.16.10.10/24 brd 172.16.10.255 scope global enp0s8
       valid_lft forever preferred_lft forever
vagrant@firewall:~$ ip -4 a show enp0s9
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 172.16.20.10/24 brd 172.16.20.255 scope global enp0s9
       valid_lft forever preferred_lft forever

vagrant@firewall:~$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
----------
┌──(vagrant㉿k2)-[~]
└─$  ip -4 a show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 172.16.20.51/24 brd 172.16.20.255 scope global eth1
       valid_lft forever preferred_lft forever
┌──(vagrant㉿k2)-[~]
└─$ ip r
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
172.16.10.0/24 via 172.16.20.10 dev eth1
172.16.20.0/24 dev eth1 proto kernel scope link src 172.16.20.51

영역에 인터페이스와 소스 주소를 추가하는 다양한 조합을 시도했으며 Internal트래픽을 허용하는 풍부한 규칙을 사용해도 k1이 k2에 연결할 수 없고 디버그 로그에 거부 메시지가 표시됩니다.

vagrant@firewall:~$ sudo firewall-cmd --list-all  --zone=internal
internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s8
  sources: 172.16.10.51/32
  services: ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
    rule protocol value="icmp" accept
    rule family="ipv4" source address="172.16.10.0/24" port port="5201" protocol="tcp" log prefix="iperf" level="debug" accept
Jun 30 02:18:13 firewall kernel: "filter_FWD_internal_REJECT: "IN=enp0s8 OUT=enp0s9 MAC=08:00:27:d0:db:54:08:00:27:35:72:b5:08:00 SRC=172.16.10.51 DST=172.16.20.51 LEN=60 TOS=0x10 PREC=0x00 TTL=63 ID=2173 DF PROTO=TCP SPT=43642 DPT=5201 WINDOW=64240 RES=0x00 SYN URGP=0

두 인터페이스를 모두 내부 영역에 추가하면 연결이 제대로 작동하지만 인터페이스 중 하나가 해당 영역에 속하지 않으면 연결이 작동하지 않습니다.

다음에 볼 위치에 대한 조언을 공유할 수 있는 사람이 있나요?

감사해요.

답변1

이 질문과 내 질문을 바탕으로 github 이슈를 만들 때 전략 개체를 만들라는 지시를 받았습니다.

관련 블로그 게시물은 여기: https://firewalld.org/2020/09/policy-objects-introduction

정책 생성 지침에 따라 문제가 해결되었습니다. 이게 도움이 되길 바란다.

관련 정보