Unix/BSD

关注公众号 jb51net

关闭
操作系统 > Unix/BSD >

FreeBSD学习指南

佚名

FreeBSD 的版本命名规则

A-主要版本编号

B-次要版本编号

C-修正版本编号

TAG-名称标签,如 RELEASE、STABLE、CURRENT

install.iso 安装时用这一片即可!mini.iso 也是可以用来安装,但里面没有一些常用的 Package ,所以档案比较小。

硬盘分割表的概念

IDE 硬盘在 FreeBSD 中的代号分别是 ad0 、ad1 ,在 FreeBSD 可将主要扇区分割成许多逻辑扇区 logical slice ,a 在传统上是指根目录,b 是指 swap 虚拟内存,c 指整个主要扇区,d 指整个硬盘, efgh 可以任意使用!

改变 inode 的设定

按 N 并输入参数 newfs -i 1024 -b 4096 -f 1024

安装套件,除了最后二项 local 和 XFree86 外,全部都选。

在 Configuration Menu 所做的设定都会存放在 /etc/rc.conf 中,可以修改这个档案!

安装完 FreeBSD 要安装的软件 vim-lite less gnuls pkg_tree elm+ME bash2 unzip nmap wget ncftp3 pstree

FreeBSD 的目录结构

/etc/defaults 放置预设的系统设定文件。
/etc/mtree 目录权限的设定文件。
/etc/periodic 每天、每周、每月定时要执行的设定。
/usr/ports FreeBSD 移植软件的原始程序目录,我们可以从这个目录中找到自己想要的软件来快速安装
/usr/src 放置 BSD 或其它软件原始程序代码的目录。
/var/account 使用者执行过的指令记录文件。
/var/db 重要的系统数据库。
/var/quotas 档案系统使用容量限制的记录。

 

修改、编译核心

/usr/src/sys/i386/conf 中有二个档案,一个是 GENERIC ,是安装时用的一般核心,一个是 LINT 则是完整的核心及说明。

编译新的核心

options QUOTA

pseudo-device snp 可以监看使用者

#NAT

一、options IPFIREWALL

#支援 NAT

二、options IPDIVERT

#下面这一行是预设允许所有的封包通过,如果没有这一行,就必须在 /etc/rc.firewall 中设定封包的规则

三、options IPFIREWALL_DEFAULT_TO_ACCEPT

#下面一行是让您可以在 ipfw 中设定要记录哪些封包,如果没有这一行,这算设定了要留下记录也不会有作用

四、options IPFIREWALL_VERBOSE

#防火墙

除了 NAT 的一、三、四外

#这一行是限制每一条规则所要记录的封包数量,因为同样的规则可能有许多的记录,加上这一条可以使同样的记录重复数减少,以避免记录文件爆。

options IPFIREWALL_VERBOSE_LIMIT=10

#下面这一行是用来支持封包转向,当您要使用 fwd 动作时必须要有这一项设定

options IPFIREWALL_FORWARD

#如果要使用 pipe 来限制频宽,必须加入下列选项以支持 dummynet

options DUMMYNET

编译核心第一种方法

config GENERIC

cd ../../compile/GENERIC/

make depend;make;make install

第二种方法

在 FreeBSD 4.2-STABLE 之后可以用的新的方法

cd /usr/src

make buildkernel KERNCONF=GENERIC

make installkernel KERNCONF=GENERIC

cd /;rm -rf /usr/src/sys/compile/GENERIC

sync;sync;sync;reboot

新的核心有问题时

当编译完核心重新开机,无法进入 FreeBSD 时,要在开机时看到倒数计时的时候,按 Enter 以外的键,会出现 boot:,这时候就打 unload 来将已加载的数据移除,再打 /kernel.old 以使用旧的核心。万一连旧的核心也不能开机,就要使用安装时的核心,/kernel.GENERIC,如果您想删掉坏的核心,由于 kernel 文件有特殊的档案属性,必须先下指令修改属性才能删除。

chflags noschg /kernel

 

建立友善的使用者接口

编辑 /etc/csh.cshrc 或 /.cshrc 使用 tcsh 或 csh shell 时

加入 alias ls gnuls --color -F

如果想要新增使用时都能加入,则要修改 /usr/share/skel/dot.cshrc

想改 PATH 及一些设定也是在 /usr/share/skel 下的一些档案修改

常见的环境变量

EDITOR:设定文书编辑器

PAGER:设定分页程序 more 或 less

支持中文的环境,只支持 tcsh csh

编辑 /etc/csh.login

setenv ENABLE_STARTUP_LOCALE zh_TW.Big5

# 使用远程登入时才能打出中文

setenv LC_CTYPE is_IS.ISO_8859-1

# Console 下用才能打出中文

setenv LANG zh_TW.Big5

如果是 bash 要改用

export ENABLE_STARTUP_LOCALE='zh_TW.Big5'

export LC_CTYPE='is_IS.ISO_8859-1'

export LANG='zh_TW.Big5'

取消登入后,会自动秀出的一段文字 修改 /etc/motd Message Of The Day

如果不希望 motd 内容出现 FreeBSD 的版本信息,可以在 /etc/rc.conf 中加入

update_motd="YES"

FreeBSD 的账号管理

adduser 新增使用者

pw groupadd newgroup 新增一个群组

pw groupshow newgroup 显示成果

vipw

FreeBSD 使用 shadow passowrd 的方式来保护密码文件,只有 root 才可以读取编码过的密码文件 /etc/master.passwd ,但是这并不是系统用来验证的档案,为了加快速度,FreeBSD 将该文件做成数据库 /etc/spwd.db 及 /etc/pw.db ,因此修改完 master.passwd 后要下指令 pwd_mkdb 来将 master.passwd 做成数据库,但使用 vipw 就会自动完成这项工作!

 

rmuser 删除使用者

FreeBSD 磁盘配额

一、在核心设定中加入 options QUOTA 这一行,并重新编译核心。

二、在 /etc/rc.conf 加入 enable_quotas="YES"

三、在 /etc/fstab 中加入要启动磁盘限制的分割区中加入参数 userquota

        Options 下 rw 的后面加入 rw,userquota

好了之后重新开机,再下 edquota -u username 来限制

在 4.5-RELEASE 中,开机内定会检查所有使用者的 quota ,如果不要检查,就在 /etc/rc.conf 中加入 check_quotas="NO"。

FreeBSD 网络相关指令

ftp -a 以匿名者自动登入

sockstat 查看主机 internet 或 domain socket 。您可以用来查询有谁连到您的机器中,由哪一个网络服务接收,该网络服务的 PID 是多少,还可以查询本机开放了哪些 Port ,提供了哪些服务

 /etc 下的档案介绍

csh.cshrc 这是 csh tcsh 用的内定 .cshrc 档案,也就是进入该 Shell 时会加载的设定。

csh.login 这是 csh tcsh 用的内定 .login 档案,也就是进入该 Shell 时会加载的设定。

defaults/make.conf 通常会复制一份到 /etc 下,用 port 安装软件时,会参考这个档案,把里面的 FTP 站台改成距离国内比较近的。

login.access 用来设定登入系统使用者的权限,我们可以在这里设定是否允许使用者从 console 登入、从不同的区域登入的权限等。

login.conf 这个档案用来控制不同账号可以使用的系统资源,它会依照使用者在密码文件中的 login class 来寻找相对的 class 设定,如果没有分类则使用 default 的默认值。修改完该档后,要执行 cap_mkdb /etc/login.conf 重建系统数据库。

newsyslog.conf 用来定期检查 /var/log/ 的档案,设定当 log 到一定大小或是定期的将旧的档案压缩备份,并删除太老旧的档案。

语法:logfilename [owner:group] mode count size when [ZB] [/pid_file] [sig_num]

 

logfilename log 文件名称
[owner:group] log 档拥有人:群组
mode 该 log 文件的权限[档案属性]
count 最多计算到多少,例如 cron 是 3 ,表示有 4 个压缩档,从 cron.0.gz 到 cron.3.gz
size 档案最大到多少即压缩备份,以 KB 计。
when 什么时候做备份,请 man newsyslog 来看详细说明。以 @ 为首代表用 ISO 8601 结构的时间格式。以 $ 为首代表使用每天、每周、每月。

$D0 每天半夜十二点

$D23 每天 23:00 时

$W0D23 每周日 23:00

$W5D16 每周五 16:00

$MLD0 每月最一天半夜十二点

$M5D6 每月第五天 6:00

[ZB] Z 表示要将该档以 gzip 压缩,B 代表该档是 binary 档。
[/pid_file] pid 文件的绝对路径
[sig_num] 要送给该 daemon 程的 signal number

FreeBSD 的软件安装

一、packages 安装

       pkg_add -v filename.tgz 扩展名是 tgz

       所有安装过的软件都会出现在 /var/db/pkg 的目录中。

       pkg_delete filename 删除软件

       pkg_info filename.tgz 查看这个软件的信息。

       pkg_info 查看系统中所有已安装软件的信息。

       pkg_tree 可以让我了解每一套软件之间的关系,不过要先安装

       cd /usr/ports/sysutils/pkg_tree

       make install clean

       pkg_tree | more 来查看各软件之间的关系。

      用 packages 安装的软件,不能马上执行,要马上能执行要先执行 rehash 或注销后再重新登入即可执行。

二、ports

       把在 A 系统上面可以正常运作的程序,修正成 B 系统上也能正常执行的工作,称为 Port。

       抓 port.tar.gz 档案回来,放在 /usr 下解压缩

      要安装哪一种软件就切换到它分类的目录中,如要安装 proftpd ,目录就在 /usr/ports/ftp/profptd 中,执行 make install 即可,它除了安装 proftpd 外,还会把缺的档案也一起抓回来安装安装完后可执行 make clean 把安装编译过程中产生的一个档案清除。

寻找需要安装的 Port

在 /usr/ports 使用 make search key="ncftp" | less

安装软件,只要在该软件的目录中执行 make deinstall 即可。

一些不常用的 make 方式

make fetch 抓回所需的原始档

make fetch-list 显示安装所需的档案

make all install 抓回原始档、编译且安装

make reinstall 若先前发生意外中断,重新尝试安装

如果安装完新的软件之后,如果使用的 Shell 是 csh 或 tcsh ,我们可能必须执行 rehash 来重建 hash table ,才能执行安装好的软件。

FreeBSD 安装 Mysql、PHP、Apache

一、安装 Mysql 用 Source Code 安装

在 /etc/group 加入 mysql:*:100:

执行 vipw 加入一行

mysql:*:100:100::0:0:Mysql User:/usr/local/mysql:/sbin/nologin

tar -xvzf mysql-3.23.52.tar.gz

cd mysql-3.23.52

./configure --prefix=/usr/local/mysql --with-charset=big5 --with-low-memory --with-named-thread-libs=-lc_r

make;make install

script/mysql_install_db

chown -R mysql:msqyl /usr/local/mysql

cd /usr/local/mysql/share/mysql

./mysql.server.start

/usr/local/mysql/bin/mysqladmin -u root -password 'xxxx';

grant all privileges on dbname.* to username@localhost IDENTIFIED BY 'password';

grant all privileges on *.* to username@localhost IDENTIFIED BY 'password';

flush privileges;

在 /etc/rc.local 加入一行

/usr/local/mysql/share/mysql/mysql.server start

备分数据库

/usr/local/mysql/bin/mysqldump -u root -p dbname > dbname.sql        备份

/usr/local/mysql/bin/mysql -u root -p dbname < dbname.sql 还原 之前可能要先把数据库建好

更改使用者密码

/usr/local/mysql/bin/mysqladmin -u root -p password newpassword

二、安装 PHP、Apache

apache_1.3.27.tar.gz

mod_fastcgi_2.2.12.tar.gz

php-4.2.3.tar.gz

gd-1.84.tar.gz

zlib-1.1.4.tar.gz

t1lib-1.3.1.tgz

freetype2-2.0.6.tgz

jpeg-6b_1.tgz

png-1.2.1.tgz

先解压缩 apache 并做一次 Apache 的组态

tar -xvzf apache-1.3.27.tar.gz

./configure --prefix=/usr/local/apache

cd ..

安装 PHP 之前先安装 GD 及其所需档案

tar -xvzf zlib-1.1.4.tar.gz

cd zlib-1.1.4

make all install

cd ..

pkg_add -v jpeg-6b_1.tgz

pkg_add -v png-1.2.1.tgz

pkg_add -v t1lib-1,3,1,tgz

pkg_add -v freetype2-2.0.6.tgz

tar -xvzf gd-1.8.4.tar.gz

cd gd-1.8.4

make install

cd ..

安装 PHP

tar -xvzf php-4.2.3.tar.gz

cd php-4.2.3

./configure --with-mysql=/usr/local/mysql --with-apache=../apache-1.3.27 --enable-track-vars --with-gd=/usr/local --enable-gd-native-ttf --with-t1lib --with-jpeg-dir=/usr/local --with-png-dir --with-freetype-dir --with-zlib-dir

make;make install

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

cd ..

安装 Apache

cd apache_1.3.27/src/modules

tar -xvzf ../../../mod_fastcgi-2.2.12.tar.gz

mv mod_fastcgi-2.2.12 fastcgi

cd ../../

./configure --prefix=/usr/local/apache --enable-shared=max --activate-module=src/modules/php4/libphp4.a --activate-module=src/modules/fastcgi/libfastcgi.a --enable-suexec --suexec-caller=nobody --suexec-docroot=/usr/local/apache/htdocs --suexec-userdir=www --suexec-logfile=/usr/local/apache/logs/suexec_log --suexec-uidmin=10 --suexec-gidmin=10

make;make install

加入对 PHP4 的支持

在 /usr/local/apache/conf/httpd.conf 加入二行

AddType application/x-httpd-php .php .phtml .php3

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

让 Apache 在开机时能够启动

在 /etc/rc.local 加入 /usr/local/apache/bin/apachectl start

在 /etc/newsyslog.conf 加入二行以压缩备份 Apache Log 档

/var/log/apache_access_log    644    7    *    $W0D1    Z

/var/log/apache_error_log    644    7    *    $W0D2    Z

安装 ProFtpd

Make sure you have the following lines in your PAM configuration file

so that ProFTPd's PAM module can authenticate users correctly.

ftpd auth    required    pam_unix.so         try_first_pass

ftpd account required    pam_unix.so         try_first_pass

ftpd session required    pam_permit.so

###

===>   Generating temporary packing list

===>   Compressing manual pages for proftpd-1.2.6

===>   Registering installation for proftpd-1.2.6

===>  SECURITY NOTE:

      This port has installed the following startup scripts which may cause

      network services to be started at boot time.

/usr/local/etc/rc.d/proftpd.sh.sample

安装 SNMP

If you want to invoke snmpd from startup, put these lines into

     /etc/rc.conf.

        net_snmpd_enable="YES"

        net_snmpd_flags=""

**** You can specify make variables as:

        NET_SNMP_SYS_CONTACT="kuriyama@FreeBSD.org"

        NET_SNMP_SYS_LOCATION="Tokyo, Japan"

        DEFAULT_SNMP_VERSION=3

        NET_SNMP_LOGFILE=/var/log/snmpd.log

        NET_SNMP_PERSISTENTDIR=/var/net-snmp

     to define default values (or overwriting defaults).  At least

     setting first two variables, you will not be prompted during

     configuration process.  Or you can set

        BATCH="yes"

     to make to avoid interactive configuration.===>   Compressing manual pages for net-snmp-5.0.6

===>   Running ldconfig

/sbin/ldconfig -m /usr/local/lib

===>   Registering installation for net-snmp-5.0.6

===>  SECURITY NOTE:

      This port has installed the following startup scripts which may cause

      network services to be started at boot time.

/usr/local/etc/rc.d/snmpd.sh

安装 NAT

修改 /etc/rc.conf

一块网络卡 ifconfig_rl0_alias0="inet 192.168.1.1  netmask 255.255.255.0"

二块网络卡 ifconfig_rl1="inet 192.168.1.1  netmask 255.255.255.0"

加入下列五行

gateway_enable="YES"

firewall_enable="YES"

firewall_type="OPEN"

natd_interface="rl0"

natd_enable="YES"

FreeBSD 指令集

cp -p 档案拷贝过去还是维持原来的权限

避免 /bin 及 /sbin 等重要执行档遭到修改,可以为这些档案设定禁止修改的 schg flag

chflags schg /bin/*

chflags schg /sbin/*

设定了 schg ,还要将 Kernel Security Level 调高到 1 以上,这样连 root 都不可以移除 flags 。

Kernel Security Level

FreeBSD 中有所谓的 Security Level ,它掌控了系统核心的行为运作。只有 root 可以使用指令提高 Security Level ,但不能降低它。如果要降低它,必须在 rc.conf 中设定,并重新开机。

Security Level 代表的意义:

-1:永远不安全模式。这是默认值。如果为 -1 ,它将永远以 Level 0 的模式执行。

0 :不安全模式。使用者或 root 可以使用 chflags 来移除「不可更动」及「只能附加」的 flags。所有的装置只能依其权限来存取。

1:安全模式。不可以移除「不可更动」及「只能附加」的 flags 。不可以手动加载或移除 LKM ,使用 /dev/mem /dev/kmem 只能只读,且不能 newfs 已挂上的档案系统

2:高度安全模式。除了和安全模式同样的限制外,不管硬盘是否挂上,都不可以 newfs。另外,Kernel Time 的改变限制在一秒内,如果超过,会记录 "Time adjust-ment clamped to +1 second".

3:网络安全模式。除了和安全模式同样的限制外,还有 IP 封包过滤的规则,而且不可以调整 dummynet 的设定。

可以利用 sysctl 来显示或设定 Security Level

sysctl kern.securelevel

 将 Security Level 设为 1

sysctl -w kernel.securelevel=1

当我们将 Security Level 设为 1 以上时,我们会发现没有办法安装新的 Kernel ,因为不能移除 schg flag ,也没有办法使用 big5con 、 X Window 等软件。如果 FreeBSD 只作 Server ,就可以把 Security Level 的值调高一点。

在开机时设定 Security Level ,可以在 /etc/rc.conf 中加入以下二行设定

#是否启动 Security Level

kern_securelevel_enable="YES"

# Level 从 -1 到 3

kern_securelevel="1"

只能用 root 使用指令提高 Security Level,但不能降低,如果要降低,必须在 /etc/rc.conf 中设定,重新开机才会生效。 

限制使用者邮件容量就是将使用者的邮件从 /var/mail 中搬移到使用者的目录中,再对使用者目录做磁盘配额的限制。

cd /var/mail

mkdir /home/username/mail

mv /var/mail/username /home/username/mail

ln -s /home/username/mail username

限制 crontab 和 at 的使用

在 /var/cron 目录中编辑 allow 的文字文件,里面的人才可以使用 cron

                                       deny 的文字文件,里面的人不可以使用 cron

at 也是一样的设定。

停止 Sendmail 在 /etc/rc.conf 中加入 sendmail_enable="NO"

使用 sysctl 来设定当外部机器要使用我们没有提供的服务时运记录下来,例如有人尝试扫我们的 Port ,或者我们没有开放 telnet ,在 /var/log/message 中便会记录下来。

#sysctl -w net.inet.tcp.log_in_vain=1

#sysctl -w net.inet.udp.log_in_vain=1

这二行加入 /etc/rc.local 中 或是在 /etc/sysctl.conf 加入下面二行

 net.inet.tcp.log_in_vain=1

net.inet.udp.log_in_vain=1

在 /etc/rc.conf 加入一行停止 inted 服务

inetd_enable="NO"

为了防止一些 DoS (Deny of Service) ,建议最好把 ICMP 重导向 ( redirect ) 的封包丢弃,可以在 /etc/rc.conf 中加入以下的设定:

# YES 表示丢弃 ICMP REDIRECT 封包

icmp_drop_redirect="YES"

# YES 表示将丢弃的封包记录下来

icmp_log_redirect="YES

 

sshd 预设并未将使用者登入的数据记录下来,可以利用修改 /etc/syslog.conf 来记录,找到 seccrity 的项目,将它修改成下面这样:

security.*;auth.info    /var/log/security

如此一来,当使用者利用 ssh 登入时,便会记录在 /var/log/security 中。

列出目前系统提供的服务

netstat -a | grep LISTEN

sysctl -a 可以列出目前 Kernel 状态值的设定

列出空间使用最多的前 5 位

du -s /home/* | sort -m | head -5

FreeBSD 有一种特别的权限控制,称之为「flags」,这些 flags 的设定可以让我们用来保护特殊的档案。可以用 ls -ol 来加以观看。

nodump 档案不可以被 dump,只有档案拥有者和 root 可以设定
sappnd 档案只可以往后附加,不能删除,只有 root 可以设定
schg 档案不可以被更动,连 root 都不能删除,只有 root 可以设定
uappnd 档案只可以往后附加,不能删除,档案拥有者和 root 才可以设定
uchg 档案不可以被更动,档案拥有者和 root 才可以设定

如果我们要解除所设定的 flags ,只要在上述的 flag 之前加上 no 即可,例如 nouchg 。

用法:chflags flags file

flags 的设定只有在 Kernel Security Level 为 -1 或 0 时才可以被更改。如果 Security Level 为 1 或 2 时就不能更动 flags 了。

FreeBSD 下的 Samba Server

tar -xvzf samba-2.2.7.tar.gz

cd samba-2.2.7/source

docs 中有许多相当有用的文件,值得一读

./configure

make;make install

启动 Samba

以 Standalone 方式

在 /etc/rc.local 中加入

smbd -D -d1

nmbd -D -d1 -G FreeBSD -n SambaServer

-D 以 Daemon 方式运行

-d1 除错记录型别

-G 显示在 Windows 之网络芳邻中的 Workgroup 名称

-n Samab Server 在 Workgroup 之内计算机名称。

以 Inetd 方式启动

修改 /etc/services ,检查是否有底下二行存在

netbios-ssn    139/tcp

netbios-ns    137/udp

/etc/inetd.conf 是否有以下二行存在

netbios-ssn stream tcp  nowait          root    /usr/local/samba/bin/smbd       smbd

netbios-ns dgram udp    wait            root    /usr/local/samba/bin/nmbd       nmbd

设定档设置在 /usr/local/samba/lib/smb.conf

Samba 的使用者账号与密码文件位于 /usr/local/samba/private 之中,档名为 smbpasswd ,如果这个档案不存在,Samba Server 将无法允许任何人登入。建立 smbpasswd 的方法有三种:

一、直接采用 SWAT 之 PASSWORD 选单,选取 Add New User 来建立。

二、使用 mksmbpasswd.sh 来转换 /etc/passwd 或是账号清单

这种方法直接把 Linux / FreeBSD 的账号密码数据文件转换成 Samba 的档案密码数据文件格式,这方法可以很快地把所有在工作站上有账号的使用者都同时在 Samba Server 使用账号开好。但是您仍旧必须要用 SWAT 的 PASSWORD 选单来更改密码。

mksmbpasswd.sh < /etc/passwd > /usr/local/samba/private/smbpasswd

采用 mksmbpasswd.sh 有一个缺点,就是会把 /etc/passwd 中所有的账号,无论是有效或是无效的都转换,所以建置出来的 smbpasswd 会很复杂。

三、

在 Windows NT 中,我们可以设定使用者名称及密码。如果在这里设定为 share,就是只使用密码;而设为 user ,则是要输入使用者名称及密码。如果我们设为 user ,Client 端在浏览网络芳邻时,Windows 会自动输入使用者名称为登入 Windows 时所用的名称,我们必须在 Samba 中加入相对的使用者密码。

For Traditional Chiese User

client code page=950

;coding system=cap

valid chars=0xb9

 

 

 

 

FreeBSD 下的 DHCP Server

tar -xvzf dhcp-3.0pl1.tar.gz

cd dhcp-3.0pl1

./configure

make all;make install

执行 /usr/sbin/dhcpd

设定档在 /etc/dhcpd.conf

内容:

# dhcpd.conf

#

# Sample configuration file for ISC dhcpd

#

 

ddns-update-style ad-hoc;

# option definitions common to all supported networks...

option domain-name "tces.ilc.edu.tw";

option domain-name-servers 140.111.152.3, 140.111.66.1, 140.111.66.10;

 

# ddns-update-style;

default-lease-time 600;

max-lease-time 7200;

 

# If this DHCP server is the official DHCP server for the local

# network, the authoritative directive should be uncommented.

#authoritative;

 

# Use this to send dhcp log messages to a different log file (you also

# have to hack syslog.conf to complete the redirection).

log-facility local7;

 

# No service will be given on this subnet, but declaring it helps the

# DHCP server to understand the network topology.

 

subnet 140.111.152.0 netmask 255.255.255.0 {

  range 140.111.152.50 140.111.152.100;

  option domain-name-servers 140.111.152.3, 140.111.66.1, 140.111.66.10;

  option domain-name "tces.ilc.edu.tw";

  option routers 140.111.152.254;

  option broadcast-address 140.111.152.255;

  default-lease-time 600;

  max-lease-time 7200;

}

 

# Hosts which require special configuration options can be listed in

# host statements.   If no address is specified, the address will be

# allocated dynamically (if possible), but the host-specific information

# will still come from the host declaration.

 

host passacaglia {

  hardware ethernet 0:0:c0:5d:bd:95;

  filename "vmunix.passacaglia";

  server-name "toccata.fugue.com";

}

 

# Fixed IP addresses can also be specified for hosts.   These addresses

# should not also be listed as being available for dynamic assignment.

# Hosts for which fixed IP addresses have been specified can boot using

# BOOTP or DHCP.   Hosts for which no fixed address is specified can only

# be booted with DHCP, unless there is an address range on the subnet

# to which a BOOTP client is connected which has the dynamic-bootp flag

# set.

host fantasia {

  hardware ethernet 08:00:07:26:c0:a5;

  fixed-address fantasia.fugue.com;

}

touch /var/db/dhcpd.leases

用 DHCP Server 分配 IP ,但要固定某些机器的 IP

在那台机器上 Ping DHCP Server,在 DHCP Server 执行 arp 查出那一台机器的 Mac Address ,在 /etc/dhcpd.conf 中设定

 host fantasia {

  hardware ethernet 08:00:07:26:c0:a5;

  fixed-address fantasia.fugue.com;

}