Home >php教程 >php手册 >Linux简明系统维护手册(四)

Linux简明系统维护手册(四)

WBOY
WBOYOriginal
2016-06-21 09:08:321132browse

(7)安装imap服务器
  几乎所有的发行包都带有imap服务器软件(一般是华盛顿大学版本),最好的办法是用你的发行包安装IMAP服务器。事实上,我个人觉得IMAP服务器很少被使用。下载最常规的IMAP服务器源码地址是:ftp://ftp.cac.washington.edu/imap/imap.tar.Z


  tar zxvf imap.tar.Z
  cd imap-2001a
  make slx



  (如果不行依次试验一下其他你觉得可能的系统类型,用vi看一下Makefile中列的名称)

  然后配置/etc/inetd.conf,让inetd允许imap服务。[本节内容没有试验成功,编译总是过不去]

  (8)安装squid服务器

  SQUID是一个优秀的代理服务器软件,它可以很灵活的被配置为各种应用形式,其中包括正向代理,反向加速模式和透明代理等。但是SQUID目前只能代理HTTP协议,代理FTP协议需要配置浏览器仿真主动FTP协议。下面的步骤是安装SQUID的过程。

  1、下载反向代理服务器软件采用squid,下载地址:http://www.squid-cache.org/

  下载后存放在/usr/local/src目录里,文件名是squid-2.4.STABLE2-src.tar.gz

  2、tar zxvf squid-2.4.STABLE2-src.tar.gz 解压缩

  3、cd /usr/local/src/squid-2.4.STABLE2 进入目录

  4、./configure --prefix=/usr/local/squid --enable-heap-replacement --disable-internal-dns建立环境,把squid安装/usr/local/squid中。第二个参数是指定使用更先进的缓冲算法。第三个参数是取消内部DNS解析(如果使用在远程高速缓存模式,比如GSLB,需要增加选项:--disable-internal-dns,目的是关闭内部DNS.否则内部DNS不理睬你在etc/hosts中的设定,直接寻找域名服务器,这样就会造成转发循环。就是cache发送给物理服务器的更新请求(因为用域名)也会被用户的GSLN设备解析回来而形成循环。)

  5、make 开始编译

  6、make install 安装到刚才--prefix=指定的路径当中

  7、安装完成后,会在您指定的安装路径里产生一个squid目录,squid目录下有四个目录:bin/ etc/ libexec/ logs/。其中etc里面是配置文件,bin里面是执行文件,logs里面是日志文件。

  8、安装结束后就是调试服务器,使其按照您的要求工作。Squid的配置文件只有一个,在etc目录里,名字是squid.conf,所有的配置选项都在这个文件里面。而且每个配置项目都有注释说明。首先,在squid文件里面找到下列配置项:

  cache_mem ---这里可以添上您准备给squid作为高速缓存使用的内存大小。注意,如果您的机器有N兆内存,那么,推荐您在这里添的数字是N/3。

  cache_dir /usr/local/squid/cache 100 16 256 这里的第一个数字100是您准备给squid作为cache使用的硬盘空间大小,单位是兆。如果您想划100M空间当作cache,那么这里就写100。

  cache_mgr webmaster@test.com.cn这里填写cache管理员的Email地址,系统出错会自动提醒cache管理员。

  cache_replacement_policy和memory_replacement_policy的参数由于使用了--enable-heap-replacement编译参数,就不能使用缺省的lru算法了,你可以在下列三种里面选一个:

  heap GDSF : Greedy-Dual Size Frequency

  heap LFUDA: Least Frequently Used with Dynamic Aging

  heap LRU : LRU policy implemented using a heap

  例如:


  cache_replacement_policy heap LRU
  memory_replacement_policy heap LRU



  下面设定ACL访问控制列表:为了简单起见,我们在这里开放所有的权限。ACL分为两个部分:ACL定义部分,和http_access部分。在access_http部分用到前面的定义。前面定义了:


  acl all src 0.0.0.0/0.0.0.0



  我们注释掉所有的http_access行加一句:

  http_access allow all ---注意:all是前面acl定义的。

  这样就开放了所有的权限。以后有需要的,再继续往上加各种限制即可。

  9、以root身份创建组nogroup :


  %su root (如果当前不是root)
  #groupadd nogroup
  #useradd nobody (如果没有这个用户)



  10、进行目录/usr/local ,以root身份执行下面的命令,改变整个Squid目录的所有者为nobody.nogroup


  #cd /usr/local
  #chown nobody.nogroup -R squid



  11、su 作为nobody,进行/usr/local/squid/bin目录,执行#squid -z 创建cache交换目录


  #su nobody
  $ cd /usr/local/squid/bin
  $./squid -z



  12、成功后,测试一下:/usr/local/squid/bin/squid -NCd1 该命令正式启动Squid。如果一切正常,你会看到一行输出 :Ready to serve requests.

  13、用ctrl-c退出前台测试。

  14、把squid作为守护进程启动就直接运行:/usr/local/squid/bin/squid

  15、检查状态用squid –k check

  16、停止squid用squid -k shutdown

  如果是配置基本的正向代理,上面的已经可以使用了。下面的步骤用于配置支持多域名的反向代理服务器。还好,SQUID的所有配置都在/usr/local/squid/etc下面,和反向代理有关的几项介绍如下:

  17、http_port 80 “http_port”参数指定Squid监听浏览器客户请求的端口号。

  18、icp_port 0 “icp_port”参数指定Squid从邻居(neighbour)服务器缓冲内发送和接收ICP请求的端口号。这里设置为0是因为这里配置Squid为内部Web服务器的加速器,所以不需要使用邻居服务器的缓冲。

  19、emulate_httpd_log on 打开“emulate_httpd_log”选项,将使Squid仿照Web服务器的格式创建访问记录。如果希望使用Web访问记录分析程序,就需要设置这个参数。

  20、redirect_rewrites_host_header off 缺省地,Squid将改写任何重定向请求的主机头部。若系统运行Squid为加速器模式,则这时不需要重定向特性。该参数在负载过重的情况下要旁路重定向器时才打开

  21、httpd_accel_host vartual 此处设置反向代理的主机名,如果对后面多个域名进行缓冲,请使用虚拟主机模式(如此)。

  22、httpd_accel_port 80 此处设置反向代理的WEB服务端口号。

  23、#httpd_accel_with_proxy off 把这行注释掉,此处设置开反向代理的同时,是否开普通代理缓存服务。如果这行不注释掉,就没有高速缓存功能。

  24、定义访问控制列表:


  acl port80 port 80
  acl accel_host1 dstdomain .test.com
  acl accel_host2 dstdomain .test.net
  … …
  http_access allow accel_host1 port80
  http_access allow accel_host2 port80
  http_access deny all;



  25、完成后,用squid –k reconfigure重新装载配置文件。

  (9)安装SSH

  ---

  (10)配置Linux为路由器

  ---

  (11)配置Linux网关和安装ipchains/iptables防火墙

  在Linux上面的防火墙,最最常用的是ipchains,而且通常情况下是作为网关的附加部分安装的。Ipchains的规则是很复杂的,灵活性也很强,可以配制成各种五花八门的样子。这些都需要和你自己的实际情况相结合。这里,我们只介绍一种基于网关的简单配置。

  安装IPCHAINS一般都不用你操心,因为几乎所有的Linux发行包都把该软件作为必须安装的却省配置。另一个原因是ipchains是跟内核(kernel)有很大的关系,因此最好在安装系统的时候选上相关选项(如果有)。在标题里面我们还提到了iptables,这个工具在表面上等同于ipchains,只不过是用于2.4内核的(2.4内核在这方面的代码几乎是重新写过的,功能有了长足的提高)。关于iptables工具的配置我们在后面介绍。你只需要记住2.2核心下使用ipchains,2.4核心下使用iptables即可。

  首先,你的服务器需要两块网卡(或更多),这种机器叫做“多宿主主机”,是专门的用于做网关或路由器的。这里插一句:一般情况下,作为普通服务器的主机即使负载再重就需要一块网卡就够了,只有做网关或路由器的时候才需要多宿主主机。这并不象一般人认为得那样增加一块网卡可以增加一份带宽,事实上,一块网卡就可以提供足够的带宽。并且,还有人错误的把两块网卡接在同一个交换机上分配两个地址,这更是错误的,因为这样产生了额外的循环路由,会产生大量的内部警告错误,某些系统就会报警。

  1、制作一个双界面(双宿主)的主机。

  通常,现在的发行包的安装程序都可以识别两块网卡,这样就省事了。但是也有不少发行包只识别第一块网卡(也许是出于前面说的原因),或者你要在一台在用的机器上加一块网卡(因为你不愿意重装系统),那么就按照下面的办法处理。

  1.1、我们就说PCI网卡。安装前首先看看网卡芯片,记住芯片的型号(希望你自己攒过机器)。

  1.2、安装MAN手册(用发行包)

  1.3、在/usr/doc/HOWTO/english/txt/Ethernet-HOWTO文件(如果是压缩的就释放)中搜索你的网卡型号,找到对应的驱动模块名称。

  1.4、如果模块没有,还需要重新编译核心。在menuconfig网络设备一栏选中你的型号然后标记为*或M,编译完核心后别忘了编译模块:make modules;make modules_install。(不会的话再仔细温习一下前面编译内核的部分)

  1.5、用depmod –a命令建立/etc/modules.conf(如果已经有就不用了),也有的发行包叫做conf.modules

  1.6、编辑该文件加上一行:alias eth1 XXXX,其中XXXX是你刚才查到的模块名称。一般该模块文件位于:/lib/modules/内核版本号/net…中的XXXX.o文件。这个文件是你编译内核模块的时候产生的,你在内核配置的时候,凡是标记为M的都会被编译成.o文件放在这里。同样的,你选择的网卡驱动也是会编译成模块在这里的。

  1.7、运行modprobe eth1使模块有效。

  1.8、修改/etc/sysconfig/network文件中需要修改的部分。

  1.9、建立或修改/etc/sysconfig/network-script/ifcfg-eth1文件(照抄那个eth0的即可),设定地址是你的真实情况,比如设为eth1要接的网段。这两个文件(eth0/eth1是启动的时候的脚本参数文件)

  1.10、重新启动一下网络:/etc/rc.d/init.d/network restart

  1.11、用ifconfig看看是否eth0/eth1都启动了。

  1.12、大功告成

  2、调整和编译核心:如果作为网关,有些核心选项需要配置。注意:这里的内核编译选项仅仅适合于2.2.X版本,2.4版本完全不同。

  2.1、在/usr/src/linux中运行make menuconfig配置核心下列选项:


  Networking options中
[*] Network firewalls
  [*] IP: advanced router
  [*] IP: firewalling
  [*] IP: firewall packet netlink device
  [*] IP: transparent proxy support
  [*] IP: masquerading
  [*] IP: ICMP masquerading
  [*] IP: masquerading special modules support
   IP: ipautofw masq support (EXPERIMENTAL)
   IP: ipportfw masq support (EXPERIMENTAL)
   IP: ip fwmark masq-forwarding support (EXPERIMENTAL)
  [*] IP: masquerading virtual server support (EXPERIMENTAL)
  (12) IP masquerading VS table size (the Nth power of 2)



  具体选项不同版本的内核不尽相同,你看着差不多就可以了。编译成模块或编进核心[*]可以自由选择。

  2.2、按照前面说的编译内核,重新启动后就具有网关功能了。启动后验证一下文件:/proc/sys/net/ipv4/ip_forward内容是否为1。(别告诉我不知道怎么看8-))

  3、设置ipchains

  本来这项工作是非常复杂的,但是我们这里讲的简单,让网关通了就行。

  3.1、先看一下目前我们目前的假想环境:你的机器有两块网卡,一块连接在内网交换机配内部网络地址,另一块在外网交换机配公网地址。在这个机器ping 内网和外网的机器应该都能通。并且在内网的机器ping 该机器的外网地址也通,在外网的机器ping该机器内网的地址也同样通。这说明转发功能是有效的。

  3.2、再试验一下:在内部网络把网关设为你的机器的内网地址,然后ping 外网的任一台机器(不是这台机器的外网地址),结果是不通。原因是ICMP包发出去后外网的机器不知道怎么回答,那里没有合适的路由,因为这个包的回应地址是内网。

  3.3、现在设置ipchains:(ipchains软件适用2.2.X的内核,在2.4.X的内核中不适用。2.4.X的内核推荐使用iptables,关于该软件的用法在下面介绍)


  ipchains –A forward –s 192.168.1.0/24 –j MASQ



  黑体部分是内网地址。这句话的意思是,把所有内网发送的包都伪装成外部网的地址(那个机器的外网地址),这样,外部其他机器回应的时候就会发送到这台机器,经过转发就回来内网了。好了,一个简单的网关做好了。如果你需要实现防火墙(包过滤功能),则需要配置更加复杂的过滤规则,这些规则应该同时作用于input/output/forward链。

  3.4、自动启动:设定了复杂的链,需要保存。在/etc/rc.d中建立一个文件:rc.ipfwadm把你的链脚本加进去就可以了。最后给这个文件+x属性(chmod +x rc.ipfwadm)。

  4.在2.4.X内核中使用iptables建立Linux防火墙(网关)。

  4.1 说明和下载

  前面已经提到过2.4 内核中要使用iptables来做类似于ipchains在2.2内核中实现的事情。事实上,在2.4内核中的iptables包含了两个完全不同的部分:包过滤和地址转换。这两个功能在逻辑上是分开的,考虑到操作习惯上的问题才集成在一个配置程序(iptables)上。如果你安装了带有2.4内核的发行包,那么一般都带有iptables,并且在内核配置上也配置好了。如果要编译新的内核或者原来的内核没有支持iptables,需要选上相关的选项。使用make menuconfig 配置内核的时候操作:进入:Networking Options至少选择上:


  [*] Network packet filtering (replaces ipchains)
  [*] Network packet filtering debugging (NEW)
  进入:IP: Netfilter Configuration --->
  [*] Connection tracking (required for masq/NAT) (NEW)
FTP protocol support (NEW)
IRC protocol support (NEW)
  等等……
  把下面的选项全部标记



  逐级返回上面菜单后保存配置,然后按照编译内核的那一套程序进行即可(参见前面的内容)。这里需要说明的是,内核支持了iptables功能,还需要有外部程序才行。如果你是直接安装的带有2.4内核的发行包,应该已经带有iptables实用程序了。但是如果你是从2.2核心的发行包直接升级到2.4内核,尽管按照上面的做法配置的核心,但是还不能使用iptables。还必须下载和编译iptables外部程序才能使用iptables功能。下载的地址是:http://www.netfilter.org ,下载的文件是iptables-1.2.6a.tar.bz2或更新的版本。

  4.2 安装:

  这个.bz2文件比较奇怪吧?把文件复制到/usr/local/src中,然后用下列命令释放编译和安装: bzip2 -dc iptables-1.1.2.tar.bz2 |tar vxf - (最后那个‘- ’别忘了)

  你的系统可能没有bzip2工具,如果没有,你就去下一个:

  进入新生成的目录 :cd iptables-1.2.6a 编译和安装:make ; make install

  4.3 配置

  如果你需要配置一个简单的网关,你仅仅需要配置一个转发加地址转换功能即可,我提供的参考脚本如下:


  #begin
  echo 1 > /proc/sys/net/ipv4/ip_forward
  modprobe iptable_nat
  modprobe ip_conntrack
  modprobe ip_conntrack_ftp
  modprobe ip_nat_ftp
  iptables -F INPUT
  iptables -F FORWARD
  iptables –F OUTPUT
  iptables -F POSTROUTING -t nat
  iptables -t nat -F
  iptables -P FORWARD DROP
  iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
  iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
  iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24
    -j SNAT --to 21.9.22.2
  #end



  其中3行modprobe是当你在内核中把iptables相关功能编译成模块(选成)的时候才用到的(也可能不止3行)。其中插入模块(modprobe)的几行比较重要,有时候当你作完NAT后,发现FTP不好用了,就要手工插入ip_nat_ftp模块(语法是:modprobe ip_nat_ftp)。黑体的地址部分可能是需要根据你网络的实际情况来决定的。最后一句话的意思是把凡是源地址是192.168.1.x的包做地址转换,转换为网关外侧地址21.9.22.2。好了,你已经建立起一个基本的网关了。其实iptables的功能及其强大,配置也非常灵活。其中的防火墙功能通过-t filter参数实现,地址转换功能通过-t nat实现(就像上面一样)。防火墙功能(packet filter)主要是3个链:INPUT,FORWARD,OUTPUT,地址转换功(nat)主要是3个链:PREROUTING,POSTROUTING,OUTPUT。观察当前的状态可以使用下面的命令:iptables –L –t filter 或 iptables –L –t nat。

  好了,要配置出更灵活的、更强大的防火墙功能,全靠你自己了。我推荐你两个手册:《Linux 2.4 Packet Filter HOWTO》和《Linux 2.4 NAT HOWTO》。这两个文档是iptables的原作者写的,相当经典。英文不好?没关系,这两个文档都有中文版本。推荐你到:永远的UNIX(http://www.fanqiang.com)下载。



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:3维饼图Next article:Linux简明系统维护手册(三)