- 论坛徽章:
- 0
|
利用一天左右的时间设置linux下的防火墙和透明代理服务器,这样的设置可以让客户端感觉不到代理的存在而直接访问互联网,把主要的修改和操作记录一下,以便日后参考.
操作系统:redhat advance server 2.1
squid是操作系统自带的,iptables也是操作系统自带.
所作的修改主要如下:
1.从services中把ipchains去掉,使用iptables就不需要ipchains.
2. 启用ip转发,把/proc/sys/net/ip_forward 的值改为一,可以使用如下语句: echo 1>; /proc/sys/net/ip_forward,注意事项,这个值应该在每次启动机器的时候都修改,否则不能转发ip.
3.修改/etc/squid/squid.conf文件,设置代理端口,主要作如下几个修改即可(至少保证如下几项),这个文件是个很好的说明书,值得仔细研究:
http_port 3128
cache_access_log /var/squid/access.log
cache_log /var/squid/cache.log
cache_store_log /var/squid/store.log
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_user_host_header on
4.在/etc/rc.d目录下touch firewall 文件,在其中添加如下内容,并把该文件改为可执行 # chmod u+x firewall,
并把该文件添加到rc.local中,实现每次启动自动执行.文件的内容如下:
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
echo 1 >; /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 100.100.100.0/24 --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 100.100.100.0/24 -o eth0 -j SNAT --to 211.*.*.*
对上述内容的解释: 前四行是加载iptables所需要的模块,第五行是启动ip转发功能,第六和第七行是使用转发功能把内网网段上的请求转发到外网ip的3128端口上,实现代理功能.
至此,所有的设置完成,重新启动机器即可实现防火墙和代理服务器的功能,这是最基本的设置,好多可以实现的管理和限制功能没有实现,留待日后研究.
几点注意事项: 在firewall文件中的100.100.100.0/24是一个网段,而不是一个ip;这里也可以指定某一些特定的ip,比如,内网中的邮件服务器,可以单独把这个地址帮定到一个外部ip上,实现外部收邮件;一般情况下,双网卡的eth0和eth1分别设置外网和内网的ip,其中内网的ip(100.100.100.1)不用设置网关,并且这个ip作为客户端的网关. |
|