在 Linux 系统中,可以使用 firewall-cmd
(Firewalld)或 iptables
来配置防火墙规则,以允许从某一 IP 地址到另一 IP 地址的指定端口的流量。以下是具体的配置方案和示例:
1. 使用 firewall-cmd
(Firewalld)
Firewalld 是一个动态管理防火墙的工具,适用于现代的 Linux 发行版(如 CentOS 7、RHEL 7、Fedora 等)。
允许特定 IP 到目标 IP 的指定端口
假设你想允许 IP 地址 192.168.1.100
访问目标服务器 192.168.1.200
的 8080
端口(例如 Tomcat 服务)。
步骤:
-
临时规则(当前会话有效)
执行以下命令,添加允许规则:
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" destination address="192.168.1.200" port protocol="tcp" port="8080" accept'
参数说明:
--zone=public
:指定防火墙区域,通常为public
。--add-rich-rule
:添加富规则。family="ipv4"
:指定使用 IPv4。source address="192.168.1.100"
:源 IP 地址。destination address="192.168.1.200"
:目标 IP 地址。port protocol="tcp" port="8080"
:指定协议和端口。accept
:接受符合条件的流量。
-
查看规则
查看已添加的规则:
firewall-cmd --zone=public --list-rich-rules
-
永久规则(重启后生效)
如果需要规则在系统重启后仍然有效,添加
--permanent
参数:firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" destination address="192.168.1.200" port protocol="tcp" port="8080" accept'
然后重新加载防火墙配置:
firewall-cmd --reload
2. 使用 iptables
iptables
是传统的 Linux 防火墙工具,适用于大多数 Linux 发行版。
允许特定 IP 到目标 IP 的指定端口
同样,允许 IP 地址 192.168.1.100
访问目标服务器 192.168.1.200
的 8080
端口。
步骤:
-
添加规则
执行以下命令,添加允许规则:
iptables -A INPUT -p tcp -s 192.168.1.100 -d 192.168.1.200 --dport 8080 -j ACCEPT
参数说明:
-A INPUT
:将规则添加到 INPUT 链(入站流量)。-p tcp
:指定协议为 TCP。-s 192.168.1.100
:源 IP 地址。-d 192.168.1.200
:目标 IP 地址。--dport 8080
:目标端口。-j ACCEPT
:接受符合条件的流量。
-
查看规则
查看已添加的规则:
iptables -L -n --line-numbers
-
保存规则
根据不同的 Linux 发行版,保存规则的命令可能不同:
-
对于 Red Hat 系列(如 CentOS、RHEL):
service iptables save
-
对于 Debian 系列(如 Ubuntu):
安装
iptables-persistent
工具:apt-get install iptables-persistent
然后保存规则:
netfilter-persistent save
-
手动保存(通用方法):
将规则保存到文件:
iptables-save > /etc/iptables/rules.v4
确保在开机时加载规则,可以通过创建
/etc/network/if-pre-up.d/iptables
脚本并添加以下内容:#!/bin/sh iptables-restore < /etc/iptables/rules.v4
然后赋予脚本执行权限:
chmod +x /etc/network/if-pre-up.d/iptables
-
3. 其他注意事项
-
测试规则:在添加规则后,使用工具(如
telnet
或nc
)测试从源 IP 到目标 IP 的端口是否可以访问。telnet 192.168.1.200 8080
-
日志记录:如果规则没有生效,可以开启防火墙日志记录以排查问题。对于
iptables
,可以使用以下命令记录被丢弃的流量:iptables -A INPUT -p tcp -s 192.168.1.100 -d 192.168.1.200 --dport 8080 -j LOG --log-prefix "DROP:" --log-level 4
通过上述方法,可以使用 firewall-cmd
或 iptables
来配置防火墙规则,以允许特定 IP 地址到目标 IP 地址的指定端口的流量。