您的位置:首页 > 其它

iptables filter表案例、iptables nat表应用

2017-11-30 22:52 369 查看
七周四次课(11月30日)

10.15 iptables filter表案例

iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP

iptable -I是在最前面增加一条规则 -A在最后面增加一条规则 -D是删除规则 后面跟链的名字

-s 后面跟源IP -p指定协议(tcp、) –sport 源端口 -d 目标IP –dport目标端口 -j 跟行为(DORP、ACCEPT) –line-numbers 列出规则编号

iptables -nvL -D INPUT 2 根据编号删除规则

iptables -P INPUT DROP 指定链的默认策略

放行指定端口:

创建脚本:

vi /usr/local/sbin/iptables.sh
#! /bin/bash
ipt="/usr/sbin/iptables"
# 定义一个变量——iptables命令(定义变量时尽量使用绝对路径,避免环境变量的影响)
$ipt -F
# 清空原有规则
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
# 上面三行是定义其默认策略
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# -m是指定检测状态,--state指定数据包状态(配合-m使用),该命令行的目的是使数据处理(通信
)更顺畅
$ipt -A INPUT -s 192.168.8.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
# 上面三行命令是指定放行的包的类型


注意: 脚本中指定的IP如果和主机IP不同时不要在远程端口直接运行该脚本!

icmp示例

iptables -I INPUT -p icmp –icmp-type 8 -j DROP

执行该脚本中的规则:

sh /usr/local/sbin/iptables.sh

说明: 该规则的含义是:只允许本机访问外网,不允许外网访问本机!

10.16/10.17/10.18 iptables nat表应用



客户端                                             nat服务器                                  web服务器


eth0:192.168.200.156 eth0:192.168.200.158 eth0:192.168.100.254

网关:192.168.200.158 eth1:192.168.100.10



所有Ip都在一个交换机下面

iptables 配置如下:

#清除默认规则
iptables -F
iptables -X
iptables -Z

iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z

#默认操作
iptables  -P INPUT DROP
iptables  -P OUTPUT ACCEPT
iptables  -P FORWARD DROP

#INPUT基本规则
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP

#FORWARD基本规则
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state INVALID -j DROP

#放行所有通过lo的数据包
iptables -A INPUT -i lo -j ACCEPT

#icmp
iptables -A INPUT -p icmp --icmp-type any -s 192.168.200.0/24 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type any -s 192.168.100/24 -j ACCEPT

#sshd
iptables -A INPUT -s 192.168.200.0/24 -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.200.0/24 -i eth1 -p udp --dport 22 -j ACCEPT

#nginx or httpd
iptables -A INPUT -s 192.168.200.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 192.168.200.0/24 -i eth1 -p udp --dport 80 -j ACCEPT

#修改数据包的来源ip
iptables -t nat -A POSTROUTING  -s 192.168.200.0/24 -j SNAT --to-source 192.168.100.10

#放行的ip
iptables -A FORWARD -s 192.168.200.156 -j ACCEPT

service iptables save
service iptables restart

#iptables-save 查看规则比iptables -L更好读懂


分析:

1)客户端访问web,mangle表不考虑,首先通过PREROUTING链表,对于192.168.200.156发送的数据包来说,没有对PREROUTING链表的规则,则放行,经过路由判断,目的地址为

192.168.100.254,则通往B,此时会经过FORWARD链表,由下面iptables配置知,这个数据包将被放行,再经过POSTROUTING链表,可知,这个数据包的来源将被改为192.168.100.10,然后被发送出到web

2)web通过客户端发来的数据包,分析到这个数据包的来源为192.168.100.10,则web回应一个数据包给nat服务器,首先经过PREROUTING链表,web知道了192.168.100.10这个ip地址就能将数据包发送到客户端手中只需要 iptables -A FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT就行,具体原因是怎么将目的地址192.168.100.10改为客户端的ip地址的,估计是nat服务器上有端口映射等原因,不是很清楚
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: