LinuxSir.cn,穿越时空的Linuxsir!

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

squid+iptables透明代理的问题!

[复制链接]
发表于 2005-2-21 21:54:37 | 显示全部楼层 |阅读模式
squid+iptables透明代理的问题!

eth0  内网网卡
eth1  外网
192.168.0.58  网关
192.168.0.140  内网cs服务器


/etc/sysconfig/iptables

# Firewall configuration written by redhat-config-securitylevel
# Manual customization of this file is not recommended.
*mangle
REROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -s 192.168.0.0/24 -i eth0 -p tcp -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth0 -p udp -j ACCEPT
-A INPUT -i eth0 -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j ACCEPT
-A FORWARD -o eth1 -d 192.168.0.140 -j ACCEPT
-A FORWARD -i eth1 -s 192.168.0.140 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

*nat
REROUTING ACCEPT [0:0]
OSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 218.16.xxx.xx -p tcp --dport 27015 -j DNAT --to 192.168.0.140
-A PREROUTING -d 218.16.xxx.xx -p udp --dport 27015 -j DNAT --to 192.168.0.140
-A POSTROUTING -d 192.168.0.140 -p udp --dport 27015 -j SNAT --to 218.16.xxx.xx
-A POSTROUTING -d 192.168.0.140 -p tcp --dport 27015 -j SNAT --to 218.16.xxx.xx
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to 3128
-A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE
COMMIT




/etc/squid/squid.conf
http_port 192.168.0.58:3128
#icp_port 0  #icp端口
hierarchy_stoplist cgi-bin ?
hierarchy_stoplist -i ^https:\\ ?
acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi
acl denyssl urlpath_regex -i ^https:\\
no_cache deny QUERY
no_cache deny denyssl
cache_mgr flying864@yahoo.com.cn
visible_hostname 192.168.0.58

#about cache
cache_dir ufs /var/spool/squid 10240 16 256
cache_mem 80 MB
cache_swap_low 90
cache_swap_high 100
maximum_object_size 4096 KB
maximum_object_size_in_memory 8 KB

#about DNS
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024
dns_nameservers 202.96.128.143 202.96.128.166

#about log
cache_access_log  /var/log/squid/access.log
cache_log  /var/log/squid/cache.log
cache_store_log   /var/log/squid/store.log

#about proxy
httpd_accel_host fly
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

acl all src 0.0.0.0/0.0.0.0
http_access allow all




这样设置后,客户端需在IE里设置代理服务192.168.0.58端口3128才能上网!不设置时不能上网!
 楼主| 发表于 2005-2-21 22:43:56 | 显示全部楼层
小弟想做透明代理,请各位成功的兄弟帮看看问题出在哪?
回复 支持 反对

使用道具 举报

发表于 2005-2-21 22:50:32 | 显示全部楼层
贴你的IPTABLES -L出来看看~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-22 00:09:43 | 显示全部楼层
Post by jd_chen
贴你的IPTABLES -L出来看看~~


我贴的是/etc/sysconfig/iptables里所有的内容了!我不明白IPTABLES -L,我以为iptables里就*filter,*nat,*mangle三个段,只要在下面添加相应的规则就可以了!

本人刚接触linux不久!还是个菜鸟!
回复 支持 反对

使用道具 举报

发表于 2005-2-22 08:34:21 | 显示全部楼层
Post by flying864
我贴的是/etc/sysconfig/iptables里所有的内容了!我不明白IPTABLES -L,我以为iptables里就*filter,*nat,*mangle三个段,只要在下面添加相应的规则就可以了!

本人刚接触linux不久!还是个菜鸟!

iptables 确实只有3个段。iptables -L 是看iptables 的执行结果,也就是起作用的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-22 21:51:22 | 显示全部楼层
iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  192.168.0.0/24       anywhere           
ACCEPT     udp  --  192.168.0.0/24       anywhere           
ACCEPT     tcp  --  192.168.0.0/24       anywhere           tcp dpt:ssh
ACCEPT     tcp  --  192.168.0.0/24       anywhere           tcp dpt:http
RH-Firewall-1-INPUT  all  --  anywhere             anywhere           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             192.168.0.140      
ACCEPT     all  --  192.168.0.140        anywhere           state ESTABLISHED
RH-Firewall-1-INPUT  all  --  anywhere             anywhere           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere           
ACCEPT     icmp --  anywhere             anywhere           icmp any
ACCEPT     ipv6-crypt--  anywhere             anywhere           
ACCEPT     ipv6-auth--  anywhere             anywhere           
ACCEPT     all  --  anywhere             anywhere           state RELATED,ESTABLISHED
REJECT     all  --  anywhere             anywhere           reject-with icmp-host-prohibited
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-22 22:30:43 | 显示全部楼层
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to 3128
转发后!客户端设置代理的时候把端口改成80也可以!可是就是不能透明!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-23 22:18:46 | 显示全部楼层
国际惯例!
只有自己顶了!
回复 支持 反对

使用道具 举报

发表于 2005-2-23 23:57:42 | 显示全部楼层
参考的文章很多!
http://www.gbunix.com/htmldata/2004_07/15/27/article_496_1.html

问题出在下面这一行了:
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to 3128
应该是:
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-24 08:02:29 | 显示全部楼层
修改后的iptables,客户端必须设置代理,但是不用添端口也可以。但是就是实现不了透明!


# Firewall configuration written by redhat-config-securitylevel
# Manual customization of this file is not recommended.
*mangle
REROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -s 192.168.0.0/24 -i eth0 -p tcp -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth0 -p udp -j ACCEPT
-A INPUT -i eth0 -s 192.168.0.0/24 -p tcp --dport 3128 -j ACCEPT
-A INPUT -i eth0 -s 192.168.0.0/24 -p tcp --dport 443 -j ACCEPT
-A INPUT -i eth0 -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j ACCEPT
-A FORWARD -o eth1 -d 192.168.0.140 -j ACCEPT
-A FORWARD -i eth1 -s 192.168.0.140 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

*nat
REROUTING ACCEPT [0:0]
OSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 218.16.xxx.xx
-A PREROUTING -s 192.168.0.0/24 -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -s 192.168.0.0/24 -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128
-A PREROUTING -d 218.16.xxx.xx -p tcp --dport 27015 -j DNAT --to 192.168.0.140
-A PREROUTING -d 218.16.xxx.xx -p udp --dport 27015 -j DNAT --to 192.168.0.140
回复 支持 反对

使用道具 举报

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

本版积分规则

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