一、这份HOWTO的目的
这份HOWTO描述了如何在一台个人电脑上安装OpenBSD 3.2,以及如何配置,使之成为一台DSL路由器。
在系统的配置中希望尽可能大地发挥它的功能。在安全性、功能性和易用性几方面的斟酌中,会牺牲一点安全性。但是我还是会一如既往,尽力做到在这种要求下的尽可能高安全配置。同时,既然我因为功能性一定程序上降低了安全性,我也必须指出,这篇文章的论述和所描述的过程是尽我所能,但是我不是OpenBSD专家,错误或遗漏在所难免,因此对您的改进意见表示感谢。
首先我要声明一点的是,OpenBSD目前还不能比如象Linux一样,给局域网内的其它机器提供一些网络服务(NetMeeting, 用ICQ或AIM收发文件等)。不过,如果是我搞错了的话,请写信告诉我,以便修正这篇HOWTO。
现在进入正题:
如果我按照这里的说明去配置,这台机器能做什么呢?
它上面将运行OpenBSD -- 目前来说最安全的自由操作系统。这个系统由众多的安全专家不断地针对安全漏洞进行检查和改进着,更多的信息请查看 www.openbsd.org
它能够建立DSL连接,并且断线后自动重拨
网络通过NAT(就象Linux的masquerade一样)将局域网的机器与外网相连,做到完全透明,网内可以使用以下的服务:
HTTP, HTTPS, SMTP, POP3, IRC, ... 等等所有的客户端应用
FTP的主动和被动连接模式通过代理实现
上面会架设FTP服务器,可以被内网和外网访问
通过时间服务器使局域网内的所有机器时间准确同步
它能过动态域名时刻被外界访问,,类似“my-router.no-ip.com”这样的域名,可以从www.no-ip.com 免费注册获得。
通过SSH管理,也就是说通过局域网内任何一台机器或互联网上的机器来管理。一个很方便的客户端软件可以在这儿下载: SSHSecureShellClient-3.2.2.exe
给局域网内的其它机器提供作域名服务器,方便这些机器的设置。
有些IRC网(例如DALnet)必须有认证服务器,提供用户的身份信息才能连接,因此我们这儿会运行一个“假的”认证服务器,用以返回“假的”用户名字。
那我需要具备什么呢
一台旧电脑(最低要求:486DX2/66 - 32兆内存),配置:
硬盘500MB以上,软驱
两张网卡(最好是PCI的,因为这样会自动识别)
如果有能启动的光驱更佳
当然内存少于20MB也是可以安装的,但是具体如何做,这就要求好好阅读FAQ的内容了
在安装过程中还需要一个键盘和显示器。
已经连通的网络(对无光驱者),最好就是用自己将来使用的DSL线路。
如果熟悉UNIX类操作系统的和它们的程序,比如*BSD或Linux,会很有帮助。OpenBSD的默认编辑器是vi,我会介绍怎样安装一些容易使用些的编辑器,当然,懂得一点vi的基本操作是没坏处的。
然后就是耐心、良好的神经和极大的热情(取决于前面的步骤喽,;))
二、安装 OpenBSD 3.2
在安装过程中的注意事项的一些细节,这儿就不详细说了,关于这方面已经有足够多的资料了(比如安装FAQ或者其它FAQ,当然还有Google。
用CD安装的话我建议购买OpenBSD的原装盘(也是在 www.openbsd.org )- 甚至单单是因为CD配给酷酷的不干胶标签就值,此外还可以同时用精美的海报和T恤包装一下自己 ;) 当然对此不感冒的或者没有没有支持光盘启动的光驱另作别论,可以从FTP安装。这样也有好处,总是安装最新的版本,只要机器是连网的,通过局网内另外一台机器(其实也就是一台当前的路由),和一张软盘。镜象文件可以到OpenBSD网站下载:floppy32.fs,解开的方法,在Linux或*BSD下:
# dd if=floppy32.fs of=/dev/fd0 bs=32k
或者在windows下用 rawwrite.exe 写到一张格式化好的 1.44MB 盘上。
FTP安装过程中只需要一张网就行了,这张卡得是连外网的,然后放入软盘或光盘,开始吧。
启动后,经过一长串蓝底白字的文字,出现这样的选项:
(I)nstall,(U)pgrade or (S)hell? i
当然我们选“安装(i)”了。之后会问终端类型:
Specify terminal type [vt220] _
我们只要按回车就好了。接下来是选择键盘布局:
Do you wish to select a keyboard encoding table? [n] y
Select your keyboard type: (P)C-AT/XT, (U)SB or 'done' [P] _
The available keyboard encoding tables are:
be de dk es fr it jp lt no pt ru sf sg sv ua uk us
Table name? (or 'done') [us] de
keyboard mapping set to de
选完后会立即生效,这样我们就不用再在键盘上盲人摸象啦(译注:偶们中国人就不用管它,用默认的美式键盘就行了)。接下来有点意思,OpenBSD问我们在怎样的硬盘上安装。
IS YOUR DATA BACKED UP? As with anything that modifies disk contens, this
program can cause SIGNIFICANT data loss.
It is often helpful to have the installation notes handy. For complex disk
configurations, relevant disk hardware manuals and a calculator are useful.
Proceed with install? [n] y
Cool! Let's get to it...
You will now initialize the disk(s) that OpenBSD will use. To enable all
avaliable security features you should configure the disk(s) to allow the
creation of separate filesystems for /, /tmp, /var, /usr, and /home.
Available disks are: wd0
Which one is the root disk? (or done) [wd0] _
在这里我假设的是,这台机器只安装OpenBSD,所以用第一块硬盘(wd0)就对了。wdX表示IDE接口的硬盘:wd0 - primary master, wd1 - primary slave, wd2 - secondary master, wd3 - secondary slave. 接下来的问题:
Do you want to use the *all* of wd0 for OpenBSD? [no] yes
是否全归OpenBSD使用?当然我就在这里选“是”了。现在我们到了安装过程中较棘手的地方 - disklabels. 与windows或Linux不同的是,*BSD用disklabel来建立“子分区”,不要混淆了。还好,我们这里有且只有一个OpenBSD分区(上面回答“是”后,自动建立的),这个分区我们将用disklabel再划分。在出现提示符后我们用“p”来显示盘上的内容
Initial label editor (enter '?' for help at any prompt)
p
device: /dev/rwd0c
type: ESDI
disk: ESDI/IDE disk
label: VMware Virtual I
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 15
sectors/cylinder: 945
cylinders: 6502
total sectors: 6144390
free sectors: 6136641
rpm: 3600
16 partitions:
# size offset fstype [fsize bsize cpg]
a: 6136641 63 unused 0 0
c: 6144390 0 unused 0 0
_
我们感兴趣的是的下面的部分,显示的是目前的disklabel(a, c)及它们的大小。这里我们要注意两点
这里的disklabel(a,b,...)跟M$的盘符一点关系都没有。
Label “c”总是表示整个硬盘。
为更合理分盘,现在我们删除目前所有的label(当然除了“c”以外,不过反正我们也删不掉它),在这个例子里我们只要删除“a”就行了(“d a”)。然后我给根分区200MB空间,用“a”分区,接下来100MB交换分区(大约2倍的内存的大小),50MB给“/tmp”,还有50MB“/var”
d a
a a
offset: [63]
size: [6136641] 50m
Rounding to nearest cylinder: 101997
FS type: [4.2BSD]
mount point: [none] /
a b
offset: [102060]
size: [6034644] 100m
Rounding to nearest cylinder: 205065
FS type: [swap]
a d
offset: [307125]
size: [5829579] 50m
Rounding to nearest cylinder: 102060
FS type: [4.2BSD]
mount point: [none] /tmp
a e
offset: [409185]
size: [5727519] 80m
Rounding to nearest cylinder: 163485
FS type: [4.2BSD]
mount point: [none] /var
a f
offset: [572670]
size: [5564034] 220m
FS type: [4.2BSD]
mount point: [none] /usr
_
(译注:hmmm.... 好象作者从openbsd网站 copy & paste 过来,但忘记改数据了)
专门的分区 /tmp 和 /var 我们最好不要舍弃,因为这是放临时文件和日志的地方。如果文件太多太大的超出空间的话,只会影响 /var 或 /tmp,而不会殃及根文件系统。如果硬盘足够大的话,还应该多分给 /var 一些。如果想安装图形界面或者自己编译OpenBSD团队的新东东的话,/usr 还得再大一些(比较合理的上限是2.2G)。剩余的空间可以作为 /home。这里也是后面我们要安装的FTP服务器所使用的分区,如果不想安装FTP的话,可以放心地减小这个分区,甚至不要都可以,空间分配给其它地方。
a g
offset: [1023435]
size: [5113269]
FS type: [4.2BSD]
mount point: [none] /home
_
做完这些,我们再用命令“p”检验一下,应该大致如此
p
device: /dev/rwd0c
type: ESDI
disk: ESDI/IDE disk
label: VMware Virtual I
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 15
sectors