1、iptables命令格式
iptables [-t 表] -命令 匹配 操作 (大小写敏感)
动作选项
ACCEPT 接收数据包
DROP 丢弃数据包
REDIRECT 将数据包重新转向到本机或另一台主机的某一个端口,通常功能实现透明代理或对外开放内网的某些服务
SNAT 源地址转换
DNAT 目的地址转换
MASQUERADE IP伪装
LOG 日志功能
2、定义规则
①先拒绝所有的数据包,然后再允许需要的数据包
iptalbes -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
②查看nat表所有链的规则列表
iptables -t nat -L
③增加,插入,删除和替换规则
iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [--sport 源端口号] [-d 目的IP|目标子网] [--dport 目标端口号] [-j 动作]
参数:-A 增加
-I 插入
-D 删除
-R 替换
iptables基本命令
首先设置filter表预设规则
iptalbes -P INPUT/OUTPUT/FORWARD DROP/ACCEPT 设置INPUT表的默认规则是拒绝或接收
设置表下具体策略
iptables -A INPUT -p tcp --dport 22 -j ACCEPT 设置开放ssh端口
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT 设置只允许192.168.0.3通过ssh连接到服务器
iptables -A INPUT -p tcp -muliport --dport 80,8080,8443 -j ACCEPT 设置多个不连续端口
iptables -A INPUT -p tcp --dport 20:23 -j ACCEPT 设置多个连续端口
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT 设置接收icmp的echo-request请求数据
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 设置接收icmp的echo-reply回复数据
iptables -A INPUT -p udp --sport 53 -j ACCEPT 设置接收dns 注意是--sport
iptables -L -n 查看防火墙配置
iptables -L -n --line-number
service iptables save 保存配置到/etc/sysconfig/iptables文件中
/etc/rc.d/init.d/iptables save
iptables -F 清除预设表filter中的所有规则链的规则
iptables -X 清除预设表filter中的所有规则链的规则
使用中实际问题:
发现开放防火墙后,虽然开放了服务器上tomcat的对应端口,但是在启动tomcat时报错,显示the network adapter could not estabish 提示连接不上oracle数据库,但是该服务器上没有安装oracle数据库,tomcat需要连接到另一台服务器的oracle数据库,但是另一台服务器的防火墙未打开,经过不断尝试,添加
iptables -A INPUT -p tcp --sport 1521 -j ACCEPT 后tomcat 启动正常,可连接到oracle,原因是该服务器会作为客户端向oracle的1521端口发送情况,oracle会将请求的数据,从1521端口发回该服务器
同样的,连接mysql数据库需要配置
iptables -A INPUT -p tcp --sport 3306 -j ACCEPT
iptables配置文件路径 /etc/sysconfig/iptables