是从那部黑客小说中看到的 OpenBSD 这个操作系统,并从此得到了它是一个非常安全的系统的感觉(事实也是如此)。后来在那波大肆下载各种软件的时期,我也找到了 OpenBSD 的最新 3.8 版的安装盘。当时用 VMWare 建了个虚拟机大致安装了一下,由于硬盘空间不够很快就删了。昨天开始,决定研究一下它,作为这段时间的业余爱好。
一切都得重头来。不过,安装不会有什么问题。尽管 OpenBSD 只提供了文本方式的安装界面,并且还是命令行式的。但在它的官方网站上,有一篇非常详尽的安装指导。虽然是英文的,但是由于配了例子,好像还有截图,照瓢画葫芦也能把系统装完。我第一次安装的时候,就是完全按照它上面的步骤完成的。
不过,当时也遇到了一些问题。因为我硬盘空间相当紧张,只给虚拟机划分了一个大小为 1G 的虚拟硬盘。在分配 disklabel 的时候,就捉襟见肘了。安装指导上的例子是以 20G 的硬盘为例的,而我不知道各个 mount point 下的空间在安装后到底会消耗多少,所以只好根据经验随意设了一下。后来在安装的时候果然有遇到 /usr 目录空间不够的问题。这一次,我打算把所有目录的空间都统一在一个 disklabel 下面,免得再遇到这些多余的麻烦。
因此,昨天当我在分配 disklabel 的时候,d a 之后,先直接 a b 建立 swap 分区。硬盘这次还是只有 1G,因此只分了 100M 给 swap 分区。剩下的都用在 a a 上,mount point 设为 /。这样它下面的所有目录,无论 /home、/usr 还是 /var,都统统使用它的空间了。我知道若是在真的服务器上这样做是有负面效果的,不过现在空间不够,也只有凑合了。
这些工作都是昨天晚上完成的。今天的计划是将网络设置好,并安装 Apache + PHP + MySQL。我会去研究 OpenBSD,有一部分原因是想把公司以后的 Web 服务器用它来架设。众所周知 Web 服务一直是网络安全的一个薄弱环节,为此我希望有一个自己把握得住的、小巧、安全可靠的系统。安全性要好,功能不需要多,能提供必要的服务就行,而且最好能自己定制。我想 OpenBSD 也许是不错的选择。RedHat Linux 虽然用得很多,但系统发展到现在已经很庞大了,不一定好使。
可惜,早上一来就在网络设置上遇到问题。OpenBSD 和 RedHat Linux 在设置上有不少区别。尽管都有 /etc 目录,可那下面的文件就基本上没几个相同的。当然,这并不是问题,查查资料就可以搞定。但是,在 NAT 设置上我遇到难题了。
我昨天在家里安装的时候,关于虚拟机的网卡,我随便设了一个 Bridge 模式。这当然是最方便也是最简单的设置方式了。不过到了公司就不能这样用了。虽然公司的 IP 也是我在管,但为一个自己研究用的虚拟机就占用一个实际IP也不是很厚道。我决定把它改为 NAT 模式。
然而,遇到了奇怪的事情。当我把 OpenBSD 的 IP、网关、DNS 统统改掉之后,刚开始,在虚拟机上操作起来似乎一切 OK。内外能通,DNS 也能解析。然而,当我试图从本机上 SSH 过去的时候,无法连接。再从本机上尝试 ping,也不行。
正在我为内网工作站没问题,但网关不通工作站而奇怪的时候。过了一会会,SSH 又能连接了。我还没高兴多久,却发现这台 OpenBSD 不能通外网了,就像没有 NAT 一样。再 ping 网关的 ip 地址,却又是通的。反复重启了几次,还是这样的现象,似乎和时间还有一点关系。
郁闷中,发现有个现象。似乎有时候在 OpenBSD 上 route show 的时候,本机上会有网络地址冲突的警告提示。查看日志发现,那块网卡的 MAC 地址从来没有见过。既不是 NAT 型虚拟网卡的地址,也不是 OpenBSD 上的网卡的地址,不是任何一块已知网卡的 MAC 地址。过了一会,我注意到,刚开始的时候,在 OpenBSD 上 route show 的时候,从网关 IP 出发的路由是指向这个未知的 MAC 地址。此时内外网就是通的,但本机不通内网 OpenBSD。而过一会之后,等本机能连接内网 OpenBSD 时,再 route show,就发现那条路由的 MAC 地址变成了 NAT 型虚拟网卡的 MAC 地址,是一个已知的 MAC 地址了。
这让我隐约有点感觉。似乎有两块网卡。一块是我已知的,可以连到内网 OpenBSD,但无法担任网关的工作。另一块可以做网关,做得很好,但是不能让本机连接内网 OpenBSD,因此它不是一块本机上已知的网卡。
上午火箭又输球了,办公室内又有一个串门的 MM 大声地恬噪,搞得我头晕脑胀。中午去麦当劳理了理思路,很快就发现了问题所在。那块不存在的网卡肯定是 VMWare 虚拟出来的,而且甚至都不属于虚拟网卡,只是一个影像而已。它只存在于 VMWare 的世界,只有虚拟机们才能感知到它的存在。而它的 IP 地址,就是 VMWare 的 NAT 网关的 IP 地址。我自作主张把它设成了和虚拟网卡一样的 IP,于是两者在 VMWare 内就冲突了。互相抢IP地址,所以一会可以通一会不行。
回来之后,把 NAT 网关的地址改成另一个,配置 OpenBSD,然后重启,终于,一切正常了。
其实,这不算是对 OpenBSD 的研究,应该算是对 VMWare 的研究吧?