共计 2917 个字符,预计需要花费 8 分钟才能阅读完成。
如何理解 Suse 内核透明代理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
随着 Suse 受到广大用户更多的靑眯,它的问题也随之增多,怎样才能更好的应用 Suse 呢?以后我们会逐一阐述,今天我们要讲的配置透明代理的问题。是先解释为什么要配置透明代理。
其实只配置 squid 就可以实现代理功能,但是对于客户端,就必须在浏览器中设置 proxy server,对于其他的工具,比如 FlashGet, CuteFTP 等等,也必须一一设置,这一点非常麻烦。但是如果设置了透明代理,那么在客户端只需要在网络配置中设置一个网关就可以了,其他的任何程序都不用另行设置。这是设置透明代理 *** 的诱惑,当然这只是对我而言,其实 iptables 有更强大的防火墙功能,这才是它 *** 的用处。但是,此次配置不涉及防火墙,如果有兴趣的请看上贴的 iptables howto。
1。假设我们的 linux 内已经将防火墙支持选项编译进去,这一点可以进入 kernel source 目录,用 make menuconfig 确认。
2。安装 squid,一般对于各个 Linux 发行版,完全安装的话应该已经安装过了,当然也可以从以下网址下载安装:
http://www.squid-cache.org/
3。无论是重新安装的还是系统中原来就有的,因为对于各个发行版可能 squid 的配置文件所在的位置各不相同,用 find 命令确认 squid.conf 文件的确切位置。如果是 rpm 安装,也可以用 rpm 命令来确认:rpm -ql [squidrpmname.rpm] | grep squid.conf
4。编辑 squid.conf 文件,确保以下内容存在:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
cache_effective_user nobody
cache_effective_group nobody
http_access allow all
cache_dir ufs /usr/local/squid/cache 100 16 256
注:*** 一句为 cache 目录,需要在下面创建,可以改为你本机 squid 的所在目录。倒数第二句,表示我们允许所有的请求,这是很不安全的,可以自己创建一个组,然后 allow 这个组,并且 deny all,具体的设置仔细看一下 squid.conf 就可以了,有很详细的解释和例子
5。创建 cache 目录(如果没有的话),修改该目录所有者为 nobody
chown nobody:nobody /pathname/cache
6。查看配置文件中默认的 log 目录,将那个目录的所有者修改为 nobody,以确保 log 可以写入
7。创建 cache:squid -z
8。启动 squid:squid -D
squid 的站点维护了一份很详细的 FAQ,基本上你需要问的问题都有答案,比如你可以先用 squid -NCd1 来以 debug 模式启动,这样如果有错误会报出来,一般如果是 ADSL 拨号的,那么在没有拨号之前就启动 squid 的话是会出错的 (FATAL: ipcache_init: DNS name lookup tests failed),因为 squid 启动时会去检查一些常用的 DNS,但是这时候你并没有接入 internet,自然就出错了,所以我们需要在启动的时候不检查 DNS,这就需要用加上 - D 选项来启动 squid
9。启动成功之后,我们就可以去客户端的浏览器里面设置 proxy 来测试一下了,如果可以接入 internet,那么 squid 就算设置成功了
10。还有一个后续工作,就是确认 squid 是不是开机就自动启动了,一般在 /etc/init.d 中已经有了 squid 脚本,我们需要做的就是将它 ln 到适当的 rc.d 目录中,比如我默认是 runlevel5 启动的,那么我执行:
ln -s /etc/init.d/squid /etc/init.d/rc5.d/S99squid
ln -s /etc/init.d/squid /etc/init.d/rc5.d/K01squid
这是在 SuSE 下面,如果是 RedHat,那么 rc.d 目录是在 /etc 下面,而不是在 /etc/init.d 下面。
OK,squid 设置结束了,下面我们开始配置 iptables
配置 iptables
可以用前面所提到的配置工具,但是我没有试过,所以是直接用 iptables 命令来做的。
可以 man iptables 来查看帮助
我们把 iptables 的设置命令存在一个脚本文件中,假设脚本文件名为 firewall,然后将此文件存放在 /etc/init.d 中,并且在启动文件中运行此脚本。以下为操作步骤
1。touch /etc/init.d/firewall
2。vi /etc/init.d/firewall
加入以下内容:
#!/bin/sh
echo Enabling IP Forwarding…
echo 1 /proc/sys/net/ipv4/ip_forward
echo Starting iptables rules…
#Refresh all chains
/sbin/iptables -F -t nat
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp
–dport 80 -j REDIRECT –to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o
ppp0 -j MASQUERADE
对于以上命令的解释如下:
/proc/sys/net/ipv4/ip_forward 必须设置为 1(默认是 0)才可以使用路由功能。
/sbin/iptables -F -t nat 将 nat table 中的所有现存规则清空。
eth0:为 Linux 机器中的网卡。
3128:为 squid 中默认的监听端口。
ppp0:为 linux 中的 ADSL 设备(在 SuSE 中为 ppp0,在 redhat 中可能是 dsl0)。
MASQUERADE:适用于拨号上网的服务器,因为没有静态 IP 地址,对于有静态 IP 的服务器,可以用 SNAT –to-source ipadress 来替代。
注:以上的命令没有涉及防火墙,请自行参考配置,以上命令也没有删除 filter table 中的规则,也就是如果以前设置过防火墙,那么不会受到影响。
3。chmod u+x firewall,更改文件属性,使其可以被执行
4。编辑 /etc/init.d/boot.local 文件,在 *** 加上 /etc/init.d/firewall 这一句,确保开机就执行此脚本。
注:SuSE 中是 boot.local,对于 redhat,则需要编辑 /etc/rc.d/rc.local 文件。
5。运行 firewall,规则立刻生效。
到此为止,所有配置结束。Suse 配置透明代理还是比较常用的。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。