当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > FreeBSD学习指南

Unix/Linux
linux root 密码忘了怎么办?
Debian LINUX 基础知识介绍
在Linux操作系统下修改IP、DNS和路由配置
Linux网络管理员指南(下载)
Linux环境进程间通信:管道及有名管道
Linux操作系统中的七件超厉害的武器
linux下vi编辑器命令大全
Linux服务器安全小技巧
Linux和UNIX病毒需特别重视
配置安全的SCO UNIX网络系统
IIS的安全性全解析
UNIX防止非法用户注册的技术
linux 远程桌面连接
Vsftpd+tcp_wrappers控制主机和用户访问
挂载(mount)命令使用技巧
linux 如何结束进程
cpio 解压参数
gzip和gunzip 解压参数
compress与uncompress参数使用
bzip2 bunzip2 bzcat参数使用

Unix/Linux 中的 FreeBSD学习指南


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-15   浏览: 104 ::
收藏到网摘: n/a

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/portsFreeBSD 移植软件的原始程序目录,我们可以从这个目录中找到自己想要的软件来快速安装
/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

新的核心有问题时

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]

 

                                                                                                                                                                                                                                                                                                                                                                                                                   
logfilenamelog 文件名称
[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 下解压缩

寻找需要安装的 Port

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

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

一些不常用的 make 方式

make fetch 抓回所需的原始档

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

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="[email protected]"

        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;

}