LinuxSir.cn,穿越时空的Linuxsir!

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

linux下使用squid设置代理成功,但有些问题希望高手帮忙解决一下

[复制链接]
发表于 2002-11-20 19:51:17 | 显示全部楼层 |阅读模式
linux下使用squid设置代理成功,但有些问题希望高手帮忙解决一下

我下载了squid的2.5版本,然后安装设置完成
启动后客户机能通过3128端口代理上网,但现在还是不能实现透明代理
我的squid.conf文件配置如下:
http_port 3128
acl rule1 url_regex sex
acl rule2 url_regex game
http_access deny rule1
http_access deny rule2
http_access allow all

# 启用透明代理
http_accel_host virtual
http_accel_port 80
http_accel_with_proxy on
http_accel_uses_host_header on

网络配置为双网卡eth0为adsl固定ip网关和dns.ip均为电信提供的,eth1为局域网网卡,ip192.168.0.1
firewall文件内容为:
#!/bin/sh
echo "Enable IP Forwarding...."
echo "1">/proc/sys/net/ipv4/ip_forward
echo "Starting iptables rules..."
/sbin/modprobe iptable_filter
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
#Refresh all chains
/sbin/iptables -F -t nat
iptables -P INPUT DROP
iptables -P FORWARD DROP
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 eth0 -j SNAT --to a.b.c.d
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

为何不能实现nat透明代理??????????
 楼主| 发表于 2002-11-20 20:24:09 | 显示全部楼层
我输入以下命令后出现错误,这是什么意思呢??

[root@localhost root]# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24
-j MSQUERADE
iptables v1.2.6a: Couldn't load target `MSQUERADE':/lib/iptables/libipt_MSQUERADE.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
发表于 2002-11-20 20:31:24 | 显示全部楼层
应该是你的iptables还少一句转发规则
iptables -A FORWARD -i eth1 -s 192.168.0.0/24  -j ACCEPT
 楼主| 发表于 2002-11-20 21:29:21 | 显示全部楼层
还是不行,运行firewall后连自己都上不了网了~~~
发表于 2002-11-21 09:40:18 | 显示全部楼层
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -A POSTROUTING -o eth0 -j MASQUERADE -t nat

这样写试试看
 楼主| 发表于 2002-11-21 19:51:57 | 显示全部楼层
问题暂时用其他的软件解决,用squid+iptables只能慢慢研究了,现在我用BBIagent做完全nat代理了~管理功能上差点,但应用上没问题!

谢谢各位能回复我的问题,感谢!!


“用ntsysv看看chainps和iptables是不是同时启动了”

我用setup设置一下,把chains和ip6……都关了,只剩一个iptables还是不行~


因最近时间太紧张了,忙着28号的知识竞赛,还有由于我老在公司通宵,办公室主任找我说了好几次了~现在只好用别的软件先把上网的问题弄好,剩下的只能慢慢来了~………………
发表于 2002-12-19 15:36:34 | 显示全部楼层
#!/bin/sh
echo "Enable IP Forwarding...."
echo "1">/proc/sys/net/ipv4/ip_forward
echo "Starting iptables rules..."
/sbin/modprobe iptable_filter
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
#Refresh all chains
/sbin/iptables -F -t nat
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth0 -s 192.168.0.0/24 -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 eth0 -j SNAT --to a.b.c.d

另外 目标MASQUERADE 第二个字母A,不要漏写。
上面是我的一些看法,只希望对你有帮助。可能会有失误,尽请原谅。
发表于 2002-12-26 16:35:52 | 显示全部楼层
不知道你不用代理(squid)时能不能上网,我觉得你的INPUT语句不够。我现在使用下面的配置,没用代理可以正常上网:

echo "Enable IP Forwarding..."
echo "1">/proc/sys/net/ipv4/ip_forward
echo "Starting iptables rules..."
/sbin/modprobe iptable_filter
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat

iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat

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

iptables -A INPUT -i lo -j ACCEPT(*)
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -s 192.168.0.192/26 -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.192/26 -j MASQUERADE

其中(*)一句很重要,因为我的DNS装在本地,没有这个,DNS不能正常工作。另外,在DNS中最好加上“转发”功能。
发表于 2002-12-27 12:37:04 | 显示全部楼层
我的SQUID已安装调试好,最后的iptables是这样,运行很正常

echo "Enable IP Forwarding..."
echo 1 >/proc/sys/net/ipv4/ip_forward
echo "Starting iptables rules..."
/sbin/modprobe iptable_filter
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat

iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat

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

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 21 --syn -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 80 --syn -j ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A PREROUTING -i eth1 -s 192.168.0.192/26 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.192/26 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 21 -i eth0 -j DNAT --to 192.168.0.203
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 192.168.0.203
发表于 2003-2-11 09:03:33 | 显示全部楼层
修改/etc/sysctl.conf如下:

net.ipv4.ip_forward=1
kernel.sysrq=0
net.ipv4.conf.default.rp_filter=1
kernel.core_uses_pid=1


这样,在防火墙脚本中就可以不用
echo 1 >/proc/sys/net/ipv4/ip_forward
这句了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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