########################
###netfilter/iptables#########
########################
 
 
 
表---链---规则
 
 
-------------------
filer表 包过滤
nat表  地址转换
mangle
raw
-------------------
 
 
优先级
 
 
---------------------------
raw>mangle>nat>filter
---------------------------
 
 
链间匹配顺序:
 
 
-----------------------------------
入站数据:prerouting input
出站数据:output  postrouting
转发数据:prerouting forward postrouting
-----------------------------------
 
 
链内匹配顺序:
 
 
----------
自上而下
默认允许
----------
 
 
iptables命令的语法格式:
 
 
---------------------------------------------------
iptables 【-t 表名】 管理选项 [链名] [条件匹配] [-j 目标动作]
---------------------------------------------------
默认指定filter表
默认表内所有连
-----------------
 
 
 
例如:
 
 
iptables -t filter -L -n
 
------------------------------
-t 指定表格为filter
-L list
-n 数值 numeric
------------------------------
 
##########
##实验#######
##########
 
 
图:
-------------------------------------------------------------------
外网服务器------------防火墙--------------内网服务器
linux211.1.1.3---(.1.2)linux(.1.2)-------(192.168.1.3)linux
--------------------------------------------------------------------
 
 
实验环境搭配:
------------------------------------------------------------
vmware中3台linux。
 
----------
linux1作为iptables防火墙
 
设置两个网卡eth0(211.1.1.2)和eth1(192.168.1.2)
eth0连接真实机网卡vm0(211.1.1.100)
eth1连接真实机网卡vm1(192.168.1.2)
-----------
linux2作为外网服务器
 
设置网卡eth0(211.1.1.3)连接真实机网卡vm0
------------
linux3作为内网服务器
 
设置网卡eth0(192.168.1.3)连接真实机网卡vm1
---------------------------------------------------------------
 
设置:
 
 
 
 
启用iptables防火墙的路由转发功能
---------------------------------
修改/proc/sys/net/ipv4/ip_forward里面的文件,1为启用转发,0为禁用(重启网卡即无效)
 
 
 
或者
 
 
 
vi /etc/sysct1.conf
 
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
 
-----------------------------------
 
启用DNAT
 
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT -to-source 211.1.1.2
 
(-t 指定表格,-A append ,-s source,-o out-interface ,-j jump,其中211.1.1.2为网关)
 
----------------------------------
 
查看SNAT
 
iptables -t nat -L -n
 
-----------------------------------
 
DNAT
 
iptables -t nat -A PREROUTING -p tcp -d 211.1.1.2 --dport 80 -i eth0 -j DNAT --to-destination 192.168.1.3
 
------------------------------------
 
iptables链的删除
 
iptables -t nat -D POSTROUTING 2  //意思为删除第二条链
 
-------------------------------------
 
 
 
iptables filter  调试
 
 
iptables -t filter -P OUTPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -A OUTPUT -s 192.168.1.0/24 -o eth0 -p tcp --dport 22 -j ACCEPT
 
 
-----------------------------
iptables -t filter -F OUTPUT 清空output链 
-----------------------------
 
 
 
iptables -t filter -A INPUT -s 211.1.1.100 -i eth0 -p tcp --dport 22 -j ACCEPT
 
 
 
 
 
################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
 
 
 
 
 
 
 
 
 
 
iptables高级(shell编程)
 
 
 
例子脚本:
 
#!/bin/bash
 
#define all variance or parameter
 
WAN_INT="eth0"
WAN_INT_IP="211.1.1.2"
 
LAN_INT="eth1"
LAN_INT_IP="192.168.1.2"
ALLOW_ACCESS_CLIENT="192.168.1.0"
WAN_2003_SRV="211.1.1.3"
PORT="20,21,25,53,80,110,143,554,1755,7070"
IPT="/bin/iptables"
 
#############################################
 
start(){
echo ""
echo -e "Reset all chains to zero........            [done]"
 
#flush all rules at first
     $IPT -t filter -F
     $IPT -t nat -F
 
#default policy is drop
 
     $IPT -t filter -P  INPUT DROP
     $IPT -t filter -P  OUTPUT DROP
     $IPT -t filter -P  FORWARD DROP
 
#open post 22
     $IPT -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
     $IPT -t filter -A OUTPUT -p tcp --sport 22 -j ACCEPT
 
#SANT
     echo 1 > /proc/sys/net/ipv4/ip_forward
     $IPT -t nat -A POSTROUTING -s 192.168.1.0/24 -o $WAN_INT -j SNAT --to-source $WAN_INT_IP 
 
 
 
}
 
。。。。。。。。。。。。。。
 
 
 
 
 
 
iptables 状态检测功能启用
 
 
-m state --state
 
状态:NEW RELATED ESTABLISHED(已建立的连接) INVALID(失效的连接)
 
 
[root@test ~]# iptables -t filter -I FORWARD  1 -p tcp -m state --state 
 
ESTABLISHED -j ACCEPT
 
[root@test ~]# iptables -t filter -I FORWARD 2 -p tcp -m state --state 
 
INVALID -j DROP
 
 
新建链---提高过滤包的效率