我的 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
目标虚拟机上的转发端口已打开,并且其 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”作为连接到您的网络服务器的接口。使用“external”将启动NAT(伪装:是);应该只对外部区域执行此操作。