방화벽 전달 포트가 연결을 거부함

방화벽 전달 포트가 연결을 거부함

Firewalld 포트 전달에 문제가 있습니다. 문제는 전달된 포트가 연결을 거부하거나 응답하지 않는다는 것입니다(포트 전달이 설정된 하이퍼바이저의 TCP 플래그 RSET?).

운영 체제: Oracle Linux 8.4, 커널 4.18

방화벽 구성:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp9s0
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 81/tcp 55565/udp
  protocols:
  forward: no
  masquerade: yes
  forward-ports:
        port=25:proto=tcp:toport=25:toaddr=192.168.1.3
        port=143:proto=tcp:toport=143:toaddr=192.168.1.3
        port=465:proto=tcp:toport=465:toaddr=192.168.1.3
        port=587:proto=tcp:toport=587:toaddr=192.168.1.3
        port=993:proto=tcp:toport=993:toaddr=192.168.1.3
        port=3389:proto=tcp:toport=3389:toaddr=192.168.1.4
        port=3389:proto=udp:toport=3389:toaddr=192.168.1.4
  source-ports:
  icmp-blocks:
  rich rules:
        rule family="ipv6" source address="fd00::0/121" masquerade

대상 VM의 전달된 포트가 열려 있고 해당 IPv4 주소가 정확합니다(192.168.1.3).

PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
110/tcp open  pop3
143/tcp open  imap
443/tcp open  https
465/tcp open  smtps
587/tcp open  submission
993/tcp open  imaps
995/tcp open  pop3s

포트 80 및 443은 Nginx(HTTP 로드 밸런서)를 사용하여 로드 밸런싱되며 전달이 제대로 작동합니다.

IPv4 및 IPv6 포트 전달을 활성화합니다.

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
# sysctl net.ipv6.conf.all.forwarding
net.ipv6.conf.all.forwarding = 1

여기서 무엇이 잘못되었을 수 있습니까?

답변1

귀하의 zone=public이 이상해 보입니다. Linux를 라우터로 사용하는 경우 zone=external을 인터넷에 연결하기 위한 인터페이스로 사용한 다음 웹 서버에 대한 인터페이스로 "internal" 또는 "dmz"를 사용해야 한다고 가정합니다. "외부"를 사용하면 NAT가 활성화됩니다(가장: 예). 이는 외부 영역에 대해서만 수행되어야 합니다.

관련 정보