云计算百科
云计算领域专业知识百科平台

iptables防火墙命令全集合

目录

首先先介绍一下iptables的四表五链

1.安装配置tables

2.iptables命令

3.iptables使用案例

1.禁用端口

2.删除规则

3.限制来源IP地址

4.限制网段

5.限制192.168.100.7不能访问61的80端口

6.对源IP进行取反

7.修改默认的规则

8.多端口配置

9.禁ping

4.NAT实现共享上网

01.SNAT: 源地址转换,让内网只通过一台服务器出外网

02.DNAT:目标地址转换


iptables的四表五链

四表:

1)filter:过滤本机数据包 管理INPUT、FORWARD、OUTPUT三个链 2)nat:网络地址转换 管理PREROUTING、POSTROUTING、OUTPUT三个链 3)mangle 4)raw

五链:

PREROUTING:预路由,所有数据包进入路由前由此链负责 INPUT:进站,数据包目标是本机由此链负责 OUTPUT:出站,数据包从本机发送由此链负责 FORWORD:转发,数据包的目标地址是其它外部地址由此链负责 POSTROUTING:后路由,所有数据包离开本机时由此链负责

img

下面开始iptables的配置方式和命令

1.安装配置tables

1.停止自带的防火墙
[root@m01 ~]# systemctl stop firewalld
[root@m01 ~]# systemctl disable firewalld

2.安装tables
[root@m01 ~]# yum -y install iptables-services

3.加载对应的模块(临时)
[root@m01 ~]# systemctl stop firewalld
[root@m01 ~]# systemctl disable firewalld
[root@m01 ~]# modprobe ip_tables
[root@m01 ~]# modprobe iptable_filter
[root@m01 ~]# modprobe iptable_nat
[root@m01 ~]# modprobe ip_conntrack
[root@m01 ~]# modprobe ip_conntrack_ftp
[root@m01 ~]# modprobe ip_nat_ftp
[root@m01 ~]# modprobe ipt_state

4.永久生效
写入/etc/profile /etc/rc.local
cat >>/etc/rc.local<<EOF
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
EOF

5.启动,加入开机自启
[root@m01 ~]# systemctl start iptables
[root@m01 ~]# systemctl enable iptables

2.iptables命令

1.查看防火墙规则
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all — 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp — 0.0.0.0/0 0.0.0.0/0
ACCEPT all — 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

2.清空默认的规则
[root@m01 ~]# iptables -F
[root@m01 ~]# iptables -X
[root@m01 ~]# iptables -Z
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

3.保存配置
[root@m01 ~]# iptables-save
# Generated by iptables-save v1.4.21 on Fri Jul 18 23:54:41 2025
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1:124]
:POSTROUTING ACCEPT [1:124]
COMMIT
# Completed on Fri Jul 18 23:54:41 2025
# Generated by iptables-save v1.4.21 on Fri Jul 18 23:54:41 2025
*filter
:INPUT ACCEPT [58:3828]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [31:3220]
COMMIT
# Completed on Fri Jul 18 23:54:41 2025

4.规则恢复
1)重新读取/etc/sysconfig/iptables 配置文件中的策略
systemctl restart iptables
2)使用命令恢复
iptables-restore </etc/sysconfig/iptables

3.iptables使用案例
1.禁用端口

-I 在最上面插入规则
-A 在最下面追加规则

1.禁止访问61的22端口
[root@m01 ~]# iptables -I INPUT -p tcp –dport 22 -j DORP
这时会发现远程连接不上了

解决方法:
去服务器执行
[root@m01 ~]# iptables -I INPUT -s 192.168.100.1 -j ACCEPT
允许本机连接,按顺序优先级
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all — 192.168.100.1 0.0.0.0/0
DROP tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

2.删除规则

第一种方法:通过序号删除
[root@m01 ~]# iptables -nL –line
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all — 192.168.100.1 0.0.0.0/0
2 DROP tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

Chain FORWARD (policy ACCEPT)
num target prot opt source destination

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
[root@m01 ~]# iptables -D INPUT 2
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all — 192.168.100.1 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

第二种方法:将I或者A修改为D
[root@m01 ~]# iptables -D INPUT -s 192.168.100.1 -j ACCEPT
可以快速删除修改错误的规则

3.限制来源IP地址

拒绝192.168.100.7的ip访问我
[root@m01 ~]# iptables -I INPUT -s 192.168.100.7 -j DROP

4.限制网段

拒绝192.168.100.0/24网段访问我
[root@m01 ~]# iptables -I INPUT -s 172.16.1.0/24 -j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all — 172.16.1.0/24 0.0.0.0/0

5.限制192.168.100.7不能访问61的80端口

[root@m01 ~]# iptables -I INPUT -s 192.168.100.7 -p tcp –dport 80 -j DROP

6.对源IP进行取反

除了192.168.100.7,其他所有的IP地址都不能访问我的服务器
[root@m01 ~]# iptables -I INPUT ! -s 192.168.100.7 -j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all — !192.168.100.7 0.0.0.0/0

7.修改默认的规则

1.先允许自己可以访问
[root@m01 ~]# iptables -I INPUT -s 192.168.100.1 -j ACCEPT
2.修改默认规则为拒绝
[root@m01 ~]# iptables -P INPUT DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all — 192.168.100.1 0.0.0.0/0

8.多端口配置

允许访问80和443端口
[root@m01 ~]# iptables -I INPUT -p tcp -m multiport –dport 80,443 -j ACCEPT
[root@m01 ~]# iptables -nL
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443

9.禁ping

先修改默认规则为允许
[root@m01 ~]# iptables -P INPUT ACCEPT
禁止192.168.100.7的ip来ping我
[root@m01 ~]# iptables -I INPUT -p icmp –icmp-type 8 -s 192.168.100.7 -j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP icmp — 192.168.100.7 0.0.0.0/0 icmptype 8

或者
通过linux操作系统内核参数配置禁ping

设置为1为禁ping
[root@m01 ~]# echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
[root@m01 ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
1
设置为0开启ping
[root@m01 ~]# echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
[root@m01 ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0

4.NAT实现共享上网
01.SNAT: 源地址转换,让内网只通过一台服务器出外网

1.iptables设置SNAT
将来源IP是172.16.1.0网段的流量,全都转换成192.168.100.61去访问外网
[root@m01 ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT –to-source 192.168.100.61

2.配置内核转发(拥有路由器功能)
[root@m01 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

3.刷新配置
[root@m01 ~]# sysctl -p
net.ipv4.ip_forward = 1

4.内网服务器配置网关: 172.16.1.61和DNS
[root@web01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.7
PREFIX=24
GATEWAY=172.16.1.61
DNS1=223.5.5.5

5.重启网卡
[root@web01 ~]# systemctl restart network

使用ADSL拨号的网络:
注意事项: 公网ip不固定 使用 iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE

02.DNAT:目标地址转换

配置IP地址端口映射:
[root@m01 ~]# iptables -t nat -A PREROUTING -d 192.168.100.61 -p tcp –dport 9000 -j DNAT –to-destination 172.16.1.7:22

访问192.168.100.61的9000端口,就是访问172.16.1.7的22端口
[c:\\~]$ ssh 192.168.100.61 9000
Connecting to 192.168.100.61:9000…
Connection established.
[root@web01 ~]#

赞(0)
未经允许不得转载:网硕互联帮助中心 » iptables防火墙命令全集合
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!