LinuxSir.cn,穿越时空的Linuxsir!

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

iptables高手请进!squid与iptables不相容!

[复制链接]
发表于 2004-2-9 18:21:06 | 显示全部楼层 |阅读模式
小弟的环境是redhat9+adsl+squid+iptables,初步实现了透明网关。想具体加强一下iptables。所以参照网上脚本,写出来firewall如下:
#!/bin/sh

# Enabling IP Forwarding......"
echo "Enabling IP Forwarding........"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr

# Enabling iptables rules
# Internet Configuration.
EXT_IF="eth0"
LAN_IF="eth1"
LAN_IP="192.168.0.1"
LAN_IP_RANGE="192.168.0.0/24"

# Localhost Configuration.
LO_IF="lo"
LO_IP="127.0.0.1"

# Module loading.
echo "modprobe modules"
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp

# Set policies
echo "Enabling iptables rules"
iptables -F

iptables -F -t nat

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

# Allow loopback access
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT

iptables -A INPUT -p ALL -i $LAN_IF -s $LAN_IP_RANGE -j ACCEPT
iptables -A INPUT -p ALL -i $LO_IF -s $LO_IP -j ACCEPT
iptables -A INPUT -p ALL -i $LO_IF -s $LAN_IP -j ACCEPT

iptables -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
iptables -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
iptables -A OUTPUT -p ALL -o $EXT_IF -j ACCEPT

iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $LAN_IF -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -s 192.168.0.0/24 -i eth1 -p tcp --dport 3128 -j ACCEPT


# allow UDP  
iptables -A FORWARD -p udp -d $LAN_IP_RANGE -i $EXT_IF -j ACCEPT

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
#以上两行就是实现透明网关的关键。
## iptables END

echo "Enabling Squid"
/usr/local/squid/sbin/squid

echo "Enabling ADSL"
adsl-start
但是现在的问题是udp访问正常,ping也正常。就是无法访问网页。如果去掉iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128这句,网页就能正常浏览。这样的话就无法使用Squid了。有没有高人能给指点一下。需要怎么样才能将3128的数据正常的传送!
发表于 2004-2-9 18:57:27 | 显示全部楼层
你SQUID配置成功了吗 先测试一下
发表于 2004-2-10 01:55:07 | 显示全部楼层
关注ing,我的squid成功了的.直接在ie里面填入代理服务器能够正常使用squid,但是加了iptalbles自动转到代理端口,结果ie显示错误,提示是squid给的,好像说的是网络地址无法访问.看squid的日志文件是访问了网站但是得不到任何数据.
 楼主| 发表于 2004-2-10 08:44:27 | 显示全部楼层
如果firewall中只有以下两行
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
网络访问正常,squid运行正常。因为squid的access.log文件在增长。

但是加上以后的脚本,访问就不正常了。必须去掉iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128。也就是说不能将www浏览服务转交给squid。分析原因,是无法DNS解析。

现在如何才能使squid正常工作。如何配置。最好有人能把脚本共享一下!
另外。由于限制很严,一加上这个脚本,xwindow就无法启动。
发表于 2004-2-10 13:13:33 | 显示全部楼层
是无法DNS解析么?那再加上一条chian呢?
iptables -A INPUT -i eth1 -p udp -m udp -dport 53 -j ACCEPT
申明:我本机就是一个dns服务器,所以我这样加的,老兄看看自己的dns再想想办法吧.
请问老兄是如何发现是dns无法解析的呢?我怎么也看不出来是dns无法解析啊!我直接输入ip地址还是不行的.我怀疑不是dns的原因.马上去试验.
 楼主| 发表于 2004-2-10 16:57:50 | 显示全部楼层
可惜我的服务器没有DNS功能。而且我的UDP服务一切正常。所以你的这条没太大作用。
我的表现如果我输入一个网址比如说www.sina.com.cn
但是IE状态栏里显示的是www.www.sina.com.cn.com,www.www.sina.com.cn.cn等等。
事实上网址是无误的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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