免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1700 | 回复: 9
打印 上一主题 下一主题

[网络管理] 一起来探讨这个iptables的问题(已解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-06 12:45 |只看该作者 |倒序浏览
在CU呆了有一段时间了,翻看大家的帖子,学到不少东西,但大多数都是针对双网卡单内网段的,现在碰到个难题,自己尝试了,却又解决不了,现放上来,大家一起来探讨。

在 Redhat Linux 9.0 上,
eth0 = 192.168.1.1(内网)
eth1 = 222.222.222.10(外网)
eth2 = 222.222.222.11(外网)
外网网关是 222.222.222.9

内网网段为 192.168.1.0/24  以及 10.10.0.0/16 ,10.10.0.0/16 通过另一路由器(192.168.1.254,该路由器的默认网关是192.168.1.2——电信ADSL)与 192.168.1.0/24 相联

有两台服务器: 192.168.1.5 , 192.168.1.6
要求如下:
1、外部访问 222.222.222.10 的 80 端口指向 192.168.1.5 的 80端口;
2、外部访问 222.222.222.11 的 80、8080 端口指向 192.168.1.6 的 80、8080端口;
3、内网 192.168.1.0/24 可使用 IP 222.222.222.10 访问外部网络;
4、192.168.1.0/24 与 10.10.0.0/16 可以互访,10.10.0.0/16 不可以通过 192.168.1.1 访问外部网络;

另外,发现使用以下配置,内网FTP至外网任何一台FTP服务器,登陆成功,但是不能列目录,换成硬件防火墙就正常……
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A FORWARD -m state -o eth1 --state NEW -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j ACCEPT

百思不得其解,可否帮写个IPTABLES的脚本以及路由设置方法,在此向大家学习。

[ 本帖最后由 雨猫 于 2006-12-7 16:56 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-12-06 14:27 |只看该作者
内网使用 FTP 连外网的问题已经解决,增加 modprobe ip_nat_ftp 即可,原来以为只有对外提供FTP服务才用增加FTP模块,原来对外连接FTP也需要的,没仔细研究

其他问题继续留着和大家探讨

论坛徽章:
0
3 [报告]
发表于 2006-12-06 17:28 |只看该作者
有意思,我也一直想试验端口映射,但是一直没成功……不明白为什么。

[ 本帖最后由 iamshiyu 于 2006-12-6 17:30 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-12-06 18:09 |只看该作者
这是我自己写的IPTABLES,跑起来好象有 222.222.222.11 访问不稳定的情况,是否跟  MASQUERADE 有关系?另外这个脚本,感觉很复杂,是不是有些没必要的可以删除的?

===================================================

# 启动IP转发功能
sysctl -w net.ipv4.conf.all.forwarding=1

# 装载FTP模块
modprobe ip_nat_ftp

#清除预定表filter中,所有规则链中的规则
iptables -F
#清除预定表filter中,使用者自定链中的规则
iptables -X

#清除预定表mangle中,所有规则链中的规则
iptables -F -t mangle
#清除预定表mangle中,使用者自定链中的规则
iptables -X -t mangle

#清除nat表中的规则
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat

###---------------------------------------------------###
#设定预设规则
###---------------------------------------------------###

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 对非内网数据包进行伪装
iptables -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
iptables -A POSTROUTING -s 10.10.0.0/16 -o eth1 -j MASQUERADE
iptables -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j MASQUERADE
iptables -A POSTROUTING -s 10.10.0.0/16 -o eth2 -j MASQUERADE
# 允许外网机的IP访问内网机,IP转换成网关IP
iptables -A POSTROUTING -p tcp -m tcp -d 192.168.1.5 --dport 80 -j SNAT  --to 192.168.1.1
iptables -A POSTROUTING -p tcp -m tcp -d 192.168.1.6 --dport 80 -j SNAT  --to 192.168.1.1
iptables -A POSTROUTING -p tcp -m tcp -d 192.168.1.6 --dport 8080 -j SNAT  --to 192.168.1.1
# 防止外网用内网ip欺骗
iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -i eth1 -j DROP
iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -i eth2 -j DROP
iptables -A POSTROUTING -t nat -s 10.10.0.0/16 -i eth1 -j DROP
iptables -A POSTROUTING -t nat -s 10.10.0.0/16 -i eth2 -j DROP
# 开放80端口WEB服务
iptables -A POSTROUTING -t nat -p tcp -m tcp -d 222.222.222.10 --dport 80 -j DNAT --to-destination 192.168.1.5:80
iptables -A POSTROUTING -t nat -p tcp -m tcp -d 222.222.222.11 --dport 80 -j DNAT --to-destination 192.168.1.6:80
iptables -A POSTROUTING -t nat -p tcp -m tcp -d 222.222.222.11 --dport 8080 -j DNAT --to-destination 192.168.1.6:8080

# 丢弃坏的TCP包
iptables -A FORWARD -p TCP -m state --state NEW -j DROP  ! --syn
# 阻止外部数据包使用 loopback 地址
iptables -A INPUT -s 127.0.0.1 -i eth1 -j DROP
iptables -A FORWARD -s 127.0.0.1 -i eth1 -j DROP
iptables -A INPUT -d 127.0.0.1 -i eth1 -j DROP
iptables -A FORWARD -d 127.0.0.1 -i eth1 -j DROP
iptables -A INPUT -s 127.0.0.1 -i eth2 -j DROP
iptables -A FORWARD -s 127.0.0.1 -i eth2 -j DROP
iptables -A INPUT -d 127.0.0.1 -i eth2 -j DROP
iptables -A FORWARD -d 127.0.0.1 -i eth2 -j DROP
# 防止互联网流入的数据包使用内网IP欺骗
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j DROP
iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j DROP
iptables -A FORWARD -s 192.168.1.0/24 -i eth2 -j DROP
iptables -A INPUT -s 192.168.1.0/24 -i eth2 -j DROP
iptables -A INPUT -s 10.10.0.0/16 -i eth1 -j DROP
iptables -A FORWARD -s 10.10.0.0/16 -i eth1 -j DROP
iptables -A INPUT -s 10.10.0.0/16 -i eth2 -j DROP
iptables -A FORWARD -s 10.10.0.0/16 -i eth2 -j DROP
# 阻塞 NetBios 数据包流出(如果内网有 windows 机器)。
iptables -A FORWARD -p tcp -o eth1 --sport 134:139 -j DROP
iptables -A FORWARD -p udp -o eth1 --sport 134:139 -j DROP
iptables -A OUTPUT -p tcp -o eth1 --sport 134:139 -j DROP
iptables -A OUTPUT -p udp -o eth1 --sport 134:139 -j DROP
iptables -A FORWARD -p tcp -o eth2 --sport 134:139 -j DROP
iptables -A FORWARD -p udp -o eth2 --sport 134:139 -j DROP
iptables -A OUTPUT -p tcp -o eth2 --sport 134:139 -j DROP
iptables -A OUTPUT -p udp -o eth2 --sport 134:139 -j DROP
# 允许本地 loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# 保持来自本机和内网数据包的连接状态
iptables -A FORWARD -m state -o eth1 --state NEW -j ACCEPT
iptables -A FORWARD -m state -o eth2 --state NEW -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# 对于不管来自哪里的ip碎片都进行控制,允许每秒通过100个碎片
iptables -A FORWARD -m limit -f --limit 100/s --limit-burst 100 -j ACCEPT
# icmp包通过的控制,防止icmp黑客攻击
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

# 允许来自内网的数据包
iptables -A INPUT -i eth0 -j ACCEPT

iptables -A FORWARD -p tcp -d 192.168.1.5 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.1.6 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.1.6 --dport 8080 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -s 192.168.1.6 -i eth0 -o eth2 -j ACCEPT

[ 本帖最后由 雨猫 于 2006-12-6 18:13 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2006-12-06 22:44 |只看该作者
# 开放80端口WEB服务
iptables -A POSTROUTING -t nat -p tcp -m tcp -d 222.222.222.10 --dport 80 -j DNAT --to-destination 192.168.1.5:80
iptables -A POSTROUTING -t nat -p tcp -m tcp -d 222.222.222.11 --dport 80 -j DNAT --to-destination 192.168.1.6:80
iptables -A POSTROUTING -t nat -p tcp -m tcp -d 222.222.222.11 --dport 8080 -j DNAT --to-destination 192.168.1.6:8080

能这么用吗?

论坛徽章:
0
6 [报告]
发表于 2006-12-06 22:45 |只看该作者
你应该把脚本简化简化再简化,没问题以后再慢慢添加高级控制策略
一股脑弄成这样,自己排错不好排,别人也不好帮你看

论坛徽章:
0
7 [报告]
发表于 2006-12-07 00:09 |只看该作者
谢谢斑竹的提醒,精简了一下,因为是直接编辑 redwall-firewall 的 iptables.save,上边自己加的不对,以这个为准。

这个是route的列表
Kernel IP routing table
Destination     Gateway               Genmask         Flags  Metric Ref    Use Iface
222.222.222.0   *                        255.255.255.0   U      0      0        0      eth1
222.222.222.0   *                        255.255.255.0   U      0      0        0      eth2
192.168.1.0       *                        255.255.255.0   U      0      0        0      eth0
10.10.0.0           192.168.1.254   255.255.0.0       UG    0      0        0      eth0
loopback            *                        255.0.0.0           U      0      0        0       lo
default               222.222.222.9   0.0.0.0               UG    0      0        0      eth1
default               222.222.222.9   0.0.0.0               UG    1      0        0      eth2


#启动的时候加载静态路由
route add -net 10.10.0.0/16 gw 192.168.1.254
# 启动IP转发功能
sysctl -w net.ipv4.conf.all.forwarding=1

# 装载FTP模块
modprobe ip_nat_ftp

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT


==================以下是 iptables.save 的内容==========

# 对非内网数据包进行伪装
-A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/24 -o eth2 -j MASQUERADE
# 允许外网机的IP访问内网机,IP转换成网关IP
-A POSTROUTING -p tcp -m tcp -d 192.168.1.5 --dport 80 -j SNAT  --to 192.168.1.1
-A POSTROUTING -p tcp -m tcp -d 192.168.1.6 --dport 80 -j SNAT  --to 192.168.1.1
-A POSTROUTING -p tcp -m tcp -d 192.168.1.6 --dport 8080 -j SNAT  --to 192.168.1.1
# 开放80端口WEB服务
-A PREROUTING -p tcp -m tcp -d 222.222.222.10 --dport 80 -j DNAT --to-destination 192.168.1.5:80
-A PREROUTING -p tcp -m tcp -d 222.222.222.11 --dport 80 -j DNAT --to-destination 192.168.1.6:80
-A PREROUTING -p tcp -m tcp -d 222.222.222.11 --dport 8080 -j DNAT --to-destination 192.168.1.6:8080

# 允许本地 loopback
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

# 保持来自本机和内网数据包的连接状态
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许来自内网的数据包
-A INPUT -i eth0 -j ACCEPT

-A FORWARD -p tcp -d 192.168.1.5 --dport 80 -j ACCEPT
-A FORWARD -p tcp -d 192.168.1.6 --dport 80 -j ACCEPT
-A FORWARD -p tcp -d 192.168.1.6 --dport 8080 -j ACCEPT
-A FORWARD -s 192.168.1.0/24 -i eth0 -o eth1 -j ACCEPT
-A FORWARD -s 192.168.1.6 -i eth0 -o eth2 -j ACCEPT

[ 本帖最后由 雨猫 于 2006-12-7 00:39 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-12-07 00:14 |只看该作者
你的这个能运行吗?我 5 楼已经针对问题提出来了你看一下

论坛徽章:
0
9 [报告]
发表于 2006-12-07 00:23 |只看该作者
原帖由 platinum 于 2006-12-7 00:14 发表
你的这个能运行吗?我 5 楼已经针对问题提出来了你看一下


抱歉,没注意看到,下午急着在下班后贴出来,用UE批量修改给修改错了,现在在7楼的配置中改回来,跟防火墙上的校对了一下,简化以后的就是这样了

论坛徽章:
0
10 [报告]
发表于 2006-12-07 16:54 |只看该作者
问题已经解决,具体配置和总结这两天补上,谢谢 platinum 百忙之中还来帮忙
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP