iptables配置

  sre

启动iptables 防火墙
设置防火墙为路由模式,编辑/etc/sysctl.conf 内net.ipv4.ip_forward = 0 值改成1
(也可以修改/proc/sys/net/ipv4/ip_forward 的内容为1,但是重启之后失效)
更新系统内核参数sysctl -p
此时防火墙已经有路由的功能了

删除策略
iptables -F:清空所选链中的规则,如果没有指定链则清空指定表中所有链的规则
iptables -X:清除预设表filter 中使用者自定链中的规则
iptables -Z:清除预设表filter 中使用者自定链中的规则

设置预设策略
iptables -p forward drop
iptables -p output access
iptables -p input drop
设置默认策略为关闭filter 表的INPPUT 及FORWARD 链,开启OUTPUT 链,nat 表的三个
链PREROUTING、OUTPUT、POSTROUTING 全部开启。

配置 SNAT
iptables -t nat -APOSTROUTING -o eth1 -j SNAT –to 192.168.1.254 外网接口为固定 IP
iptables -t nat -APOSTROUTING -o eth1 -s 32.1.38.0/24 -jMASQUERADE ——用于外网
接口为动态 IP地址,如 ppoe接入方式。
解析:
iptables 是命令本身
-t 是执行表,iptables有两个表,一个是 filter:过滤的表
一个是 nat,就是 NAT表
然后-A,-A的意思就是添加一条链
这里添加的链是 POSTROUTING链,就是源 NAT
-o 是出去的公网的网卡设备,我们使用的是 eth1网卡
-s 是源地址,我们设置内网的 192.168.8.0/24网段
-j是动作,MASQUERADE 动态源地址转换(动态 IP的情况下使用)
如果我们使用的静态外网地址,就可以这样写

设置一下FORWARD 的rule,允许后端主机查询DNS 和浏览网页,规则如下:
这是一个基本的上网规则,它是一个跟踪状态的规则,主要
是因为我们去用目的为53 端口去查询DNS 记录的时候,服务器返回的信息并不是也是53
端口,它是1024—65535 直接的任意端口,所以使用跟踪状态会方便一些。
iptables -A FORWARD -p tcp –dport 80 -j ACCEPT
iptables -A FORWARD -p tcp –dport 53 -j ACCEPT
iptables -A FORWARD -p udp –dport 53 -j ACCEPT
iptables -A FORWARD -p tcp -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p udp -m state –state RELATED,ESTABLISHED -j ACCEPT

有时会进行网络测试,这时要允许echo-reply(报头代码为0)进入我们的防火墙
iptables -a INPUT -p icmp –icmp-type 0 -j accept
这时从防火墙可以ping 任意地址,但是其他主机是ping 不通防火墙,尤其是针
对外网,让外网用户不知道我们的存在,一般我们是直接拒绝,或者是丢弃icmp 报文代码
为8 的icmp 包,这样就不回应外部主机的ping 请求了。

因为后端主机属于内网,经常会用来测试和网关是否已经连通,所以加一条策略,
允许内部主机ping 网关(eth0 网卡),因为后端主机属于可信赖区域,所以,可以添加策
略允许所有数据从eth0 进入(INPUT),就开启关键的几个端口和协议,例如:22 端
口、icmp 等其他的拒绝掉。
iptables -a INPUT -p icmp –icmp-tyype 8 -i eth0 -j accept
添加这条策略后,后端主机就可以去ping 自己的网关了

如果需要接收邮件还需要开启如下的端口,-m multiport 匹配多个端口
iptables -AFORWARD -p tcp -m multiport –dport 25,110,143,993,995 -jACCEPT

MASQUERADE和 SNAT作用一样的,都是提供源地址转换的
操作,MASQUERADE是针对外部接口为动态 IP地址来设置滴,不需要使用–to-source
指定转换的 IP地址。如果网络采用的动态获取 IP地址的连接,比如 ADSL拨号、DHCP
连接等,那么建议使用 MASQUERAD
还有需要注意的一点就是,我们使用 ppoe和 DHCP接入互联网的时候不要在网络接口的
配置文件、network文件里写上网关,否则肯能会出现两个网关,容易出错。

DNAT
iptables -t nat -APREROUTING -i 网络接口 -p 协议 –dport 端口 -j DNAT –to IP地址:
端口
iptables -t nat -APREROUTING -i eth1 -p tcp –dport 80 -j DNAT –to 32.1.38.200:80
eth1 为防火墙公网接口,这个规则必须在PREROUTING 里的
如果要求与80 联机的封包转递到内网8080 这个port 的话,添加如下策略
iptables -t nat -APREROUTING -p tcp –dport 80 -j REDIRECT –to-ports 8080
例如:使用8080 这个port 来启动WWW ,但是别人都以port 80 来联机,所以,这样
可以使用上面的方式来将对方对我方防火墙的联机传递到内网的8080 端口WEB 服务器了。

保存iptables 配置
iptables-save
重定向规则到nat.ipt 文件
iptables-save > nat.ipt
恢复iptables 配置
iptables-restore < nat.ipt 服务或系统重启后依然生效 service iptables save icmp 协议中的ping ICMP类型:echo reply 响应应答——0 ping 其他主机的时候返回来的信息 echo request 响应请求——8 其他主机 ping本机的时候对其他主机的响应回 答,一般隐藏此类报文,公网主机不知道我们的存在。 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 共享ppp0

One Reply to “iptables配置”

  • 开放端口命令: /sbin/iptables -I INPUT -p tcp –dport 8080 -j ACCEPT
    保存:/etc/rc.d/init.d/iptables save
    重启服务:/etc/init.d/iptables restart
    查看端口是否开放:/sbin/iptables -L -n

LEAVE A COMMENT

Captcha Code