linux命令--防火墙--iptables

iptables 是一个在 Linux 系统上用于配置 IPv4 数据包过滤和网络地址转换的工具。它允许你设置规则来控制数据包的流向、转发和处理。

1、主要参数的说明

  • 表(Table):
-t, --table table_name:指定要操作的表,常见的表有 filter, nat, mangle, raw, security。默认为 filter 表。
  • 链(Chain):
-A, --append chain rule-specification:在指定链末尾添加规则。
-D, --delete chain rule-specification:删除指定链中的规则。
-I, --insert chain [rulenum] rule-specification:在指定位置插入规则。
-R, --replace chain rulenum rule-specification:替换指定位置的规则。
-N, --new-chain chain:创建新的用户自定义链。
-X, --delete-chain [chain]:删除指定的用户自定义链。
-F, --flush [chain]:清除指定链中的所有规则。
  • 规则规范(Rule Specification):
-s, --source address[/mask]:指定来源 IP 地址或网络。
-d, --destination address[/mask]:指定目标 IP 地址或网络。
-p, --protocol protocol:指定协议,如 tcp, udp, icmp 等。
-i, --in-interface name:指定进入接口。
-o, --out-interface name:指定输出接口。
-j, --jump target:指定动作目标,如 ACCEPT, DROP, REJECT, SNAT, DNAT 等。
-m, --match match:指定匹配模块,如 state, tcp, udp, mac 等。
-g, --goto chain:跳转到指定链。
  • 其他选项:
-v, --verbose:显示详细信息。
-n, --numeric:以数字格式显示 IP 地址和端口号。
-c, --set-counters PKTS BYTES:设置计数器的值。
-R, --rename-chain old-chain new-chain:重命名用户自定义链。
-Z, --zero:重置数据包和字节的计数器。
--line-numbers:显示规则的行号。
-L, --list [chain]:列出指定链或所有链的规则。
-S, --list-rules [chain]:以规则格式显示指定链或所有链的规则。

2、常用的命令及其功能:

  • 显示规则(List Rules):
iptables -L:显示当前所有的 iptables 规则。
iptables -L -v:显示详细的规则,包括数据包计数。
iptables -L -n:显示数字格式的 IP 和端口号,而不是尝试解析。
  • 清除规则(Flush Rules):
iptables -F:清除所有的规则。
iptables -F INPUT:清除 INPUT 链中的所有规则。
  • 默认策略(Default Policies):
iptables -P INPUT ACCEPT:设置 INPUT 链的默认策略为接受。
iptables -P OUTPUT ACCEPT:设置 OUTPUT 链的默认策略为接受。
iptables -P FORWARD ACCEPT:设置 FORWARD 链的默认策略为接受。
  • 添加规则(Add Rules):
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT:允许来自 192.168.1.0/24 网段的 TCP 端口 22 的流量进入。
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j ACCEPT:允许通过 eth0 接口进入的 ICMP 回显请求。
iptables -A INPUT -j DROP:拒绝所有输入流量。
  • 删除规则(Delete Rules):
iptables -D INPUT 5:删除 INPUT 链中编号为 5 的规则。
iptables -D INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT:删除允许指定 IP 地址范围和端口的规则。
  • 保存和加载规则(Save and Restore Rules):
iptables-save > filename:保存当前的 iptables 规则到文件中。
iptables-restore < filename:从文件中加载 iptables 规则。
  • 其他操作:
iptables -N chainname:创建一个新的用户自定义链。
iptables -X chainname:删除一个用户自定义链。
iptables -Z:重置数据包和字节的计数器。
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT:允许通过防火墙从 eth0 到 eth1 的转发流量。
  • 动作包括:
accept:接收数据包。
DROP:丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。
LOG:日志记录。

3. 示例

  • 开放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机) iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行 iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问 
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口 
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口 
iptables -A INPUT -p tcp --dport 21 -j DROP #禁止ftp服务的21端口 
iptables -A INPUT -p tcp --dport 20 -j DROP #禁止FTP服务的20端口 
iptables -A INPUT -j reject #禁止其他未允许的规则访问 
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
  • 屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令 
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令 
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令 
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令
  • 端口转发
iptables -t nat -A PREROUTING -i eth0 -d 1.2.3.4 -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.200:22

#内网主机192.168.1.200的TCP端口22(SSH)映射到公网服务器1.2.3.4的TCP端口2222

-t nat:指定操作的表为 nat 表,用于网络地址转换。
-A PREROUTING:在数据包进入路由之前的 PREROUTING 链上执行。
-i eth0:指定数据包进入的网络接口。
-p tcp:指定数据包的协议为 TCP。
--dport 8080:指定目标端口为 8080。
-j DNAT --to-destination 192.168.1.100:80:使用 DNAT 动作将目标地址和端口修改为 192.168.1.100 的 TCP 端口 80。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值