Linux服务配置

cd 切换目录

dir 显示目录内容

ls 显示目录内容

cat 显示文件内容,适合小文件

less 分屏显示文件内容,可前后翻阅

more 分屏显示文件内容,不可向前翻阅

head 显示文件头部内容

tail 显示文件尾部内容

touch 创建文件或更新文件访问时间

mkdir 创建目录

rmdir 删除目录

rm 删除文件或目录(-r)

cp 复制文件或目录

mv 移动或改名

chown 修改文件所有者

chgrp 修改文件所属组

chmod 修改文件目录权限

find 查找文件或目录

tar 打包工具

gzip/gunzip 压缩工具

bzip2/bunzip2 压缩工具

vi 文本编辑工具

 

用户类命令:

 

useradd 添加用户

userdel 删除用户

usermod 修改用户属性

passwd 设置密码

groupadd 添加组

groupmod 修改组属性

groupdel 删除组

gpasswd 将用户添加到组或从组中删除

id 显示当前用户ID属性

who 显示当前登录的用户

w 同上,略有不同

chfn 修改用户信息

su 切换用户

chsh 修改登录

 

Shell 帮助类命令:

 

help 显示内部命令帮助

man 查看手册

info 查看

texinfo格式手册

 

文件系统类命令:

 

fdisk 分区命令

mkfs 格式化命令

e2label 设置卷标

mount 挂载文件系统

umount 解除挂载文件系统

fsck 文件系统检查

mkswap 创建

swap文件系统

quotacheck 检查配额

quotaon 启用配额

quotaoff 关闭配额

edquota 设置用户磁盘配额 软件包管理:

rpm redhat包管理工具

apt Debian包管理工具

yum Yellow dog包管理工具

 

系统管理命令:

 

date 显示/设置系统时间

shutdown 关闭系统

reboot 重启系统

halt 关闭系统

runlevel 显示运行级

init 切换运行级

grub-install 安装

GRUB cal 显示日历

 

内核管理类命令:

 

lsmod 显示已加载内核模块

insmod 添加内核模块

modprobe 添加内核模块

modinfo 显示内核模块信息

rmmod 移除内核模块

 

进程管理类命令:

 

ps 显示系统进程

top 进程管理工具

pstree 显示进程树

pidof 显示指定程序的进程号

nice 设置进程优先级 网络基础类命令

ifconfig 查看/设置网卡参数

ifup 启用网络设备

ifdown 关闭网络设备

lsof 显示指定端口由谁监听

sysctl 控制TCP/IP内核参数

adsl-setup 设置ADSL连接参数

adsl-status 显示ADSL连接状态

adsl-connect 启动ADSL连接

netstat 显示系统网络状态信息

route 查看路由表

ip 强大的网络管理工具

ping 测试连通性

traceroute 路径跟踪

 

标签: No Tags     

 

 Df,du,mount,fdisk命令和自动加载详解

df(disk free)查看磁盘分区使用情况

df -k:默认设置

df -t:显示指定文件系统磁盘空间使用情况。

格式:df -t 文件系统类型

例:df -t ext3 //显示磁盘所有ext3的文件系统类型

df -T:显示文件系统类型

例:du -hT //按计算机专业标准并显示驱动器的文件型态

df -i:显示i节点使用情况(df命令可显示所有文件系统对i节点和磁盘区块的使用情况)。

 

 

du(disk usage)查看目录所用空间(显示磁盘空间的使用情况)

du参数意义如下:

-s:显示整个目录大小,单位为K

-sm:M为单位显示目录大小

-sh:M为单位显示目录大小,以1024为单位

-sH:M为单位显示目录大小,以1000为单位

-b:以字节为单位

注:du这些参数同样可以配合df命令一起使用。

 

 

mount装载命令

将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为装载。

格式:mount[-参数][设备名称][装载点]

-t<文件系统类型>指定设备的文件系统类型

minix:Linux最早使用的文件系统

ext2:Linux目前常用的文件系统

msdos:MS-DOSfat,就是fat16

nfs:网络文件系统

iso9660:CD-ROM光盘标准文件系统

ntfs:windows NT 2000 的文件系统

hpfs:OS/2文件系统

auto:自动检测文件系统

 

-O(option)<选项>指定装载文件系统时的选项。有些也可用在/etc/fstab中。

codepage=XXX 内码表

iocharset=XXX 字符集

ro 以唯读方式装载

rw 以读写方式装载

nouser 使一般用户无法装载

user 可以让一般用户装载设备

 

例:#mount -t vfat /dev/hda1 /mnt/C //C盘分区挂载到/dev/hda1分区上

#mount -t vfat -O Codepage=936,iocharset=cp936 /dev/hda1 /mnt/C //C盘分区挂载

 

/dev/hda1分区上,支持中文

 

加载U

fdisk -l

lsmod //显示模块

modeprobe usb-uhci(uhci-usb1.0)

modeprobe usb-ehci(ehci-usb2.0)

mount -O Codepage=936,iocharset=cp936 /dev/sda4 /mnt/usb //U盘目录/dev/sda4挂载

 

/mnt/usb目录上,并且支持中文

cd /mnt/usb //进入U盘目录

 

格式化硬盘

#fdisk 分区

然后用m输出帮助

#fdisk –l 显示出分区内的磁盘情况

 

自动装载

/etc/fstab文件列出了Linux开机时自动装载的文件系统的列表。

/etc/fstab文件里,第一列是装载的文件系统的设备名,第二列是装载点,第三列是装载的文件系统类

 

型,第四列是装载的选项,选项间用逗号分隔。

说明:defaults实际上包含了一组默认参数:

rw:以可读写模式装载

suid:开启用户ID和用户组ID设置位

dev:可解读文件系统上的字符或区块设备

exec:可执行二进位文件

auto:自动装载

nouser:使一般用户无法装载

async:以非同步方式执行文件系统的输入输出操作

 

加载U盘模块

#modprode usb_uhci(1.0) //加载U1.0模块

#modprode usb_ehci(2.0) //加载U2.0模块

 

卸载模块(删除模块):rmmod

插入模块:lsmod

显示模块:lsmod        

 

 

Linux配置汇总

一、基本网络配置

1.基本配置文件

/etc/hosts:是将IP地址和主机名联系起来的简单文本文件。

格式:IP地址 全限定主机名 别名

举例:192.168.0.2 wanghui.shuke.com wanghui

说明:将IP地址映射到wanghui.shuke.com,并且分配一个备用主机名wanghui

 

/etc/services:将服务的名字转成端口号。

注意:没有必要修改,已经包含了常用服务的端口号。

格式:主机服务名 端口号/端口类型 别名

举例:smtp 25/utp mail

说明:smtp服务使用25端口,使用utp连接方式,服务别名是mail

 

/etc/sysconfig/network:网络配置信息,系统启动时会引导这个文件。

内容:

NETWORKING=YES|NO

YES表示需要配置网络,NO表示不需要配置网络;

HOSTNAME=homename

主机的全限定域名;

GATEWAY=gw-ip

网络网关的IP地址;

GATEWAYDEV=gw-dev

网络设备的名称(例如eth0或者IP地址);

NISDOMAIN=dom-name

表示NIS域(如果有的话)。

 

2.可执行脚本和命令

/etc/rc.d/init.d/network {start|stop|restart|reload|status}

系统启动时的初始化脚本程序。

 

/etc/sysconfig/network-scripts/ifcfg-interface-name:网卡配置文件。

内容:

DEVICE=物理设备名

IPADDR=IP地址

NETMASK=掩码值

NETWORK=网络地址

BROADCAST=广播地址

GATEWAY=网关地址

ONBOOT=[yes|no](引导时是否激活设备)

USERCTL=[yes|no](非root用户是否可以控制该设备)

BOOTPROTO=[none|static|bootp|dhcp](引导时不使用协议|静态分配|BOOTP协议|DHCP协议)

 

ifconfig:命令用来在系统内核表中设置或读取网络设备参数

举例:ifconfig eth0 IP地址 netmask 子网掩码

说明:配置IP和子网

举例:ifconfig eth0 hw ether MAC地址

说明:配置mac地址

举例:ficonfig dynamic

说明:启动dhcp

举例:ifconfig eth0 [down|up]

说明:启动或关闭网卡

 

netconfig:通过通行界面配置网络。

 

3.DNS

/etc/host.conf:指定如何解析主机名。

举例:order hosts,bind

说明:查询顺序,先静态还是先dhcp

 

/etc/nsswitch.conf:用于管理系统中多个配置文件查找的顺序。

 

/etc/resolv.conf:网络用来确定主机解析的关键文件之一,最多标示三个。

格式:search lintec.edu.cn

    nameserver 202.106.196.152

    nameserver 202.106.196.115

说明:nameserver表明dns服务器的IP地址;search指明域名查询顺序。

 

4.路由设置及管理命令

route:显示路由信息

内容:

Destination:目标网络或主机

Gateway:该目标要经由哪个网关传送

Genmask:目标网络或主机的掩码

Flages:路由标志

Iface:该路由使用的网络接口

Metric:路由成本

Ref:此路由被使用的次数

 

添加路由命令:

route add -net 192.192.192.0 netmask 255.255.255.0 dev eth0

 

删除路由命令:

route del -net 192.192.192.0 netmask 255.255.255.0

 

traceroute:测试路由命令

举例:traceroute www.sina.com.cn

说明:测试从本地到远程主机的路由信息

 

二、邮件服务

1.MUANTA

MUA:邮件用户代理,常用的有:Foxmail, Outlook Express, Pine, mail等。

MTA:邮件传送带里,常用的有:Sendmail, Qmail, Postfix, Exim, Exchange

 

2.sendmail安装包:

sendmail-812.8-4sendmail可执行文件

sendmail-cf-812.8-4sendmail.cf生成器

sendmail-doc-812.8-4sendmail.doc文档

 

3.sendmail的主要配置文件:

/etc/mail/aliases

用来定义邮件的列表、转发、别名。

注意:每次修改了aliases文件后,要使用命令newaliases更新数据库。

举例:fox: shuke

说明:系统用户shuke具有fox的别名。

举例:maillist: shuke liu wang zhang

说明:发送给maillist的邮件,shuke,liu,wang,zhang用户都能收到。

举例:shuke: shuke.w@163.com

说明:发送给本地shuke的用户会被转发给shuke.w@163.com这个邮箱。

 

/etc/mail/sendmail.cf

用来限定sendmail守护进程的运行,在264行左右。

 

/etc/mail/sendmail.mc

sendmail.cf中的文件太复杂,可以通过编辑sendmail.mc文件,然后生成sendmail.cf文件。

命令:m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

 

 

/etc/mail/local-host-names

定义本地主机名和域名的列表,判断收到的邮件是本地的还是远程的。

 

/etc/mail/access.db

用来定义要通过的邮件地址列表,是允许还是拒绝。

每次修改后,需要用makemap生成新的access数据库。

命令:makemap hash /etc/mail/access.db < /etc/mail/access

 

/etc/mail/sendmail.cw

当一个主机有多个域名,并且希望每个域名都能用来接收电子邮件时,可以在该文件中加入这些域名,sendmail会接受这些域名的邮件,并把他们当作本地邮件处理。

举例:vi /etc/mail/sendmail.cw

cuckoo.edu.cn

napoleon.frh.org

说明:这两个域名的邮件都会被这台机器接收。

 

/etc/mail/virtusertable

建立虚拟邮件账户。

举例:shuke@mail.shuke.com shuke1

    shuke@shuke.com shuke2

说明:shuke@mail.shuke.com的邮件被接收,并放在shuke1邮箱,shuke@shuke.com邮件被接收,放在shuke2邮箱。

注意:修改后必须生成新的数据库文件。

命令:makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable

 

4.其他文件

/var/spool/mqueue:是邮件队列临时存放的目录。

内容:

qf*:消息队列控制文件;

df*:数据文件;

tf*:临时文件;

nf*:每个用户对应的消息队列;

xf*:当前会话过程的transcript文件。

 

/var/mail:存放所有收到的邮件,每个本地用户会有一个目录。

 

var/log/maillog:用于分析错误的日志文件。

 

5.增加sendmail的认证功能

需要使用的安装包:

cyrus-sasl-devel- 2.1.10 -4

cyrus-sasl-md5- 2.1.10 -4

cyrus-sasl-gssapi- 2.1.10 -4

cyrus-sasl- 2.1.10 -4

cyrus-sasl-plain- 2.1.10 -4

 

注意:在sendmail已经包括sasl验证库的情况下,默认不支持smtp认证,需要配置/etc/mail/sendmail.mc文件支持smtp认证。编辑文件/etc/mail/sendmail.mc文件,并去掉下面三个文件前面的注释:

TRUST_AUTH_MECH (`EXTERNAL DIGEST-MD5 LOGIN PLAIN ') dnl

define (`confAUTH_MECHANISMS', ` EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN ') dnl

DAEMON_OPTIONS (`Port =submission, Name=MSA, M=Ea') dnl

并配置下面的地址为本机IP地址:

DAEMON_OPTIONS (`Port =smtp,Addr=192.168.10.2,Name=MSA, M=Ea') dnl

使用m4工具生成sendmail.mc文件:

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

 

6.安装配置POP3IMAP服务器

使用的安装包:imap -2001a -28

 

编辑两个文件:/etc/xinetd.d/ipop3文件和/etc/xinetd.d/imap文件,修改disable设置为"no",然后使用启动进程命令:/etc/rc.d/init.d/xinetd restart即可。

 

三、APACHE服务器与APACHE+MYSQL+PHP协同服务

1.Apache的主要配置文件:httpd.conf

/etc/httpd/conf/httpd.conf

或者

/usr/local/apache/conf/httpd.conf

 

httpd.conf的内容:

Serverroot:设置服务器存在的主目录;

 

LockFile filenamehttpd守护进程的加锁文件,一般不需要设置,如果ServerrootNFS文件系统,就需要修改参数指定本地文件系统中的路径;

 

ScoreBoardFile file-pathhttpd使用ScoreBoardFile来维护进程的内部数据,因此除非要在一台计算机上运行几个Apache服务器,否则不需要修改;

 

PidFile /var/run/httpd.pid:指定文件记录httpd的守护进程号;

 

Timeout number:定义客户程序和服务器连接的超时间隔;

 

KeepAlive on|off:用于支持http1.1版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个http请求;

 

MaxKeepAliveRequests number:一次连接可以进行的http请求最大数。如果数值为0,将支持在一次连接内进行无限制的传输请求;

 

KeepAliveTimeout number:测试一次连接中的多次请求传输之间的时间,如果在完成了一次连接之后没有收到客户程序的下一次请求,超过这个间隔值后,就会断开;

 

StartServers number:服务器启动时建立的进程数量;

 

MinSpareServers/MinSpareThreads number:服务器最低维持的空进程数;

 

MaxSpareServers/MaxSpareThreads number:服务器运行时维持的最大空进程数;

 

MaxClients number:服务器运行时可以同时处理的客户端最大数量;

 

MaxRequestsPerChil number:设置每个进程可处理的请求数,达到这个数值后,子进程自动销毁,如果设置为0,则永不销毁子进程;

 

Listen [IP-address:]portnumber:设置apache监听的端口,默认为80

 

LoadModule module filename:在apahce安装过程中,被配置为--enable-module=sharedapache模块,会被独立的编译成*.so的动态共享对象。当服务器需要加载这个动态对象时,必须在httpd.conf中使用LoadModule指令,指定在服务器启动或重新启动时被加载;

举例:LoadModule foo_module modules/foo.so

 

ExtendedStatus On|Offapache服务器可以通过特殊的http请求,报告自身的运行状态,打开这个ExtendedStatus参数,可以让服务器报告更全面的运行状态信息;

 

User unix-userid:服务器以root身分启动以后,改变为设置的用户身份运行;

 

Group unix-grouprid:服务器以root身分启动以后,改变为设置的组身份进行运行;

 

ServerName 完整的域名/IP地址[:端口号]:默认不需要修改,如果服务器名字解析有问题,在此修改;

 

ServerAdmin 邮件地址:设置的在返回给客户端的错误信息中要包含的邮件地址;

 

UseCanonicalName on|off|dnson-使用ServerName值生成的默认web站点构造服务器的规范名称,off-使用由客户提供的主机头指令的主机名称和端口号为服务器构造默认的web站点,dns-使用dns执行客户连接IP地址搜索时确定的主机名构造服务器默认的web站点;

 

DocumentRoot /usr/local/apache/htdocs:设置客户端访问服务器时,可允许访问的根目录;

举例:DocumentRoot /usr/web

注意:最后的目录不要加"/"符号。

 

<Directory 目录路径>...</Directory>:用于封装一组命令,使之仅对某个目录及其子目录生效;

举例:

<Directory /usr/local/apache/htdocs/pics>

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

 

Options [+|-]可选项[+|-]可选项...:设置在特定目录中将使用那些服务器特性,默认为ALL

 

AllowOverride All|None|指令类型[指令类型]...:当服务器发现了一个.htaccess文件(由AccessFileName指定)时,它需要知道在这个文件中声明的哪些指令;

 

Order规则:控制缺省的访问状态和Allow,Deny指令被评估的顺序;

举例:

<Directory /www>

order Allow,Deny

Allow from shuke.com

Deny from no.shuke.com

说明:shuke.com域中的所有主机,除了no.shuke.com子域中包含的主机外都允许访问。所有不在shuke.com域中的主机都不允许访问。

 

Allow from all|host|env=env-variable [host|env=env-variable]...:哪些主机可以访问服务器的一个区域,可以用主机名,IP地址,IP地址范围或者其他环境变量中捕获的客户端请求特性来对访问进行控制;

 

Deny from all|host|env=env-variable [host|env=env-variable]...:允许基于主机名,IP地址或者环境变量限制对服务器的访问;

 

UserDir Directory:设定了用户宿主目录下的一个实际目录,存放了该用户提供访问的文档。apache允许系统的每个用户建立自己的网站,用户只需要在自己的主目录下建立一个目录,并以UserDir指令设置目录名(默认为public_html),把提供访问的文件存放在该目录下,则在客户端可以使用类似的地址访问;

举例:http://webserver/~用户名/guess.html

说明:服务器向客户端返回/home/用户名/guess.html页面。

 

DirectoryIndex filename:设置默认的网站访问页面;

举例:DirectoryIndex index.html

说明:必须在客户端方式index.html为站点的索引文件。

 

AccessFileName 文件名:指定所有发布目录中的配置文件名;

举例:AccessFileName .htaccess

说明:在返回文档/usr/local/web/index.html之前,服务器会为此指令读取/.htaccess, /usr/.htaccess, /usr/local/.htaccess/usr/local/web/.Htaccess,除非此功能已为如下代码所禁用:

<Directory />

AllowOverride None

</Directory>

 

HostnameLookups on|off|double:此指令起用了DNS查询,使得主机名能被记入日志;

 

ServerSignature On|Off|Email:配置服务器生成文档的页脚,on-简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerNameoff-没有错误行,Email-额外创建一个指向ServerAdmin"mailto:"部分;

 

Alias URL-path file-path|directory-path:使文档可以存储在DocumentRoot以外的本地文件系统中;

举例:Alias /image /ftp/pub/image

说明:对http://webserver/image/shuke.w的请求,服务器将返回/ftp/pub/image/shuke.w文件。

 

ScriptAlias URL-path file-path|directory-pathScriptAlias指令的行为与Alias指令相同,但同时,他又表明此目录中含有应该由mod_cgicgi-script处理器的CGI脚本;

举例:ScriptAlias /cgi-bin /web/cgi-bin/

说明:对http://myserver/cgi-bin/shuke的请求会引导服务器执行/web/cgi-bin/shuke脚本。

 

AddType MIME-type extension [extension]...AddType指令在给定的文件扩展名与特定的内容类型间建立映射关系;

 

AddHandler handler-name extension [extension]...:指定带extension扩展名的文件应被handler-name处理器来处理。这个映射关系会添加在所有有效的映射上,并覆盖所有相同的extension扩展名映射;

举例:AddHandler cgi-script .cgi

说明:把扩展名为.cgi的文件作为CGI脚本处理,一旦这个定义放在httpd.conf文件中,所有包含.cgi扩展名的文件,都会被当作CGI程序。

 

<VirtualHost 地址[:端口号][地址[:端口号]]...>...</VirtualHost>:用于封装一组仅作用于特定虚拟主机的指令;

 

2.基于IP地址的虚拟主机:

1) 需要服务器支持一个网卡绑定多个IP地址,在Red Hat Linux9的内核中已默认支持此功能。首先需要为虚拟主机申请域名和IP,假设为本地地址为www.shuke1.com:202.19.0.23,申请新的域名和IP为:www.shuke2.com:202.19.0.55

 

2) 为网卡添加新IP地址;

#/sbin/ifconfig eth0 add 202.19.0.35 netmask 255.255.255.0

 

3) 重新设置httpd.conf,在文件中加入;

<VirtualHost 202.19.0.35>

ServerAdmin webmaster@ shuke1.com

DocumentRoot /home/httpd/www.shuke2.com

ServerName www.shuke2.com

ErrorLog /var/log/httpd/www.shuke2.com/error.log

</VirtualHost>

 

4) 建立相应的目录;

#mkdir /home/httpd/www.shuke2.com

#mkdir /var/log/httpd/www.shuke2.com

 

5) 将相应的主业内容存放在DocumentRoot指定的目录中;

 

6) 重新启动httpd服务进程,即可提供两个web服务器的功能。

 

3.基于名字的虚拟主机服务:基于名字的虚拟主机服务是比较适合使用的一种方案。他不需要更多的IP地址,而且配置简单,无需什么特殊的软硬件支持。现代的浏览器大都支持这种虚拟主机地实现方法。

1) DNS登记新的域名www.shuke2.com指向本地IP地址;

2) 修改配置文件,增加下面内容:

NameVirtualHost 202.19.0.23

<VirtualHost 202.19.0.23>

ServerAdmin webmaster@yourdomain.com

DocumentRoot /home/httpd/www.shuke1.com

ServerName www.shuke1.com

ErrorLog /var/log/httpd/www.shuke1.com/error.log

</VirtualHost>

 

<VirtualHost 202.19.0.23>

ServerAdmain webmaster@yourdomain.com

DocumentRoot /home/httpd/www.shuke2.com

ServerName www.shuke2.com

ErrorLog /var/log/httpd/www.shuke2.com/error.log

</VirtualHost>

也就是在基于IP地址的配置基础上增加一句:NameVirtualHost 202.19.0.23,最后是建立相应的目录,将主页内容放到相应的目录中去。

 

4.Apache的日志配置:

同样需要在httpd.conf中使用配置命令完成。

ErrorLog 文件路径|syslog[:facility]:指定了当服务器遇到错误时记录错误日志的文件名,默认为logs/error_log

 

LogLevel级别:设置写入错误日志中信息的详细程度。

注意:建立至少使用crit级别,默认warn级别。

内容:

emerg:紧急-系统无法使用;

举例:Child cannot open lock file. Exiting

alert:必须立即采取错误;

举例:getpwuid: couldn't determine user name from uid

crit:致命情况;

举例:socket: Failed to get a socket, exiting child

error:错误情况;

举例:Premature end of script headers

warn:警告情况;

举例:chile process 1234 did not exit, sending another SIGHUP

notice:一般重要情况;

举例:httpd: caught SIGBUS, attempting to dump core in...

info:普通信息;

举例:Server seems busy, (you may need to increase StarServers, or Min/MaxSpareServers)...

debug:出错级别信息;

举例:Opening config file...

 

LogFormat format|nickname [nickname]:定义日志文件的记录格式。

 

CustomLog file|pipe format|nickname [env=[!]environment-variable]:对服务器的请求进行日志记录。

 

TransferLog file|pipe:不允许直接定义日志格式或根据条件进行日志记录外,与CustomLog指令有完全相同的参数和功能。

 

5.Apache的安装与验证

1) 安装源代码包httpd- 2.0.48 .tar.gz

[root@shuke src]#tar -zxvf httpd- 2.0.48 .tar.gz

[root@shuke src]#cd httpd- 2.0.48

[root@shuke httpd- 2.0.48 ]#./configure --prefix=/usr/local/apache --enable-so

[root@shuke httpd- 2.0.48 ]#make

[root@shuke httpd- 2.0.48 ]#make install

[root@shuke httpd- 2.0.48 ]#vi /usr/local/apache/conf/httpd.conf

配置ServerAdmin的值为服务器管理员的邮箱地址:

ServerAdmin webmaster@mail.shuke.com

配置ServerName的值为本机域名:

ServerName webserver.shuke.com:80

[root@shuke httpd- 2.0.48 ]#/usr/local/apache/bin/apachectl start

[root@shuke httpd- 2.0.48 ]#ps -aux | grep httpd

验证apache进程已经启动,通过客户端在浏览器打开站点,看到apache欢迎页面。

 

2) apache的启动和停止的配置

复制/usr/local/apache/bin/apachectl文件到/etc/rc.d/init.d/目录:

[root@shuke httpd- 2.0.48 ]#cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/

编辑启动文件:

[root@shuke httpd- 2.0.48 ]#vi /etc/rc.d/init.d/apachectl

修改文件,在文件中'#!/bin/sh'后面加入下面两条规则:

#!/bin/sh

#

# chkconfig: 2345 85 15

# description: Apache is a World Wide Web Server

#

使用chkconfig命令把apachectl命令加入到系统启动队列中:

[root@shuke apache]#chkconfig --add apachectl

查看apachectl的状态:

[root@shuke apache]#chkconfig --list apachectl

[root@shuke apache]#reboot

重新启动系统,察看进程,确认apache进程已经伴随系统启动。

 

3) 查看日志

查看错误日志:

[root@shuke apache]#less /usr/local/apache/logs/error_log

查看访问日志:

[root@shuke apache]#less /usr/local/apache/logs/access_log

 

6.Apache+Mysql+Php协同服务(顺序:mysql,apache,php

mysql的安装步骤:

1) 建立一个mysql的组和用户

2) ./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql

3) make

4) make install

5) /usr/local/mysql/bin/mysql_install_db

初始化数据库。

6) chown -R mysql /var/lib/mysql

设置mysql目录的权限。

7) cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

复制配置文件。

8) /usr/local/mysql/bin/mysqld_safe --user=root &

使用root用户启动mysql服务。

9) /usr/local/mysql/bin/mysqladmin -u root -p password 1234

因为初始的root密码是空的,因此修改密码,注意(Enter Password:直接回车)。

 

php的安装步骤:

1) ./configure --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs

2) make

3) make install

4) cp php.ini-dist /usr/local/lib/php/php.ini

复制php配置文件到php目录。

5) vi /usr/local/apache/conf/httpd.conf

修改apache的配置文件,添加内容:

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

 

安装一个论坛(zorum)的步骤:(用一个已经做好的config.php文件)

1) cp -dpR zorum_3_5/* /usr/local/apache/htdocs/zorum/

将文件拷贝到位于apache下的zorum目录下,并赋予它可以被写被读的权限。

2) 启动mysqlapache服务。

通过客户端访问验证,论坛启动成功,则协同服务正常。

 

四、DNS服务

1.安装包以及模板包

安装包:bind- 9.2.1 -16

模板包:caching-nameserver-7.2-7.noarch

 

2.配置文件

1) /etc/named.conf

主配置文件

举例:shuke.comIP 10.0.0 .10

vi /etc/named.conf

在(include "/etc/rndc.key";)下添加:

zone "shuke.com" IN {

type master;

file "shuke.com.zone";

allow-update { none; };

};

 

zone " 0.0.10 .in-addr.arpa" IN {

type master;

file " 0.0.10 .local";

allow-update { none; };

};

说明:指明了正反向解析文件的调用位置。

 

2) /var/named/named.ca

根域名服务器指向文件

 

3) /var/named/named.local

区资源文件,反向映射信息

举例1:使用模板文件拷贝原内容到shuke.com的反向解析文件配置文件" 0.0.10 .local",并修改如下:

$TTL 86400

@ IN SOA nameserver.shuke.com. root.mail.shuke.com. (

  2004010101 : Serial

  28800     : Refresh

  14400     : Retry

  3600000   : Expire

  86400     : Minimum

IN NS nameserver.shuke.com.

 

10 IN PTR nameserver.shuke.com.

11 IN PTR webserver.shuke.com.

12 IN PTR mail.shuke.com.

13 IN PTR slave.shuke.com.

说明:shuke.com的域名反向解析文件配置,指定了域名服务器:nameserver.shuke.com,指定了主机位 10.11.12 .13分别对应的域名。

 

举例2:使用模板文件拷贝原内容到shuke.com的正向解析文件配置文件"shuke.com.zone",并修改如下:

$TTL 86400

@ IN SOA nameserver.shuke.com. root.mail.shuke.com. (

  2004010101 : Serial

  28800     : Refresh

  14400     : Retry

  3600000   : Expire

  86400     : Minimum

IN NS nameserver.shuke.com.

IN MX 10 mail.shuke.com.

 

Localhost. IN A 127.0.0.1

nameserver IN A 10.0.0 .10

webserver IN A 10.0.0 .11

www IN CNAME webserver

mail IN A 10.0.0 .12

slave IN A 10.0.0 .13

说明:shuke.com的域名正向解析文件配置,指定了域名服务器:nameserver.shuke.com,指定了主机头分别对应的IP地址。

 

4) DNS资源记录类型

SOA:标记区数据的开始,定义影响整个区的参数;

NS:一个区的域名服务器;

A:转换主机名到IP地址;

PTR:转换IP地址到主机名;

MX:该域的邮件服务器;

CHANME:定义主机别名;

HINFO:描述主机硬件和操作系统信息;

TXT:文本描述信息。

 

3.纯缓存域名服务器

不对外提供本地域名解析服务,只通过向根域名服务器或其他的域名服务器发布查询,以解析本地网络客户发出的请求,并将查询结果保存在缓存中,如果下次收到同样域名的查询,就不再向外发出查询请求,直接从缓存中读取信息返回给客户。

1) 需要三个配置文件

vi /etc/named.conf,做如下编辑:

options {

directory "/var/named";

forwarder {202.106.0.20;213.32.9.67};

};

 

zone "." IN {

  type hint;

  file "named.ca";

};

 

zone "0.0.127.in-addr.arpa" IN {

  type master;

  file "named.local";

};

说明:forwarder选项使纯缓存域名服务器接收到域名请求时,如果缓存中没有请求的域名信息,将不直接向根域名服务器查询,而是把请求交给forwarder指定的DNS服务器代为查询,并在从这台DNS获得查询后返回查询请求客户,同时在缓存中保留该信息。

 

2) /var/named/named.ca

不需要修改

 

3) /var/named/named.local

同主域名服务器的文件设置相同,提供本地回环接口的反向映射信息。

 

4) 完成以上三个工作,通过rndc命令启动服务器,就可以对内网用户提供域名解析工作了。

 

4.辅助域名服务器

辅助域名服务器平时可以分担主域名服务器的负载,当主域名服务器不能正常工作时,辅助域名服务器还可以接管主服务器的工作。辅助域名服务器通过接收网络上主域名服务器传来的数据保持与主域名服务器的同步。辅助域名服务器的配置文件不同于主服务器,需要建立三个文件:

1) vi /etc/named.conf并做如下修改:

options {

directory "/var/named";

};

zone "." IN {

type hint;

file "named.ca";

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

allow-update { none; };

};

zone "shuke.com" IN {

type slave;

file "shuke.com.zone";

masters { 10.0.0 .10; };

};

zone " 0.0.10 .in-addr.arpa" IN {

type slave;

file " 0.0.10 .local";

masters { 10.0.0 .10; };

};

说明:本地域祝基辛吸取和反向解析区设置为slave类型,即辅助域名服务器本身不具有本地域的授权信息,只能接受主域名服务器的设置信息,向外提供本地域名解析服务,主域名服务器由masters项决定。同时,本地服务器也不用建立这两个slave区的数据文件,而是由named进程启动时自动从主DNS服务器 10.0.0 .10拷贝数据内容到从DNS服务器上。自动创建这两个主要文件。

 

2) /var/named/named.ca

辅助域名服务器中,此配置文件不需要修改。

 

3) /var/named/named.local

同主域名服务器设置。

 

5.调试域名服务器

nslookupdig命令

 

五、文件服务

1.FTP常用命令:

![cmd [args]]:在本地机中执行交互shell后退回到ftp环境,如!ls *.zip

account [password]:提供登陆远程系统成功后访问系统资源所需的密码;

append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名;

ascii:使用ASCII类型的传输方式;

bin:是用二进制传输方式;

bye:推出FTP会话过程;

case:在使用mget时,将远程主机文件名中的大写转为小写字母;

cd remote-dir:进入远程主机目录;

cdup:进入远程主机目录的父目录;

close:中断与远程服务器的ftp会话,与open对应;

delete remote-file:删除远程主机文件;

dir [remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件;

get remote-file[local-file]:将远程主机的文件remote-file传至本地硬盘的local-file

hash:没传输1024字节,显示一个hash符号"#"

help[cmd]:显示ftp内部命令cmd的帮助信息,如help get

lcd [dir]:将本地工作目录切换至dir

ls [remote-dir][local-file]:显示远程目录remote-dir,并存入本地文件local-file

mdelete [remote-file]:删除远程主机文件;

mget remote-files:传输多个远程文件;

mkdir dir-name:在远程主机中创建目录;

mput local-file:将多个文件传输至远程主机;

newer file-name:如果远程主机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件;

open host[port]:建立指定的ftp服务器连接,可指定连接端口;

put local-file[remote-file]:将本地文件local-file传至远程主机;

pwd:显示远程主机的当前工作目录;

quit:同bye,退出ftp会话;

reget remote-file[local-file]:类似于get,但若local-file存在,则从上次传输中断处续传;

rhelp [cmd-name]:请求获得远程主机的帮助;

rstatus [file-name]:若未指定文件名,则显示远程主机的状态,否则显示文件状态;

rename [from][to]:更改远程主机的文件名;

restart marker:从指定的标志marker处,重新开始get或者put,如restart 130

rmdir dir-name:删除远程主机目录;

size file-name:显示远程主机文件大小,如size idle 7200

status:显示当前ftp状态;

system:显示远程主机的操作系统类型;

user user-name[password][account]:向远程主机表明自己的身份,需要密码时,必须输入密码,如useranonymous my@email

 

2.vsftp基本配置

1) 使用安装包:vsftpd- 1.1.3 -8

 

2) 配置vsftpd服务

/etc/vsftpd/vsftpd.conf

内容:

anonymous_enable=YES:是否允许匿名ftp,如否,则选择NO

local_enable=YES:是否允许本地用户登陆;

local_umask=022:设置本地用户的文件掩码为缺省022,默认值为077

anon_upload_enable=YES:是否允许匿名上传文件;

anon_mkdir_write_enable=YES:是否允许匿名用户有创建目录的权利;

dirmessage_enable=YES:是否显示目录说明文件,缺省是YES,但需要手工创建.message文件;

xferlog_enable=YES:是否记录ftp传输过程;

connect_from_port_20=YES:是否确信端口传输来自20ftp-data);

chown_username=username:是否改变上传文件的属主,如果需要,则输入一个系统用户名,可以把上传的文件都改成root属主;

xferlog_file=/var/log/vsftpd.logftp传输日志的路径和名字缺省是/var/log/vsftpd.log

xferlog_std_format=YES:是否使用标准的ftp xferlog模式;

idle_session_timeout=600:设置缺省的断开不活跃会话时间;

data_connection_timeout=120:设置数据传输超时时间;

nopriv_user=ftpsecure:运行vsftpd需要的非特权系统用户,缺省是nobody

ascii_upload_enable=YES:是否使用ASCII方式上传文件;

ascii_download_enable=YES:是否使用ASCII方式下载文件;

ftpd_banner=Welcome to shuke FTP service:定制欢迎信息;

deny_email_enable=YES:是否禁止匿名用户使用某些邮件地址;

banned_email_file=/etc/vsftpd.banned_emails:如果禁止匿名用户使用某些邮件地址,则输入禁止的邮件地址的路径和文件名;

chroot_list_enable=YES:是否将系统用户限制在自己的home目录下;

chroot_list_file=/etc/vsftpd.chroot_list:如果限制系统用户在home目录下,则在列表中写出被禁止的用户列表;

max_clients=Number:如果以standalone模式启动,那么,只有$Number个用户可以连接,其他用户将得到错误信息,缺省是0,不限制用户数;

message_file:设置访问一个目录时获得的目录信息文件的文件名,缺省是.message

 

3) /etc/vsftpd.ftpusers

此文件记录簿允许访问ftp服务器的用户名单。

 

4) /etc/vsftpd.user_list

此文件中指定的用户缺省情况下不能访问FTP服务器,在/etc/vsftpd/vsftpd.conf中设置了userlist_enable=NO的时候,仅允许列表中的用户访问FTP服务器。

 

5) 启动ftp服务进程

/etc/rc.d/init.d/vsftpd start

 

6) 设置vsftpd服务开机自动启动

chkconfig --level 2345 vsftpd on

 

3.wu-ftp的设置

1) 安装包

wu-ftpd- 2.6.2 -13984cl

 

2) 安装之后,会在/bin目录下生成5个可执行文件:

ftpdFTP服务器程序;

ftpshut:用于关闭ftp服务器程序;

ftpcount:显示目前在线人数;

ftpwho:查看目前ftp服务器的连接情况;

ckconfig:检查ftp服务器的设置是否正确;

 

3) /etc下生成了5个配置文件:

/etc/ftpusers:禁止登陆FTP服务器的用户名;

/etc/ftpconversions:用户在通过FTP传输文件的同时,对文件进行压缩打包处理,使用默认即可;

/etc/ftphosts:禁止指定机器登陆;

/etc/ftpgroups:在access配置文件中开放SITE命令后,可以使用SITE GROUP命令来制定一个增强的访问组合相应的密码,若输入的密码有效,该用户将变为/etc/ftpgroups文件中设置的组的成员,具有该组的访问权限;

/etc/ftpaccess:最重要的配置文件,关系到ftp服务器能否运行。

内容:

loginfails[次数]:设置当用户登陆到ftp服务器时,允许用户数错密码的次数;

class[类名][real/guest/anonymous][IP地址]:设置FTP服务器上用户的类别,并可对客户端的IP地址进行限制,允许某部分的IP地址或全部的IP地址访问;

limit[类别][人数][时间][文件名]:设置指定的时间内指定的类别允许连接的指定人数上限,当达到人数上限的时候,显示指定文件的内容;

message [文件名称][指令]:当用户执行所指定的指令时,系统将指定的文件内容显示出来;

passwd-check[none/trivial/rfc822][enforce/warn]:设置对匿名用户anonymous的密码使用方式。none-不做密码验证,trival-只要输入的密码中含有字符"@"就可以登陆,rfc822-表示密码一定要符合RFC822中所规定的E-mail格式才能登陆,enfore-表示输入的密码不符合以上的指定格式就不允许登陆,warn-表示密码不符合规定只出现警告信息,可以登陆;

logcommand [real/guest/anonymous]:设置哪些用户登陆后的操作记录在文件/usr/adm/xferlog中;

delete [yes/no][real/guest/anonymous]:设置是否允许指定用户使用delete命令删除文件,允许缺省,例如:delete no anonymous,guest

overwrite [yes/no][real/anonymous/guest]:设置是否允许指定用户覆盖同名文件,缺省是允许,但一般不允许匿名用户覆盖文件;

chmod [yes/no][real/anonymous/guest]:设置是否允许指定用户使用chmod命令更改文件权限,缺省是允许;

alias [目录别名][目录名]:给指定目录设置一个别名,在切换目录时,就可以使用较短的目录别名;

deny [IP地址/域名][说明文件]:允许用户根据对方的IP地址或主机名阻断别人对登陆FTP服务器的访问。

 

4) 启动wu-ftpd服务器

/etc/rc.d/init.d/xinetd restart

 

4.NFS网络文件系统

1) linux系统之间的访问

mount servername:/exported dir /dir to mount -t nfs

举例:主机shuke1运行了NFS,将自己的/pub目录共享了,那么,客户机shuke2就可以通过如下命令装载客户机shuke1的共享资源,并将其挂接到/home/inport目录下:

[root@shuke2root]#mount shuke1:/pub /home/inport

客户机在mount服务器的时候,可以传递一些命令选项,如:

[root@shuke2root]#mount -o r shuke1:/pub /home/inport

表示把shuke1主机上的/pub目录挂在本地的/home/inport目录下,只读。

其他选项如下:

rw:可以读写;

bg:后台安装;

intr:出现问题时,可以中断;

soft:允许经过retrans次尝试后,停止安装,返回失败信息。

卸载服务器文件系统:

#umount /home/inport

 

2) linuxwindows之间的访问

windows客户端安装nfsxe.exe软件。

 

3) 配置NFS服务器

创建或修改配置文件/etc/exports

exports的每一行由导出路径、客户列表以及每个客户名后尾随的访问选项构成,访问选项是可选的,语法如下:directory hostname (options)...

举例:/usr ws1.shuke.com

说明:导出路径/usr提供给ws1.shuke.com访问。

举例:/usr ws1.shuke.com (rw)

说明:导出路径/usr提供给ws1.shuke.com访问,具备读写权限。

举例:/pub (ro,insecure.all_squash)

说明:只允许对该分区做只读操作,任何机器都可以访问,允许用大于1024的端口进行连接,并把所有的连接id映射到nobody

选项说明如下:

insecure:允许用户可以从大于1024的端口进行连接;

secure:限制用户只能从小于1024的端口进行连接;

ro:只读,在没指定ro的情况下,默认是可写的;

noaccess:让导出路径的所有子目录对客户不可见,用户连接到这样的路径后,看到的是个空目录;

root_squash:设置服务器应答在某个NFS挂装分区上的根用户发出的请求,可以把从客户机的根用户的设置映射成nobody

no_root_squash:设置服务器在缺省情况下不理会在某个NFS挂装分区上的根用户发出的请求;

rw:可写,这是缺省的。

 

4) 启动和停止NFS服务

第一次启动NFS时,使用启动脚本:/etc/rc.d/init.d/nfs startNFS会在内核建立一系列的NFS相关进程,在修改过/etc/exports后,需要高速NFS进程重新检查配置信息,重新启动NFS进程。

 

5.建立Samba服务器

完成一个实例,安装、配置和启动samba服务器,向外共享tmp,home,pub,printer资源,并使它们可以被指定的客户机访问,启动samba服务器后,首先在本地使用测试工具测试samba服务器提供的服务,然后互相进行远程测试和访问共享资源试验结果。以IP192.168.0.6,主机名shuke为例进行试验,本试验任务通过主机名或IP地址进行访问,因而对DNS解析不做要求。

 

1) 安装Samba安装包:

samba- 2. 2.7a -7.9.0

redhat-config-samba- 1.0.4 -1

samba-common- 2. 2.7a -7.9.0

samba-client- 2. 2.7a -7.9.0

samba-swat- 2. 2.7a -7.9.0

 

2) 编辑lmhost配置文件

[root@shuke samba]#vi /etc/samba/lmhosts

 

127.0.0.1 localhost

192.168.0.1 xpserver

192.168.0.6 smbserver

192.168.0.2 host2

192.168.0.3 host3

~

 

3) 修改/etc/samba/smb.conf文件,按照如下修改:

[global]

workgroup=TEST GROUP

server string=Samba Server

hosts allow=192.168.0.

load printers=yes

printcap name=/etc/printcap

guest account=guest

log file=/usr/local/samba/var/log.%m

max log size=50

encrypt passwords=yes

security=user

socketoptions=TCP_NODELAY

[homes]

comment=HomeDirectories

browseable=yes

writable=yes

[printers]

comment=AllPrinters

path=/usr/spool/samba

browseable=yes

guestok=no

writable=no

printable=yes

[tmp]

comment=Temporaryfile

path=/tmp

readonly=no

public=yes

[public]

comment=PublicZone

path=/var/pub

public=yes

writable=yes

 

4) 新建一个pub共享资源的目录/var/pub,并修改权县为任意用户都可读写;

[root@shuke samba]#mkdir /var/pub

[root@shuke samba]#chmod 777 /var/pub

 

5) 建立一个访问samba服务器的账号,smbuser,首先它应该成为系统账号;

[root@shuke samba]#useradd smbuser

[root@shuke samba]#passwd smbuser

 

6) 将系统账号smbuser添加到samba账号数据库中,使其仅对应于Windows用户winuser

[root@shuke samba]#smbadduser smbuser:winuser

 

7) 启动samba服务器守护进程;

[root@shuke samba]#/etc/rc.d/init.d/smb

 

8) 使用sambaclient命令,测试对方的samba服务器的共享资源;

[root@shuke samba]#sambaclient -L smbserver -U smbuser

added interface ip=192.168.0.6 bcast=192.168.0.255 namsk=255.255.255.0

 

9) 使用smbmount命令装载远程主机的samba共享资源,并列出资源内容;

[root@shuke samba]#smbmount //smbserver/homes /mnt -o username=smbuser

 

10) 因为homes资源是可写的,可以在此建立目录,然后使用smbumount命令卸载资源;

[root@shuke samba]#mkdir /mnt/newdir

[root@shuke samba]#smbumount /mnt

 

11) 启动windows系统,以winuser的用户名登陆系统,打开网上邻居-整个网络-Microsoft Windows Network,可看到Test group

六、代理/防火墙

1.iptables规则表

Filter(针对过滤系统)INPUTFORWARDOUTPUT

NAT(针对地址转换系统)PREROUTINGPOSTROUTINGINPUTOUTPUT

Mangle(针对策略路由和特殊应用)OUTPUTPOSTROUTING

 

2.安装包

iptables- 1. 2.7a -2

 

3.配置防火墙

1) 命令语法

Usge: iptables [-t table] -[ADC] chain rule-specification [options]

iptables [-t table] -I chain [rulenum] rule-specification [options]

iptables [-t table] -R chain rulenum rule-specification [options]

iptables [-t table] -D chain rulenum [options]

iptables [-t table] -[LFZ] [chain] [options]

iptables [-t table] -N chain

iptables [-t table] -X [chain]

iptables [-t table] -P chain target [options]

iptables [-t table] -E old-chain-name new-chain-name

规则操作参数说明:

-A:在所选择的链末添加一条或更多规则;

 

-D:从所选链中删除一条或更多规则。有两种方法:把被删除规则指定为链中的序号(第一条序号为1),或者指定为要匹配的规则;

 

-R:从选中的链中取代一条规则。如果源地址或目的地址转换为多地址,该命令会失败。规则序号从1开始;

 

-I:根据给出的规则序号,向所选链中插入一条或更多规则。所以,如果规则序号为1,规则会插入链的头部。这也是不指定规则序号时的默认方式;

 

-L:现实所选链的所有规则。如果没有所选链,将显示所有链。也可以和z选项一起用,这是链会自动列出和归零;

 

-F:清空所选链。这等于把所有规则一个个删除;

 

-Z:把所有链的包以及字节的计数器清空;

 

-N:根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在;

 

-X:删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前必须删除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非内建的链;

 

-P:设置链的目标规则;

 

-E:根据用户给出的名字对指定链进行重名名;

 

规则定义参数说明:

-p [!]protocol

规则或者包检查(待查包)的协议。指定协议可以是TCPUDPICMP中的一个或者全部,也可以是数值,代表这些协议中的某一个。当然也可以使用在/etc/protocols中定义的协议名。在协议名前加上"!"表示相反的规则。数字0相当于所有allProtocol all会匹配所有协议,而且这是缺省时的选项。在和check命令结合时,all可以不被使用;

 

-s[!]address[/mask]

指定源地址,可以是主机名、网络名和清楚地IP地址。mask说明可以是网络掩码或清楚的数字,在网络掩码的左边指定网络掩码左边"1"的个数,因此,mask值为24等于255.255.255.0。在指定地址前加上"!"说明指定了相反的地址段。标志--src是这个选项的简写;

 

-d[!]address[/mask]

指定目标地址,要获取详细说明请参见-s标志的说明。标志--dst是这个选项的简写;

 

-j target

指定规则的目标:也就是说包匹配应当做什么。目标可以为ACCEPT(通过)、DROP(删除)、RETURN(返回)、REDIRECT(重新指向)、SNAT(源地址转换)、DNAT(目标地址转换)、MASQUERADE(伪装)等,还可以是用户自定义链。如果规则的这个选项被忽略,那么匹配的过程不会对包产生影响,不过规则的计数器会增加;

 

-i[!][name]

待选的可接受包接口名称,包通过该接口接收(在链INPUTFORWORDPREROUTING中进入的包)。当在接口名前使用"!"说明后,指的是相反的名称,如果接口名后面加上"+",则所有以次接口名开头的接口都会被匹配。如果这个选项被忽略,会假设为"+",那么将匹配任意接口;

 

-O[!][NAME]

这是包经由该接口送出的可选的出口名称,包通过该口输出(在链FORWARDOUTPUTPOSTROUTING中送出的包)。其他设置同上。

 

2) 匹配规则扩展选项:

tcp:当指定-p tcp,且未指定其他匹配的扩展,则装载这些扩展。

--source-port[!][port[:port]]

源端口或端口范围指定。可以是服务名或端口号。使用格式端口:端口也可以指定包含的(端口)范围。如果忽略首端口号,默认是0,如果忽略末端口号,默认是65535,如果第二个端口号大于第一个,则他们进行交换。这个选项可以使用--sport的别名;

--destionation-port[!][port:[port]]

目标端口或端口范围指定。这个选项可以使用--dport别名来代替;

 

--tcp-flags[!]mask comp

匹配指定的TCP标记。第一个参数是要检查的标记,一个用逗号分开的列表,第二个参数是用逗号分开的标记表,是必须设置的。标记如:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(送入)ALLNONE

命令iptables -A FORWARD -p tcp --tcp-flags SYN, ACK, FIN, RST SYN只匹配那些设置了SYN标记而没有设置ACKFINRST标记的包。

 

udp:当指定-p icmp且未指定其他匹配的扩展时,则装载这些扩展。

--icmp-type[!]typename:这个选项允许指定ICMP类型,可以是一个数值型的ICMP类型,或者是某个由命令"iptables -p icmp -h"所显示的ICMP类型名。

 

mac

--mac-source[!]address:匹配物理地址。必须是XX:XX:XX:XX:XX这样的格式。注意,他只对来自以太设备并进入PREROUTINGFORWORDINPUT链的包有效。

 

limit:这个模块匹配标志用来对网络数据的通过速率进行标记,他和LOG目标结合使用,给出有限的登陆数。当达到这个极限值时,使用这个扩展包的规则将进行匹配。(除非使用了!标记),他的扩展选项包括:

--limit rate:最大平均匹配速率,可赋的值有"/second""/minute""/hour""/day"这样的单位,默认是"3/hour"

--limit-burst number:待匹配包初始个数的最大值。若前面指定的极限还没达到这个数值,则该数字加1。默认值是5

 

multiport:这个模块匹配一组源端口或目标端口,最多可以指定15个端口。只能和-p tcp或者-p udp连着使用:

--source-port[port[,port]]:如果源端口是其中一个给定端口,则匹配;

--destination-port[port[,port]]:如果目标端口是其中一个给定端口,则匹配;

--port[port[,port]]:若源端口和目的端口相等并与某个给定端口相等,则匹配。

 

owner:此扩展为本地生成包匹配包的创建者,只能用于OUTPUT链,而且,有一些包(如ICMP ping应答)还可能没有所有者,因此永远不会匹配:

--uid-owner userid:如果给出有效的user id,那么匹配他的进程产生的包;

--gid-owner groupid:如果给出有效的group id,那么匹配它的进程产生的包;

--sid-owner sessionid:根据给出的会话组成匹配该进程产生的包。

 

REJECT:作为对匹配的包的相应,返回一个错误的包,其他情况下和DROP相同。此目标只适用于INPUTFORWARDOUTPUT链,以及调用这些链的用户自定义链。这几个选项控制返回的错误包的特性:

--reject-with type:其中的type可以是icmp-net-unreachableicmp-host-unreachableicmp-port-unreachableicmp-porto-unreachableicmp-net-prohibited或者icmp-host-prohibited,该类型会返回相应的ICMP错误信息(默认是port-unreachable)。选项echo-reply也是允许的;它只能用于指定ICMP ping包的规则中,生成ping的回应。

 

SNAT:这个目标只适用于nat表的POSTROUTING链。它规定修改包的源地址(此连接以后所有的包都会被影响),停止对规则的检查:

--to-source <ipaddr>[<ipaddr>][:port-port]

可以指定一个单一的新IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp或者-p udp的规则里)。如果未指定端口范围,源端口是512以下的端口惠被安排为其他的512以下的端口;5121024之间的端口会被安排为1024以下的,其他端口会被安排为1024或以上。如果可能,端口不会被修改;

--to-destiontion <ipaddr>[<ipaddr>][:port-port]

可以指定一个单一的新的IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp或者-p udp的规则里)。如果未指定端口范围,目标端口不会被修改。

 

MASQUERADE:只用于nat表的POSTROUTING链。只能用于动态获取ip(拨号)连接:如果拥有静态IP地址,要用SNAT。伪装相当于给包发出时所经过接口的IP地址设置一个映像,当借口关闭时,连接会终止。这是因为,当下一次拨号时,未必是相同的接口地址(以后所有建立的连接都将关闭)。他有一个选项:

--to-ports <port>[<port>]:指定使用的源端口范围,覆盖默认的SNAT源地址选择。这个选项只适用于指定了-p tcp或者-p udp的规则。

 

REDIRECT:只适用于nat表的PREROUTINGOUTPUT链,以及只调用他们的用户定义链。他修改包的目标IP地址来发送包到机器自身(本地生成的包被安置为地址127.0.0.1),包含一个选项:

--to-ports <port>[<port>]:指定使用的目的端口或端口范围:不指定的话,目标端口不会被修改。只能用于指定了-p tcp或者-p udp的规则。

 

3) 包过滤设置

举例:

假如有这样一个局域网,内部IP地址范围192.168.1.1-254,网关地址为192.168.1.1,绑定在eth0接口上,同时,网关具有外部Internet地址为 10.25.0 .7,绑定在eth1接口上,防火墙就位于网关上,通过它的设置,对流经防火墙的网络包进行过滤处理。同时,在局域网内部有一台WWW服务器,他的内部地址为192.168.1.2,他被设置为可以接受外部的网络用户访问。

 

首先清空所有的规则链,并设置规则链的默认策略为DROP,即丢弃所有的网络数据包。

iptables -F

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

 

新增用户者自定义规则链bad_tcp_packetsallowedicmp_packets

iptables -N bad_tcp_packets

iptables -N allowed

iptables -N icmp_packets

 

下面定义bad_tcp_packets规则链的规则:将要求重导向的网络连接记录起来,然后将报文丢弃(防止本地机器被其他主机作为入侵跳板,侵入别的主机):

iptables -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j LOG --log-level INFO --log-prefix "New not syn:"

iptables -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j DROP

 

下面定义allowed规则链的规则:允许要求连接的网络数据包或相应包进入,将其与网络数据包丢弃:

iptables -A allowed -p TCP --syn -j ACCEPT

iptables -A allwoed -p TCP -m state --state ESTABLLSHED,RELATED -J ACCEPT

IPTABLES -A allowed -p TCP -j DROP

 

下面定义icmp_packets规则链的规则:允许ping网络数据包进入,将其余的网络数据包丢弃:

iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT

iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

 

INPUT链,过滤要到达防火墙的网络数据包。

进入防火墙主机的TCP网络数据包必须先进行bad_tcp_packets过滤:

iptables -A INPUT -p TCP -j bad_tcp_packets

 

WAN进入防火墙主机的ICMP网络数据包,必须先进行icmp_packets过滤,这是为了避免黑客传送不完整的IP网络数据包,系统会相应ICMP网络数据包,以通知对方,导致主机位置被侦测出来:

iptables -A INPUT -p ICMP -i eth1 -j icmp_packets

 

LAN进入防火墙主机的全部单播和广播的网络数据包,均会放行:

iptables -A INPUT -p ALL -i eth0 -d 192.168.1.1 -j ACCEPT

iptables -A INPUT -p ALL -i eth0 -d 192.168.1.255 -j ACCEPT

 

LAN进入防火墙主机的DHCP网络数据包,予以放行,只有当防火墙担任DHCP时才使用:

iptables -A INPUT -p UDP -i eth0 --dport 67 --sport 68 -j ACCEPT

 

WAN进入防火墙主机的所有网络数据包,检查是否为响应网络数据包,若是则予以放行:

iptables -A INPUT -p ALL -d 10.25.0 .7 -m state --state ESTABLISHED,RELATED -j ACCEPT

 

限制过滤规则的检测频率为每分钟平均流量三个网络数据包(超过)上限的网络数据包将暂停检测,并将瞬间流量设定为一次最多处理三个网络数据包(超过上限的网络数据包将丢弃不予处理),这类网络数据包通常是黑客用来进行拒绝服务攻击:

iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "IPT INPUT packet died:"

 

FORWAD链,过滤要通过防火墙的网络数据包

通过防火墙的TCP网络数据包必须先进行bad_tcp_pcakets过滤:

iptables -A FORWAD -P TCP -J bad_tcp_packets

 

LAN要到WAN的网络数据包均放行:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

 

WANLAN的网络数据包仅放行应答网络数据包:

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

 

允许来自WANPING网络数据包,递送到局域网内的WWW服务器:

iptables -A FORWARD -p ICMP -i eth1 -o eth0 -d 192.168.1.2 -j icmp_packets

 

允许来自WANHTTP,HTTPS网络数据包,递送到局域网的WEB服务器:

iptables -A FORWARD -p TCP -i eth1 -o eth0 -d 192.168.1.2 -m multiport --dport 80,443 -j allowed

 

限制过滤规则的检测频率为每分钟平均流量3各网络数据包(超过上限的网络数据包将暂停检测),并将瞬间流量设定为一次最多处理3个数据包(超过上限的网络数据包将被丢弃不予处理),这类网络数据包通常是黑客用来进行拒绝服务攻击:

iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died:"

 

OUTPUT链,过滤从防火墙送出的网络数据包。

从防火墙送出的TCP网络数据包必须先进行bad_tcp_packets过滤:

iptables -A OUTPUT -p TCP -j bad_tcp_packets

 

对于过滤通过的TCP包和其他类型的包,均会放行:

iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT

iptables -A OUTPUT -p ALL -s 192.168.1.1 -j ACCEPT

iptables -A OUTPUT -p ALL -s 10.25.0 .7 -j ACCEPT

 

限制过滤规则的检测频率为每分钟平均流量3各网络数据包(超过上限的网络数据包将暂停检测),并将瞬间流量设定为一次最多处理3个数据包(超过上限的网络数据包将被丢弃不予处理),这类网络数据包通常是黑客用来进行拒绝服务攻击:

iptables -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died:"

 

4.NAT配置

1) 目的NAT(DNAT)

DNAT在外部数据包进入防火墙后且路由之前进行,他把该数据包的目的地址改为内部局域网的地址,然后路由该数据包进入到局域网内部主机。

举例:

iptables -t nat -A PREROUTING -t tcp -d 10.25.0 .7 --dport 80 -i eth1 -j DNAT --to 192.168.1.2:80

说明:可以路由到达防火墙的访问80端口(即WWW服务器)的数据包的目的地址改为192.168.1.2

 

2) NAT(SNAT)

SNAT主要用来更改从防火墙发出的数据包的源地址,使得来自局域网的私有地址通过防火墙后,更改为防火墙具有的外部地址,以便数据接收方接收数据后,能够找到正确的回复地址。

举例:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 10.25.0 .7

说明:更改所有来自192.168.1.0/24的数据包的源IP地址为 10.25.0 .7

 

注意:系统在经过路由及过滤等处理后,直到数据包要送出时,才进行SNAT,有一种SANT的特殊情况是IP伪装,通常建议在用拨号上网时使用,也就是在合法IP地址不固定的情况下使用。

举例:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

说明:这样可以保证局域网内部的用户能够所有通过拨号服务器连接到INTERNET

 

5.缓存代理squid

1) 安装包

squid-2.5.STABLE1-2

 

2) 主要配置文件

/etc/squid/squid.conf

内容:

http_port:指定了squid监听客户请求的端口,默认值是3128。要使用代理,建议这个端口值和运行squid的机器ip地址一起使用;

举例:http_port 192.168.0.2:3128

说明:squid绑定在ip地址192.168.0.2上,端口为3128

 

cache_mgr:当代理页面发生错误时,代理服务器将向这个配置项登记的用户发送邮件消息,将它配置为管理员的实际邮件地址;

举例:cache_mgr shuke@shuke.com

说明:当代理页面发生错误,给shuke@shuke.com发送消息。

 

http_access:允许HTTP访问,这个是主要的访问控制列表。默认拒绝所有的访问。

举例:http_access allow all

说明:接受所有访问。

 

cache_dir:定义磁盘缓存空间,以存储访问过的页面或其他资源的拷贝。

格式:cache_dir Type Directory-Name Fs-specific-data [options]

说明:

Type:存储类型,一般设置为ufs

Directory-Name:代表缓存的位置,默认的设置是cache_dir ufs /var/spool/squid 100 16 256,其中,100代表缓存空间最大为 100M 16256代表缓存目录下的一级和二级目录数目。

 

启动命令:/etc/rc.d/init.d/squid start

 

客户端需要进行的设置:

IE浏览器选项-局域网设置-选中代理服务器和对本地地址不使用代理服务器,填写代理的IP地址和端口号。

 

3) squid.conf13个配置选项:

NETWORK OPTIONS (有关的网络选项)

OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM (作用于邻居选择算法的有关选项)

OPTIONS WHICH AFFECT THE CACHE SIZE (定义cache大小的有关选项):

LOGFILE PATHNAMES AND CACHE DIRECTORIES (定义日志文件的路径及cache的目录)

OPTIONS FOR EXTERNAL SUPPORT PROGRAMS (外部支持程序选项)

OPTIONS FOR TUNING THE CACHE (调整cache的选项)

TIMEOUTS (超时)

ACCESS CONTROLS (访问控制)

ADMINISTRATIVE PARAMETERS (管理参数)

OPTIONS FOR THE CACHE REGISTRATION SERVICE cache注册服务选项)

HTTPD-ACCELERATOR OPTIONS HTTPD加速选项)

MISCELLANEOUS (杂项)

DELAY POOL PARAMETERS (延时池参数)

 

网络选项:

tcp_incoming_address指定监听来自客户或其他squid代理服务器的绑定ip地址;

tcp_outgoing_address指定向远程服务器或其他squid代理服务器发起连接的ip地址

udp_incoming_addressICP套接字指定接收来自其他squid代理服务器的包的ip地址 udp_outgoing_addressICP套接字指定向其他squid代理服务器发送包的ip地址;

缺省为没有绑定任何ip地址。该绑定地址可以用ip指定,也可以用完整的域名指定。

 

交换空间设定选项:

cache_swap_low (percent, 0-100)

cache_swap_high (percent, 0-100)

说明:squid使用大量的交换空间来存储对象。那么,过了一定的时间以后,该交换空间就会用完,所以还必须定期的按照某种指标来将低于某个水平线的对象清除。squid使用所谓的最近最少使用算法LRU)来做这一工作。当已使用的交换空间达到cache_swap_high时,squid就根据LRU所计算的得到每个对象的值将低于某个水平线的对象清除。这种清除工作一直进行直到已用空间达到cache_swap_low。这两个值用百分比表示,如果你所使用的交换空间很大的话,建议你减少这两个值得差距,因为这时一个百分点就可能是几百兆空间,这势必影响squid的性能。缺省为:

cache_swap_low 90

cache_swap_high 95

 

maximum_object_size

说明:大于该值得对象将不被存储。如果你想要提高访问速度,就请降低该值;如果你想最大限度地节约带宽,降低成本,请增加该值。单位为K,缺省值为:

maximum_object_size 4096 KB

 

有关日志的选项:

cache_access_log

说明:指定客户请求记录日志的完整路径(包括文件的名称及所在的目录),该请求可以是来自一般用户的HTTP请求或来自邻居的ICP请求。缺省值为:cache_access_log /var/log/squid/access.log,如果你不需要该日志,可以用以下语句取消:cache_access_log none

 

cache_store_log

说明:指定对象存储记录日志的完整路径(包括文件的名称及所在的目录)。该记录表明哪些对象被写到交换空间,哪些对象被从交换空间清除。缺省路径为:cache_log /var/log/squid/cache.log,如果你不需要该日志,可以用以下语句取消:cache_store_log none

 

cache_log

说明:指定squid一般信息日志的完整路径(包括文件的名称及所在的目录)。缺省路径为:cache_log /var/log/squid/cache.log

 

cache_swap_log

说明:该选项指明每个交换空间的“swap.log”日志的完整路径(包括文件的名称及所在的目录)。该日志文件包含了存储在交换空间里的对象的元数据(metadata)。通常,系统将该文件自动保存在第一个“cache_dir”说定义的顶级目录里,但是你也可以指定其他的路径。如果你定义了多个“cache_dir”,则相应的日志文件可能是这样的:

cache_swap_log.00

cache_swap_log.01

cache_swap_log.02

后面的数字扩展名与指定的多个“cache_dir”一一对应。需要注意的是,最好不要删除这类日志文件,否则squid将不能正常工作;

 

pid_filename

说明:指定记录squid进程号的日志的完整路径(包括文件的名称及所在的目录)。缺省路径为

pid_filename /var/run/squid.pid,如果你不需要该文件,可以用以下语句取消:pid_filename none

 

debug_options

说明:控制作日志时记录信息的多寡。可以从两个方面控制:section控制从几个方面作记录;level控制每个方面的记录的详细程度。推荐的方式(也是缺省方式)是:debug_options ALL,1,即,对每个方面都作记录,但详细程度为1(最低)

 

log_fqdn on|off

说明:控制在 access.log 中对用户地址的记录方式。打开该选项时,squid记录客户的完整域名,取消该选项时,squid记录客户的ip地址。注意,如果打开该选项会增加系统的负担,因为squid还得进行客户ipDNS查询。缺省值为:log_fqdn off

 

有关外部支持程序的选项:

ftp_user

说明:设置登录匿名ftp服务器时的提供的电子邮件地址,登录匿名ftp服务器时要求用你的电子邮件地址作为登录口令(更多的信息请参看本书的相关章节)。需要注意的是,有的匿名ftp服务器对这一点要求很苛刻,有的甚至会检查你的电子邮件的有效性。缺省值为:ftp_user Squid@

 

ftp_list_width

说明:设置ftp列表的宽度,如果设得太小将不能的浏览到长文件名。缺省值为:ftp_list_width 32

 

cache_dns_program

说明:指定DNS查询程序的完整路径(包括文件的名称及所在的目录)。缺省路径为:cache_dns_program /usr/lib/squid/dnsserver

 

dns_children

说明:设置DNS查询程序的进程数。对于大型的登录服务器系统,建议该值至少为10。最大值可以是32,缺省设置为5个。注意,如果你任意的降低该值,可能会使系统性能急剧降低,因为squid主进程要等待域名查询的结果。没有必要减少该值,因为DNS查询进程并不会消耗太多的系统的资源;

 

dns_nameservers

说明:指定一个DNS服务器列表,强制squid使用该列表中的DNS服务器而非使用/etc/resolv.conf文件中定义的DNS服务器。你可以这样指定多个DNS服务器:dns_nameservers 10.0.0 .1 192.172.0.4

缺省设置为:dns_nameservers none

 

unlinkd_program

说明:指定文件删除进程的完整路径。缺省设置为:unlinkd_program /usr/lib/squid/unlinkd

 

pinger_program

说明:指定ping进程的完整路径。该进程被squid利用来测量与其他邻居的路由距离。该选项只在你启用了该功能时有用。缺省为:pinger_program /usr/lib/squid/pinger

 

authenticate_program

说明:指定用来进行用户认证的外部程序的完整路径。squid的用户认证功能我们将在后面的章节讲述。缺省设置为不认证。

 

用户访问控制选项:

acl

说明:定义访问控制列表。

定义语法为:

acl aclname acltype string1 ...

acl aclname acltype "file" ...

当使用文件时,该文件的格式为每行包含一个条目。

acltype 可以是 src dst srcdomain dstdomain url_pattern urlpath_pattern time port proto method browser user 中的一种。

 

分别说明如下:

src 指明源地址。可以用以下的方法指定:

acl aclname src ip-address/netmask ... (客户ip地址)

acl aclname src addr1-addr2/netmask ... (地址范围)

 

dst 指明目标地址。语法为:

acl aclname dst ip-address/netmask ... (即客户请求的服务器的ip地址)

 

srcdomain 指明客户所属的域。语法为:

acl aclname srcdomain foo.com ... squid将根据客户ip反向查询DNS

 

dstdomain 指明请求服务器所属的域。语法为:

acl aclname dstdomain foo.com ... 由客户请求的URL决定。

注意,如果用户使用服务器ip而非完整的域名时,squid将进行反向的DNS解析来确 定其完整域名,如果失败就记录为“none”

 

time 指明访问时间。语法如下:

acl aclname time [day-abbrevs] [h1:m1-h2][hh:mm-hh]

day-abbrevs

S - Sunday

M - Monday

T - Tuesday

W - Wednesday

H - Thursday

F - Friday

A - Saturday

h1:m1 必须小于 h2:m2,表达示为[hh:mm-hh]

 

port 指定访问端口。可以指定多个端口,比如:

acl aclname port 80 70 21 ...

acl aclname port 0-1024 ... (指定一个端口范围)

 

proto 指定使用协议。可以指定多个协议:

acl aclname proto HTTP FTP ...

 

method 指定请求方法。比如:

acl aclname method GET POST ...

 

各类超时设置选项:

negative_ttl time-units

说明:设置消极存储对象的生存时间。所谓的消极存储对象,就是诸如连接失败"404 Not Found"等一类错误信息。缺省设置为5分钟;

举例:negative_ttl 5 minutes

 

positive_dns_ttl time-units

说明:设置缓存成功的DNS查询结果的生存时间。缺省为6小时;

举例:positive_dns_ttl 6 hours

 

negative_dns_ttl time-units

说明:设置缓存失败的DNS查询结果的生存时间。缺省为5分钟;

举例:negative_dns_ttl 5 minutes

 

connect_timeout time-units

说明:设置squid等待连接完成的超时值。缺省值为2分钟;

举例:connect_timeout 120 seconds

 

read_timeout time-units

说明:如果在指定的时间内squid尚未从被请求的服务器读入任何数据,则squid将终止该客户请求。缺省值为15分钟;

举例:read_timeout 15 minutes

 

request_timeout

说明:设置在建立与客户的连接后,squid将花多长时间等待客户发出HTTP请求。缺省值为30秒。

举例:request_timeout 30 seconds

 

client_lifetime time-units

说明:设置客户在与squid建立连接后,可以将该连接保持多长时间;

注意,因为客户建立的每个连接都会消耗一定的系统资源,所以如果你是为一个大型网络提供代理服务的话,一定要正确地修改该值。因为如果同一时间的连接数量太大的话,可能会消耗大量的系统资源,从而导致服务器宕机。缺省值为1天,该值太大了,建议根据你自己的情况适当减小该值。

举例:client_lifetime 1 day

 

half_closed_clients on/off

说明:有时候由于用户的不正常操作,可能会使与squidTCP连接处于半关闭状态,这时候,该TCP连接的发送端已经关闭,而接收端正常工作。缺省地,squid将一直保持这种处于半关闭状态的TCP连接,直到返回套接字的读写错误才将其关闭。如果将该值设为off,则一旦从客户端返回“no more data to read”的信息,squid就立即关闭该连接;

举例:half_closed_clients on

 

pconn_timeout

说明:设置squid在与其他服务器和代理建立连接后,该连接闲置多长时间后被关闭。缺省值为120秒;

举例:pconn_timeout 120 seconds

 

ident_timeout

说明:设置squid等待用户认证请求的时间。缺省值为10秒;

举例:ident_timeout 10 seconds

 

shutdown_lifetime time-units

说明:当收到SIGTERM 或者 SIGHUP 信号后, squid将进入一种shutdown pending的模式,等待所有活动的套接字关闭。在过了shutdown_lifetime所定义的时间后,所有活动的用户都将收到一个超时信息。缺省值为30秒;

举例:shutdown_lifetime 30 seconds

 

管理参数选项:

cache_mgr

说明:设置管理员邮件地址。缺省为管理员;

举例:cache_mgr root

 

cache_effective_user / cache_effective_group

说明:如果用root启动squidsquid将变成这两条语句指定的用户和用户组。缺省变为squid用户和squid用户组。注意这里指定的用户和用户组必须真是存在于/etc/passwd中。如果用非root帐号启动squid,则squid将保持改用户及用户组运行,这时候,你不能指定小于1024http_port

举例:

cache_effective_user squid

cache_effective_group squid

 

visible_hostname

说明:定义在返回给用户的出错信息中的主机名;

举例:visible_hostname www-cache.foo.org

 

unique_hostname

说明:如果你有一个代理服务器阵列,并且你为每个代理服务器指定了同样的“visible_hostname”,同时你必须为它们指定不同的“unique_hostname”来避免“forwarding loops ”(传输循环)发生。

 

其它杂项:

1. dns_testnames

说明:设置进行DNS查询测试,如果第一个站点解析成功则立即结束DNS查询测试。如果你不愿意进行DNS查询测试,就不要去掉缺省的设置;

举例:#dns_testnames netscape.com internic.net nlanr.net microsoft.com

 

logfile_rotate

说明:通常,squid会定期的将日志文件更名并打包。比如正在使用的日志文件为access.log,squid会将其更名并打包为access.log.1.gz;过了一定时间后,squid又会将access.log.1.gz更名为access.log.2.gz并将当前的日志文件更名并打包为access.log.1.gz,以此循环。logfile_rotate所指定的数字即为打包并备份的文件的数量,当达到这一数目时,squid将删除最老的备份文件。缺省值为10。如果你想手动来进行这些操作,你可以用logfile_rotate 0来取消自动操作;

 

err_html_text

说明:用该语句定义一个字符串变量,可以用%L在返回给用户的错误信息文件中引用。错误信息文件通常在/etc/squid/errors目录中,这是一些用HTML写成的脚本文件,你可以自己修改它;

 

deny_info

说明:你可以定制自定义的拒绝访问信息文件,并且可以和不同的用户列表相关联。当用户被http_access相关规则拒绝时,squid可以向用户显示你自定义的相应的拒绝访问信息文件;

举例:

Usage: deny_info err_page_name acl

比如:

deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys

 

memory_pools on|off

说明:如果你将该项设为on,则squid将保留所有已经分配(但是未使用)的内存池以便在将来使用。缺省为on

举例:memory_pools on

 

log_icp_queries on|off

说明:设置是否对ICP请求作日志。如果你的系统负载很大,你可以用off来取消该功能;

举例:log_icp_queries on

 

always_direct

说明:该选项允许你指定某些用户类,squid将这些用户类的请求直接转发给被请求的服务器;

举例:

always_direct allow|deny [!]aclname ...

如:直接转发FTP请求可以这样设置:

acl FTP proto FTP

always_direct allow FTP

 

never_direct

说明:与always_direct相反;

举例:

Usage: never_direct allow|deny [!]aclname ...

比如,为了强制除了本地域的其他用户使用代理服务器,你可以这样设置:

acl local-servers dstdomain foo.net

acl all src 0.0.0 .0/0.0.0.0

never_direct deny local-servers

never_direct allow all

 

icon_directory

说明:指明向用户传送错误信息时所用到的图标文件的目录;

举例:icon_directory /usr/lib/squid/icons

 

error_directory

说明:指明向用户传送错误信息所用到的错误描述文件的目录。

举例:error_directory /etc/squid/errors

 

5.透明代理的设置

编辑/etc/squid/squid.conf,修改参数如下:

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

运行/etc/rc.d/init.d/squid reload使设置生效,然后,使用iptables工具添加两条端口转向和网络地址转换规则:

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

这条命令将把所有局域网用户通过Linux接入服务器访问WWW服务的访问请求,重定向到工作在3128端口的squid处理;

 

iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 166.32.129.10

这条命令是把所有来自192.168.1.0网段,并且将要从eth0网络接口(即internet连接)发出的数据包的源地址,更改为这个代理服务器所设置的外部IP地址166.32.129.10

设置完毕,在局域网内的用户,将计算机的网关更改为192.168.1.2,则可以获得透明代理的服务了。

 

七、DHCP服务器、NIS系统、SNMP应用

1.DHCP服务器的配置

1) 安装包:

dhcp-3.0pll-23

 

2) 配置文件:

/etc/dhcpd.conf

注意,当dhcp-3.0pll-23安装包安装之后,提供了一个配置文件模板,地址如下:

/usr/share/doc/dhcp-3.0pll/dhcpd.conf.sample

 

举例:

shared-network MyNet {

  default-lease-time 28800;

  max-lease-time 43200;

  option domain-name         "shuke.com";

  option domain-name-servers     202.106.0.20

  subnet 192.168.1.0 netmask 255.255.255.0 {

  option routers             192.168.1.1;

option broadcast-address 192.168.1.255;

    range 192.168.1.1 192.168.1.254;

  }

  subnet 192.168.2.0 netmask 255.255.255.0 {

  option routers             192.168.2.1;

option broadcast-address 192.168.1.255;

    range 192.168.2.2 192.168.2.254;

  }

}

group {

  option routers             192.168.1.254;

  option subnet-mask         255.255.255.0;

 

  option domain-name         "example.com";

  option domain-name-servers     192.168.1.1;

 

  option time-offset         -18000;   # Eastern Standard Time

 

  host apex {

    option host-name "apex.example.com";

    hardware ethernet 00:A0:78:8E:9E:AA;

    fixed-address 192.168.1.4;

  }

}

 

4) 配置文件中设置项的说明:

shared-network:声明下面所列的子网位于同一个物理网络之内,即192.168.1.0192.168.2.0子网是属于同一个物理网络的,name为该共享网络名;

default-lease-time:缺省租期时间;

max-lease-time:最大租期时间;

option domain-name:域名信息;

option domain-name-servers:域名服务器;

subnet:声明一个子网,声明包括子网号和子网掩码,在括号中设置该子网的属性,必须包括一个range语句来提供子网中可供分配的IP地址;

option routers:网关地址;

option broadcast-address:广播地址;

range:可以提供分配的IP地址范围;

group:给一组特定的客户提供不同的选项行为;

option subnet-mask:子网掩码;

host:为指定单独主机分配固定的地址;

option host-name:为机器分配主机名;

hardware ethernet:主机上网卡的硬件地址;

fixed-address:分配的固定地址。

 

5) 租期数据库

DHCP服务器上,/var/lib/dhcp/dhcpd.leases文件中存放着DHCP的客户租期数据库。在DHCP服务器第一次运行之前,应该手工创建该文件,命令如下:

[root@shukedhcp root]#touch /var/lib/dhcp/dhcpd.leases

注意:DHCP服务器开始运行以后,该文件不应该手工修改。每个新近分配的IP地址的DHCP租期信息都会自动存储在租期数据库中。该信息包括租期的长度;IP地址被分配的对象;租期的开始和终止日期;以及用来检索租期的网卡的MAC地址。

 

6) 启动停止DHCP服务器

[root@shukedhcp root]#dhcp start

[root@shukedhcp root]#dhcp stop

 

7) 修改监听网卡

编辑/etc/sysconfig/dhcpd文件,把网络接口卡的名称添加到DHCPDARGS的列表中。

举例:

# Command line options here

DHCPDARGS=eth0

 

8) DHCP的转发代理

用来把无DHCP服务器的子网内的DHCPBOOTP请求转发给其他子网内的一个或多个DHCP服务器。dhcp软件包提供了一个转发代理工具dhcrelay,在本地启动它,即可进行DHCP请求转发。

命令:[root@shukedhcp root]#dhcrelay shukedhcp

 

2.NIS系统

实例:下载最新的NIS源代码软件包,分别在服务器端和客户端编译安装,配置通过NIS获得帐户信息,启动服务器和客户端守护进程,进行查询测试。

服务器端使用软件包:ypserv- 2.12.1 .tar.gzyp-tools-2.8.tar.gz

1) 将软件包下载拷贝至/usr/local/src目录,并解压缩:

[root@nis src]#tar xzvf ypserv- 2.12.1 .tar.gz

[root@nis src]#tar xzvf yp-tools-2.8.tar.gz

 

2) 进入ypserv源代码根目录,配置ypserv安装目录为/usr/local/ypserv,然后编译、检测和安装二进制代码:

[root@nis ypserv- 2.12.1 ]#./configure --prefix=/usr/local/ypserv

[root@nis ypserv- 2.12.1 ]#make

[root@nis ypserv- 2.12.1 ]#make check

[root@nis ypserv- 2.12.1 ]#make install

 

3) 进入yp-tools源代码根目录,配置其安装目录为/usr/local/ypserv,然后编译、检测和安装二进制代码:

[root@nis yp-tools-2.8]#./configure --prefix=/usr/local/ypserv

[root@nis yp-tools-2.8]#make

[root@nis yp-tools-2.8]#make check

[root@nis yp-tools-2.8]#make install

 

4) 安装完成,使用domainname命令设置域名为shuke

[root@nis ypserv]#domainname shuke

[root@nis ypserv]#domainname

shuke

 

5) 在服务器端添加一个wanghui的新用户,设置密码,用来在客户端进行登陆测试:

[root@nis ypserv]#useradd wanghui

[root@nis ypserv]#passwd wanghui

 

6) 使用vi命令新建/etc/ypserv.conf文件,配置ypserv的映像访问控制信息,一般设置为允许局域网内主机访问:

[root@nis ypserv]#vi /etc/ypserv.conf

 

192.168.0.0/255.255.255.0 :* :* :none

~

 

7) 使用ypserv命令启动NIS服务器:

[root@nis ypserv]#/usr/local/ypserv/sbin/ypserv

 

8) 进入/var/yp目录,使用make命令生成新的映像文件:

[root@nis ypserv]#cd /var/yp

[root@nis yp]#make

 

9) NIS服务器配置完毕,接着进行客户端配置:

 

10) 客户端使用软件包ypbind-mt- 1.17.2 .tar.gzyp-tools-2.8.tar.gz,解压缩:

[root@client src]#tar xzvf ypbind-mt- 1.17.2 .tar.gz

[root@client src]#tar xzvf yp-tools-2.8.tar.gz

 

11) 进入到ypbind-mt源代码目录,配置ypbind-mt安装文件到/usr/local/ypbind目录,然后编译、检测、安装二进制文件:

[root@client ypbind-mt- 1.17.2 ]#./configure --prefix=/usr/local/ypbind

[root@client ypbind-mt- 1.17.2 ]#make

[root@client ypbind-mt- 1.17.2 ]#make check

[root@client ypbind-mt- 1.17.2 ]#make install

 

12) 进入到yp-tools源代码目录,配置ypbind-mt安装文件到/usr/local/ypbind目录,然后编译、检测、安装二进制文件:

[root@client yp-tools-2.8]#./configure --prefix=/usr/local/ypbind

[root@client yp-tools-2.8]#make

[root@client yp-tools-2.8]#make check

[root@client yp-tools-2.8]#make install

 

13) 设置NIS服务器在本地主机表中的记录,使用vi命令编辑/etc/hosts文件,添加如下一个行:

 

192.168.0.6 nis

~

 

14) 使用vi命令新建文件/etc/yp.conf,配置NIS域名和服务器信息:

[root@client ypbind-mt- 1.17.2 ]#vi /etc/yp.conf

 

domain shuke server nis

~

 

15) 使用ypbind命令启动客户端NIS守护进程,监测客户端应用程序对NIS信息的请求和处理:

[root@client ypbind-mt- 1.17.2 ]#/usr/local/ypbind/sbin/ypbind

 

16) 使用ypwhich命令测试与服务器的连接,连接成功则显示服务器的主机名:

[root@client root]#/usr/local/ypbind/bin/ypwhich

nis

 

17) 使用ypcat命令列出服务器的映像文件信息:

[root@client root]#/usr/local/ypbind/sbin/ypcat -x

 

18) 使用vi命令修改/etc/nsswitch.conf文件,在passwd项添加nis查找方法:

[root@client root]#vi /etc/nsswitch.conf

 

passwd: files nis

shadow: files

group: files

 

#hosts: db files nisplus nis dns

hosts: files dns

 

19) 退出本地登陆,使用服务器账户shuke从本地登陆,系统通过nis获得该帐户信息,登陆成功表明试验成功。

 

3.安装配置SNMP

在这个实例中,使用RedHat9.0自带的net-snmp软件包作为底层网络流量检测工具,上层使用mrtg统计和现实网络流量数据,同时通过apache服务器的配合,提供远程监测的功能。

1) 安装包

net-snmp- 5.0.6 -17

 

2) 安装完成后,为了能够与mrtg配合工作,需要修改/etc/snmp/snmpd.conf配置文件信息:

[root@shuke root]#vi /etc/snmp/snmpd.conf

access notConfigGroup "" any   noauth exact systemview none none

修改为:

access notConfigGroup "" any   noauth exact mib2 none none

然后去掉下面一行的注释号(#):

#view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc

 

3) 修改完成,保存并退出,使用/etc/rc.d/init.d/snmpd脚本程序启动snmpd守护进程:

[root@shuke root]#/etc/rc.d/init.d/snmpd start

 

4) 下载mrtg- 2.10.13 .tar.gz源代码包,编辑并安装:

[root@shuke src]#tar xvzf mrtg- 2.10.13 .tar.gz

[root@shuke src]#cd mrtg- 2.10.13

[root@shuke mrtg- 2.10.13 ]#./configure --prefix=/usr/local/mrtg

[root@shuke mrtg- 2.10.13 ]#make

[root@shuke mrtg- 2.10.13 ]#make install

 

5) 安装完成之后,需要通过WWW服务器访问的目录,而RH9默认安装的Apache服务器的文档目录是/var/www/html,因此在这个目录下面新建mrtg目录:

[root@shuke mrtg- 2.10.13 ]#mkdir /var/www/html/mrtg

 

6) 使用mrtg的工具程序cfgmaker生成mrtg的配置文件:

[root@shuke mrtg]#/usr/local/mrtg/bin/cfgmaker --global "WorkDir: /var/www/html/mrtg" /

> --global "Options[_]: growright,bits" /

> --ifref=ip /

> --output /etc/mrtg.cfg /

> public@192.168.0.4

 

7) 配置完成,使用mrtg命令启动监测程序,初始会出现日志警告信息,连续运行三次后就会消失:

[root@shuke mrtg]#/usr/local/mrtg/bin/mrtg /etc/mrtg.cfg

 

8) 运行mrtg程序生成流量信息图后,利用mrtghtml页面,生成工具indexmaker生成可供用户浏览的web页面:

[root@shuke mrtg]#/usr/local/mrtg/bin/indexmaker --output=/var/www/html/mrtg/index.html /

> --title=NetTraffics /

> /etc/mrtg.cfg

 

9) 所有信息生成完毕后,启动WWW服务器:

[root@shuke mrtg]#/etc/rc.d/init.d/httpd start

 

10) 在任意一台可以访问上面设置的服务器的机器中,使用http://192.168.0.4/mrtg地址访问,可以查看到相应的网络流量统计信息。

 

八、网络安全

1.配置TCP Wrappers

1) 安装包

telnet-0.17-25

telnet-server-0.17-25

 

2) telnet-server软件包将会在/etc/xinetd.d目录下安装一个配置文件telnet,为能够启动telnet服务的监听,必须配置该文件:

[root@shuke root]#vi /etc/xinetd.d/telnet

 

3) 更改配置文件中的"disable"项为"no",即可使用xinetd服务:

disable = no

 

4) 修改完成后保存并退出编辑器,重新启动xinetd服务接受telnet的改变,开始进行telnet服务的监听:

[root@shuke root]#/etc/rc.d/init.d/xinetd restart

 

5) 从客户端尝试登陆telnet服务器,显示连接成功,输入用户名和密码可以登陆:

[root@shuke1 root]#telnet 192.168.0.6

 

6) 设置telnet服务接受tcpd的安全监控,编辑/etc/xinetd.d/telnet文件,修改"server"项的值,并添加"server_args"项:

server = /usr/sbin/tcpd

server_args = /usr/sbin/in.telnetd

 

8) 修改完成后,重新启动xinetd服务:

[root@shuke root]#/etc/rc.d/init.d/xinetd restart

 

9) 首先设置/etc/hosts.deny文件,拒绝所有通过tcpd控制的外部访问:

[root@shuke root]#vi /etc.hosts.deny

 

All:All

~

 

10) 从远程主机连接telnet服务器,显示连接被拒绝;

 

11) 编辑/etc/hosts.allow文件,指定允许访问的客户机的IP地址:

[root@shuke root]# vi /etc/hosts.allow

 

in.telnetd:192.168.0.28

~

 

12) 在远程客户端访问服务器的telnet服务,显示连接成功:

[root@shuke1 root]#telnet 192.168.0.6

 

2.安装配置OpenSSH

1) 下载源代码安装包openssh-3.8p1.tar.gz,解压缩并进行编译安装:

[root@shuke src]#tar xvzf openssh-3.8p1.tar.gz

[root@shuke root]#cd openssh-3.8p1

[root@shuke openssh-3.8p1]#./configure --prefix=/usr/local/openssh --with-pam

[root@shuke openssh-3.8p1]#make

[root@shuke openssh-3.8p1]#make install

 

2) 安装完成后,为了支持普通密码认证,需要复制源代码树根目录下面的contrib/redhat/sshd.pam文件复制到/etc/pam.d目录:

[root@shuke openssh-3.8p1]#cp contrib/redhat/sshd.pam /etc/pam.d/sshd

 

3) 在远程客户端使用ssh命令登陆SSH服务器,如果是第一次登陆时,由于本地没有服务器的标示信息,因而显示不能建立连接:

[root@shuke1 root]#ssh -l wanghui 192.168.0.5

...

...

Are you sure you want to continue connecting (yes/no)?

 

4) 键入"yes"继续进行连接,则服务器的标识信息会记录在本地的ssh文件中,下次连接时不再询问相关信息:

...

...

Write failed: Broken pipe

 

5) 再次登陆,登陆成功:

[root@shuke1 root]#ssh -l wanghui 192.168.0.5

 

6) 为了使用密钥登陆验证,在客户端使用ssh-keygen命令生成密钥对:

[root@shuke1 root]#/usr/local/openssh/bin/ssh-keygen -d

...

...

The key fingerprint is:

...

 

7) 使用ftp连接到SSH服务器,并将/root/.ssh/id_dsa.pub公钥文件上载到服务器中,然后,在任一准备通过客户端登陆的用户的主目录(如:/home/wanghui)下,新建.ssh目录,把id_dsa.pub文件拷贝到该目录中;

 

8) 更改该文件的名称为authorized_keys2,并设置他的拥有者为该用户,权限为644

[root@shuke .ssh]#mv ld_dsa.pub authorized_keys2

[root@shuke .ssh]#chown wanghui.wanghui authorized_keys2

[root@shuke .ssh]#chmod 644 authorized_keys2

 

9) 设置完成后,不需要重新启动服务器进程,在客户端再次使用ssh命令登陆服务器,则会出现要求输入提取密钥的密码:

[root@shuke1 root]#ssh -l wanghui 192.168.0.5

Enter passphrase for key '/root/.ssh/id_dsa':

 

10) 输入在上次生成密钥时输入的密码,ssh提取本地密钥进行密码验证,如果正确则登陆成功:

[root@shuke1 root]#ssh -l wanghui 192.168.0.5

Enter passphrase for key '/root/.ssh/id_dsa':

[root@shuke wanghui]$

 

 

3.安装配置VPN完整举例(网络转)

架设linux下最简单的VPN系统

 

本文是根据我公司的实际应用情况写的,但是稍加修改即可应用到很多地方,系统运行的两个月来,证明还是安全可靠稳定的。

 

我公司在北京,但是主要设备都在南京电信的一个主要IDC里,那边有我们的两个PIX525UR(做了故障切换),上面做了严格的访问控制,因此,为了方便公司里的移动,出差及在家的员工办公,才有了做VPN系统的想法。好使具有相应权限的使用者从个人PC通过支持MPPE128的加密隧道连接至公司的VPN Server,再通过VPN Server将数据转发到南京IDC的我公司应用网络,其间的连接也是基于IPSEC的安全VPN隧道。由此可以保证我公司的所有应用需求的安全性和便捷性。

1) 硬件资源:

服务器一台

PIX 525UR防火墙一台

 

2) 软件资源:

Mandrake 9.2

kernelmod

pptpd

Super-freeswan

iptables

公网ip地址

 

注:我在测试了几种LINUX(包括Redhat,SuSE,Mandrake,Astaro)后,感觉Mandrake是最简单,最稳妥的平台。

 

下面就是安装过程:

1) 操作系统安装:

安装过程无特殊要求,在选择安装组件的时候除开发工具外其它一概不选,主要是出于安全性考虑。

 

2) 安装kernelmod

tar zxvf kernelmod- 0.7.1 .tar.gz

cd /kernelmod

./ kernelmod.sh

 

3) 安装pptpd

升级ppp

rpm –Uvh ppp- 2.4.2 -0.1b3.i386.rpm

安装pptpd

rpm –ivh pptpd- 1.1.4 -1b4.fr.i386.rpm

 

4) 安装Super-freeswan

rpm –ivh super-freeswan-1.99.8-8.2.100mdk.i586.rpm

 

5) 升级iptables

rpm –Uvh iptables- 1.2.8 -12.i386.rpm

 

下面是最主要的配置过程:

 

1) 操作系统的配置:

升级openssh

关闭不需要的服务(sendmail isdn...)

编辑/etc/sysctl.conf

net.ipv4.ip_forward = 0=>1

net.ipv4.conf.default.rp_filter = 1=>0

 

2) Pix配置文件(VPN部分)

access-list inside_outbound_nat0_acl permit ip "南京IP" 255.255.255.0 "公司VPN用户的IP" 255.255.255.0

access-list outside_cryptomap_20 permit ip "南京IP" 255.255.255.0 "公司VPN用户的IP" 255.255.255.0

nat (inside) 0 access-list inside_outbound_nat0_acl

sysopt connection permit-ipsec

crypto ipsec transform-set ESP-3DES-MD5 esp-3des esp-md5-hmac

crypto map outside_map 20 ipsec-isakmp

crypto map outside_map 20 match address outside_cryptomap_20

crypto map outside_map 20 set peer "VPN服务器的IP"

crypto map outside_map 20 set transform-set ESP-3DES-MD5

crypto map outside_map interface outside

isakmp enable outside

isakmp key "密码" address "VPN服务器的IP" netmask 255.255.255.255 no-xauth no-config-mode

isakmp identity address

isakmp policy 20 authentication pre-share

isakmp policy 20 encryption 3des

isakmp policy 20 hash md5

isakmp policy 20 group 2

isakmp policy 20 lifetime 28800

 

3) PPtP配置:

/etc/pptpd.conf

speed 115200

option /etc/ppp/options

localip "公司VPN用户的网关(例如 10.0.1 .1)"

remoteip "公司VPN用户的IP(例如 10.0.1 .200-250)"

 

/etc/ppp/chap-secrets

用户名” "VPN服务器的IP" “密码” 10.0.1 .20X (200

/etc/ppp/options

lock

name "VPN服务器的IP"

mtu 1490

mru 1490

proxyarp

auth

-chap

-mschap

+mschap-v2

require-mppe

ipcp-accept-local

ipcp-accept-remote

lcp-echo-failure 3

lcp-echo-interval 5

ms-dns X.X.X.X

deflate 0

 

4) Super-freeswan配置

/etc/freeswan/ipsec.conf

 

# basic configuration

config setup

# THIS SETTING MUST BE CORRECT or almost nothing will work;

# Tfaultroute is okay for most simple cases.

interfaces="ipsec0=eth0"

# Debug-logging controls: "none" for (almost) none, "all" for lots.

klipsdebug=none

plutodebug=none

# Use auto= parameters in conn descriptions to control startup actions.

plutoload=%search

plutostart=%search

# Close down old connection when new one using same ID shows up.

uniqueids=yes

nat_traversal=yes

 

# defaults for subsequent connection descriptions

# (these defaults will soon go away)

conn Tfault

keyingtries=0

disablearrivalcheck=no

authby=rsasig

#leftrsasigkey=%dnsondemand

#rightrsasigkey=%dnsondemand

 

conn pix

left="VPN服务器的IP"

leftnexthop="VPN服务器的网关"

leftsubnet="公司VPN用户的IP(例如 10.0.1 .0/32)"

right="南京PIX525URIP"

rightnexthop=%direct

rightsubnet="南京IP"

authby=secret

pfs=no

auto=start

 

/etc/freeswan/ipsec.secrets

"VPN服务器的IP" "南京PIX525URIP": PSK "密码"

5) iptables配置(样本),用以限制公司VPN用户的访问权限:

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1 .201/32 -d "南京IP" -j MASQUERADE

 

service iptables save

 

注意:

1) 添加用户名及修改密码:

/etc/ppp/chap-secrets

2) 用户权限设定 编辑修改iptables规则

3) 如果公司路由器上有access-list,则添加:

permit 47 any host 219.238.213.244

4) 校验IPsec服务是否启动成功:

ipsec verify

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux服务器的配置可以包括以下方面: 1. 硬件配置:选择适合服务器用途的硬件,如处理器、内存、硬盘等。确保服务器的硬件满足计算和存储需求。 2. 操作系统选择:选择适合你需求的Linux发行版,如Ubuntu、CentOS等。根据服务器的用途和技术要求,选择合适的操作系统版本。 3. 安全配置:确保服务器安全是非常重要的。你可以采取一些措施来提高服务器的安全性,如禁用不必要的服务配置防火墙、启用SSH密钥认证、定期更新系统补丁等。 4. 网络配置:为服务配置网络设置,确保服务器能够正常通信。这包括为服务器分配静态IP地址、配置DNS设置、设置网络接口等。 5. 软件安装和配置:根据需求安装所需的软件包,并进行相应的配置。例如,安装web服务器(如Nginx或Apache)、数据库服务器(如MySQL或PostgreSQL)等。 6. 监控和日志管理:设置监控工具和日志管理,以便实时监控服务器的系统性能和运行状况,并对日志进行适当管理。 7. 备份策略:制定备份策略,确保服务器数据的安全性和可恢复性。定期备份重要数据,并测试还原过程。 8. 远程访问和管理:设置远程访问和管理机制,以便能够远程登录和管理服务器。这可以通过SSH、远程桌面等方式来实现。 9. 性能优化:对服务器进行性能优化,以提高其效率和响应速度。这可能涉及调整内核参数、优化数据库配置、使用缓存等技术手段。 10. 定期维护和更新:定期进行服务器维护和更新,包括安全补丁、软件升级等。确保服务器始终处于最新的稳定状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值