7.10. 使用 firewalld 配置 NAT
使用 firewalld
,您可以配置以下网络地址转换(NAT)类型:
- 伪装
- 目标 NAT(DNAT)
- 重定向
7.10.1. 网络地址转换类型 复制链接链接已复制到粘贴板!
这些是不同的网络地址转换(NAT)类型:
- 伪装
使用以上 NAT 类型之一更改数据包的源 IP 地址。例如,互联网服务提供商(ISP)不会路由私有 IP 范围,如
10.0.0.0/8
。如果您在网络中使用私有 IP 范围,用户应该能够访问互联网上的服务器,请将来自这些范围的数据包的源 IP 地址映射为公共 IP 地址。伪装自动使用传出接口的 IP 地址。因此,如果传出接口使用了动态 IP 地址,则使用伪装。
- 目标 NAT(DNAT)
- 使用此 NAT 类型重写传入数据包的目标地址和端口。例如,如果您的 Web 服务器使用来自私有 IP 范围的 IP 地址,因此无法直接从互联网访问,您可以在路由器上设置 DNAT 规则,来将传入的流量重定向到此服务器。
- 重定向
- 这个类型是 DNAT 的一种特殊情况,其将数据包重定向到本地计算机上的不同端口。例如,如果服务运行在与其标准端口不同的端口上,您可以将传入的流量从标准端口重定向到此特定端口。
7.10.2. 配置 IP 地址伪装 复制链接链接已复制到粘贴板!
您可以在系统上启用 IP 伪装。在访问互联网时,IP 伪装会隐藏网关后面的单个机器。
流程
要检查是否启用了 IP 伪装(例如,对于
external
区),以root
用户身份输入以下命令:firewall-cmd --zone=external --query-masquerade
# firewall-cmd --zone=external --query-masquerade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果已启用,命令将会打印
yes
,且退出状态为0
。否则,将打印no
,且退出状态为1
。如果省略了zone
,则将使用默认区。要启用 IP 伪装,请以
root
用户身份输入以下命令:firewall-cmd --zone=external --add-masquerade
# firewall-cmd --zone=external --add-masquerade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
要使此设置持久,请将
--permanent
选项传给命令。 要禁用 IP 伪装,请以
root
身份输入以下命令:firewall-cmd --zone=external --remove-masquerade
# firewall-cmd --zone=external --remove-masquerade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使此设置永久生效,请将
--permanent
选项传给命令。
7.10.3. 使用 DNAT 转发传入的 HTTP 流量 复制链接链接已复制到粘贴板!
您可以使用目标网络地址转换(DNAT)将传入的流量从一个目标地址和端口定向到另一个目标地址和端口。通常,这对于将来自外部网络接口的传入请求重定向到特定的内部服务器或服务非常有用。
前提条件
-
firewalld
服务正在运行。
流程
转发传入的 HTTP 流量:
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=198.51.100.10:toport=8080 --permanent
# firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=198.51.100.10:toport=8080 --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 之前的命令使用以下设置定义 DNAT 规则:
-
--zone=public
- 您为其配置 DNAT 规则的防火墙区域。您可以将其调整到您需要的任何区域。 -
--add-forward-port
- 指示您正在添加端口转发规则的选项。 -
port=80
- 外部目标端口。 -
proto=tcp
- 表示您转发 TCP 流量的协议。 -
toaddr=198.51.100.10
- 目标 IP 地址。 -
toport=8080
- 内部服务器的目标端口。 -
--permanent
- 使 DNAT 规则在重启后保持不变的选项。
-
重新载入防火墙配置以应用更改:
firewall-cmd --reload
# firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证您使用的用于防火墙区域的 DNAT 规则:
firewall-cmd --list-forward-ports --zone=public
# firewall-cmd --list-forward-ports --zone=public port=80:proto=tcp:toport=8080:toaddr=198.51.100.10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,查看相应的 XML 配置文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.10.4. 将来自非标准端口的流量重定向,以使 Web 服务在标准端口上可访问 复制链接链接已复制到粘贴板!
您可以使用重定向机制使在非标准端口上内部运行的 Web 服务可访问,而无需用户在 URL 中指定端口。因此,URL 更简单,并提供更好的浏览体验,而非标准端口仍在内部或用于特定的要求。
前提条件
-
firewalld
服务正在运行。
流程
创建 NAT 重定向规则:
firewall-cmd --zone=public --add-forward-port=port=<standard_port>:proto=tcp:toport=<non_standard_port> --permanent
# firewall-cmd --zone=public --add-forward-port=port=<standard_port>:proto=tcp:toport=<non_standard_port> --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 之前的命令使用以下设置定义 NAT 重定向规则:
-
--zone=public
- 您为其配置规则的防火墙区域。您可以将其调整到您需要的任何区域。 -
--add-forward-port=port=<non_standard_port>
- 指示您正在使用最初接收传入流量的源端口添加端口转发(重定向)规则。 -
proto=tcp
- 表示您重定向 TCP 流量的协议。 -
toport=<standard_port>
- 目标端口,在源端口上收到传入流量后,应将其重定向到的端口。 -
--permanent
- 使规则在重启后保持不变的选项。
-
重新载入防火墙配置以应用更改:
firewall-cmd --reload
# firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证您使用的防火墙区域的重定向规则:
firewall-cmd --list-forward-ports
# firewall-cmd --list-forward-ports port=8080:proto=tcp:toport=80:toaddr=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,查看相应的 XML 配置文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow