LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 790|回复: 1

帮我看看这个iptables对不对,一些简单的过滤

[复制链接]
发表于 2006-8-29 13:23:28 | 显示全部楼层 |阅读模式
eth0 为外网的网卡
eth1 为内部的网卡


  1. #!/bin/bash

  2. echo "Start iptables .."
  3. #加载模块
  4. modprobe iptable_nat
  5. modprobe ip_conntrack
  6. modprobe ip_conntrack_ftp

  7. #打开转发
  8. echo 1 >/proc/sys/net/ipv4/ip_forward

  9. #清除表
  10. iptables -F INPUT
  11. iptables -F FORWARD
  12. iptables -F POSTROUTING -t nat
  13. iptables -t nat -F

  14. #默认规则为DROP(丢弃)
  15. iptables -P FORWARD ACCEPT
  16. iptables -P INPUT DROP
  17. iptables -P OUTPUT DROP

  18. #回环打开
  19. iptables -A INPUT -i lo -j ACCEPT
  20. iptables -A OUTPUT -o lo -j ACCEPT

  21. #############
  22. iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT


  23. #接收所有来自eth1的网络数据
  24. iptables -A INPUT -i eth1 -j ACCEPT

  25. #打开DNS端口
  26. iptables -A INPUT -i eth0 -p udp -sport 53 -j ACCEPT

  27. #所有外部的源端口为80的允许
  28. iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT

  29. #外面进来目标80端口到192.168.0.6:80(映射80,6060)
  30. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.6:80
  31. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6060 -j DNAT --to 192.168.0.6
  32. iptables -t nat -A PREROUTING -i eth0 -p udp --dport 6060 -j DNAT --to 192.168.0.6
  33. #^-^
  34. iptables -A FORWARD -s 192.168.0.254 -j ACCEPT
  35. iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.254 -j SNAT --to 192.168.0.10
复制代码

目的:
服务器可以和局域网内部其他计算机相互通信
映射了80.6060端口到192.168.0.6, web服务器在192.168.0.6上,6060端口好像是那个花生壳的,一起映射了.
所有外部访问到服务器的80的端口映射到了192.168.0.6这台服务器上来
192.168.0.254允许上网, ^-^ ,是我的电脑

高手帮忙看看有没有错 .. 呵呵 ~
发表于 2006-8-30 00:45:50 | 显示全部楼层
有几个错误。
首先
iptables -P OUTPUT DROP
iptables -A OUTPUT -o lo -j ACCEPT
这种情况下,本机并无法发送数据包到任何地方,除了loopback。也就是说这台服务器无法和其他任何服务器进行通信。
同样原因
#接收所有来自eth1的网络数据
iptables -A INPUT -i eth1 -j ACCEPT

#打开DNS端口
iptables -A INPUT -i eth0 -p udp -sport 53 -j ACCEPT

#所有外部的源端口为80的允许
iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
就没什么意义了。
iptables -A FORWARD -s 192.168.0.254 -j ACCEPT
这句并无法限制其他用户IP向外访问,我不清楚你说的“192.168.0.254允许上网, ^-^ ,是我的电脑”是不是限制其他用户的意思。换句话说,如果所有的机器都允许通过这台服务器上网的话,那么
iptables -A FORWARD -s 192.168.0.254 -j ACCEPT
没有必要。
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.254 -j SNAT --to 192.168.0.10
这个,如果你是想让你的IP映射到外网的192.168.0.10的话,就写错了。应该是“iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.254 -j SNAT --to 192.168.0.10”。同时,你的服务器要作相应的路由配置。

又因为
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.254 -j SNAT --to 192.168.0.10
,所以,除你自己的机器外,其他计算机连接到外网时,并不会进行SNAT操作,而是以原始IP进行通信。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表