iptables学习01


iptables学习01
 
1.开启路由转发功能
 
临时开启
 
[plain] 
echo 1 > /proc/sys/net/ipv4/ip_forward  
默认ip_forward值为零, 不允许转发,改为1就可以转发了。修改过后就马上生效,即内核已经打开ip转发功能。
 
永久开启
 
[plain] 
sudo vim /etc/sysctl.conf  #永久开启路由转发功能  
net.ipv4.ip_forward=1  
 
 
sudo sysctl -p
 
sudo /etc/init.d/procpsrestart  #重启procps服务
 
(# sysctl –p)
 
iptables [-t 表名] 操作符 [规则链名] [规则]
 
对链的操作就那么几种,
 
-I 插入 
 
-A 追加 
 
-R 替换 
 
-D 删除
 
 -L 列表显示
 
-F 清除链中的所有规则
 
-P 设置链的默认动作ACCEPT REJECT DROP
 
-Z 计数器清零
 
-N 定义一个新的规则链
 
-X 删除定义的规则链
 
-I 将会把规则放在第一行,-A将会放在最后一行
 
 
 
针对规则的操作:
 
-A 追加
 
-I 插入
 
-D 删除
 
 
 
例子
 
[plain] 
iptables -t filter -A FORWARD -s 10.1.1.11 -d 202.1.1.1 -j ACCEPT   
上面的命令意思为:追加一个规则至filter表中的FORWARD链尾,允许(-j ACCEPT)源地址为10.1.1.11目的地址为202.1.1.1的数据包通过。其中-t后面跟的是表名,在-A后面跟Chain名,后面的小写的 -s为源地址,-d为目的地址,-j为处理方向。
 
在iptables中,默认的表名就是filter,所以这里可以省略-t filter直接写成:
 
[plain] 
iptables -A FORWARD -s 10.1.1.11 -d 202.1.1.1 -j ACCEPT  
 
 
-s 匹配源地址
-d 匹配目的地址
-i 入接口匹配
-o 出接口匹配
--sport 源端口匹配
--dport 目的端口匹配
- j 跳转,也就是包的方向
 
其中还有一个!参数,使用!就是取反的意思。
 
-s这个参数呢就是指定源地址的,如果使用这个参数也就是告诉netfilter,对于符合这样一个源地址的包怎么去处理,可以指定某一个单播ip地址,也可以指定一个网络,如果单个的ip地址其实隐含了一个32位的子网掩码,比如-s 10.1.1.11 其实就是-s 10.1.1.11/32 同样我们可以指定不同的掩码用以实现源网络地址的规则,比如一个C类地址我们可以用-s 10.1.1.0/24来指定。
 
-d参数与-s格式一样。 
 
-i参数是指定入接口的网络接口,比如我仅仅允许从eth3接口过来的包通过FORWARD链,就可以这样指定 iptables -A FORWARD -i eth3 -j ACCEPT 
 
-o是出接口,与上同
 
 iptables -A INPUT -i lo -j ACCEPT
 

相关内容

    暂无相关文章