返回首页
当前位置: 主页 > 操作系统 > Linux教程 >

Linux下IpTables的配置基础教程

时间:2015-06-05 22:24来源:电脑教程学习网 www.etwiki.cn 编辑:admin

1、 指定表
  
  filter为包过滤防火墙默认表,nat表,mangle表
  
  2、 指定操作命令
  
  添加、删除、更新
  
  3、 指定链
  
  操作包过滤防火墙的input,output,forward。也可能操作自己定义的。
  
  4、 指定规则匹配器
  
  各种规则匹配。如IP、端口、包类型
  
  5、 指定目标动作
  
  ACCEPT表示通过 DROP表示被丢弃 REJECT表示拒绝包
  
  LOG表示包的有关信息被记录日志 TOS改写包的TOS值
  
  用法:<严格区分大小写>
  
  iptables [-t table] cmd [chain][rule-matcher][-j target]
  
  cmd:
  
  -A 在所选链的尾添加一条或多条规则
  
  -D 删除
  
  -R 替换
  
  -I 插入
  
  -L 列出所有规则
  
  -F 清除
  
  -N 创建
  
  -X 删除指定的用户定义链
  
  -P 为永久链指定默认规则
  
  -C 检查给定的包是否与指定链的规则相匹配
  
  -Z 将指定链中所有规则的包字节记数器清零
  
  -h 显示帮助信息
  
  //例子
  
  # touch /etc/rc.d/filter-firewall
  
  //
  
  IPT=/sbin/iptables
  
  WWWSERVER=192.168.168.119
  
  FTPSERVER=192.168.168.119
  
  IPRANGE=192.168.168.0/24
  
  $IPT -F
  
  $IPT -P FORWARD DROP
  
  $IPT -A FORWARD -p tcp -d $WWWSERVER --dport www -i eth0 -j ACCEPT
  
  $IPT -A FORWARD -p tcp -d $FTPSERVER --dport ftp -i eth0 -j ACCEPT
  
  $IPT -A INPUT -s 192.168.168.81 -i eth0 -j DROP
------------------------
  案例:
  前几天遇到一个小问题:
  一个小的网络,拥有一个电信公网IP。用LINUX做NAT后所有用户都走这个IP出去。内部有一些服务器要向外公布,如:80,在NAT上做SNAT(让大家都走这里上外网):
  iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 222.111.33.88
  然后给要公布的服务做DNAT(外面的客户可以通过公网IP访问服务器):
  iptables -t nat -A PREROUTING -d 222.111.33.88 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.250:80
  这样两步之后,应该内部用户能上外网了,外面的用户也能访问到我们内部的服务器。
  **注:要打开转发,和清空以前的规则。******
  echo 1 >/proc/sys/net/ipv4/ip_forward
  iptables -F
  iptables -X
  iptables -t nat -F
  iptables -t nat -X
********************************

  但是现在出现一个问题,就是NAT后面(LAN)的用户不通直接通过WAN IP:222.111.33.88 来访问内部服务器。客户觉得只记一个IP(222.111.33.88 )方便点,而且他们也不想买域名,觉得没撒意思。他只想让大家记得这个IP。随时随地(在内网和外网)都可以访问。

  现在我们来看看为什么在内网无法通过WAN IP来访问服务器,我们看看数据包是怎么走的:
  假设内网访问的用户IP是:192.168.1.123 服务器IP是:192.168.1.250,那整个过程是这样的:
  192.168.1.123通过XXX端口访问222.111.33.88的80端口,源IP端口:192.168.1.123:XXX 目标IP端口:222.111.33.88:80
  NAT在接到数据包后,发现这个请求是向内部的(DNAT),直接将数据包直接发给192.168.1.250。
  192.168.1.250收到来自192.168.1.123的包后。再回应给192.168.1.123,192.168.1.123会收到一个类似:192.168.1.250:80 --->192.168.1.123XXX的回应。
  但192.168.1.123请求的是:222.111.33.88:80,所以不接收192.168.1.250:80 的回应。数据传输失败。所以内部用户无法直接通过WAN IP来访问。
  通过上面的过程我们发现问题主要出在内网请求到网关后,进入第一个链PREROUTING就是DNAT(端口映射)不会经过SNAT做源地址转换,因为不是从外网网卡出去的。所以要想让数据包正确回来,就得在PREROUTING后做一次SNAT。
  iptables -t nat -I POSTROUTING -s 192.168.1.0/255.255.255.0 -p tcp -d 192.168.1.250 --dport 80 -j SNAT --to 192.168.1.1
  OK,问题解决了。
  ***如果是FORWARD DROP了的话,记得打开192.168.1.250:80
  iptables -A FORWARD -p tcp -d 192.168.1.250 --dport 80 -j ACCEPT

  如果要用FTP服务,记得要加载相应的FTP模块:
  modprobe ip_conntrack_ftp
  modprobe ip_nat_ftp
  还得注意主、被动模式

--------------------------
  另一篇:
  1、iptables介绍

  iptables是复杂的,它集成到linux内核中。用户通过iptables,可以对进出你的计算机的数据包进行过滤。通过iptables命令设置你的规则,来把守你的计算机网络──哪些数据允许通过,哪些不能通过,哪些通过的数据进行记录(log)。接下来,我将告诉你如何设置自己的规则,从现在就开始吧。

  2、初始化工作

  在shell提示符 # 下打入

  iptables -F

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):Android 操作系统 Ubuntu Linux Unix fedora debian
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐内容