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가 활성화됩니다(가장: 예). 이는 외부 영역에 대해서만 수행되어야 합니다.