Chinaunix

标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整) [打印本页]

作者: 红袖添香    时间: 2003-02-27 07:59
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
...

好了,终于敲完了。昨天贴的第一部分有些错误和不少不通顺的地方(惨不忍读,汗~),现在我已经粗略地校对过了,并且把完整地贴上来。老的那篇就麻烦斑竹删了它罢。

本文译自 http://www.fmi.uni-passau.de/~grafj/openbsd/ ,觉得写得还不错,而且挺新的(用的是当前最新版本OpenBSD3.2)。加之起点很低,通俗易懂,由零开始,绝大多数人只要按步就班,配置出一台完整的服务器不成问题。如果对大家有点帮助,也算没白辛苦啦~ :)




如何使用 OpenBSD 3.2 作 ADSL 路由

文/约根·格拉夫 ( Juergen Graf )  <jgf@openbsd.de>;


目录



一、这份HOWTO的目的

这份HOWTO描述了如何在一台个人电脑上安装OpenBSD 3.2,以及如何配置,使之成为一台DSL路由器。

在系统的配置中希望尽可能大地发挥它的功能。在安全性、功能性和易用性几方面的斟酌中,会牺牲一点安全性。但是我还是会一如既往,尽力做到在这种要求下的尽可能高安全配置。同时,既然我因为功能性一定程序上降低了安全性,我也必须指出,这篇文章的论述和所描述的过程是尽我所能,但是我不是OpenBSD专家,错误或遗漏在所难免,因此对您的改进意见表示感谢。

首先我要声明一点的是,OpenBSD目前还不能比如象Linux一样,给局域网内的其它机器提供一些网络服务(NetMeeting, 用ICQ或AIM收发文件等)。不过,如果是我搞错了的话,请写信告诉我,以便修正这篇HOWTO。

现在进入正题:

如果我按照这里的说明去配置,这台机器能做什么呢?

那我需要具备什么呢



二、安装 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)及它们的大小。这里我们要注意两点
为更合理分盘,现在我们删除目前所有的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 &amp; 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/cylinder: 945
cylinders: 6502
total sectors: 6144390
free sectors: 0
rpm: 3600

16 partitions:
#        size    offset    fstype    [fsize bsize   cpg]
  a:   101997        63    4.2BSD      1024  8192    16  # /
  b:   205065    102060      swap
  c:  6144390         0    unused         0     0
  d:   102060    307125    4.2BSD      1024  8192    16  # /tmp
  e:   163485    409185    4.2BSD      1024  8192    16  # /var
  f:   450765    572670    4.2BSD      1024  8192    16  # /usr
  g:  5113269   1023435    4.2BSD      1024  8192    16  # /home
>; w
>; q


如果都没问题了,就可以用“w”来写入,用“q”退出。屏幕上还会显示一下建立了哪些分区,挂接点,然后用“done”继续下一步。如果机器上还另外有硬盘,我们还可以依样画葫芦,在这个例子里我们分区就结束了,将要进行格式化。

No label changes.
The root filesystem will be mounted on wd0a.
wd0b will be used for swap space.
Mount point for wd0d (size=51030k), none or done? [/tmp] _
Mount point for wd0e (size=81742k), none or done? [/var] _
Mount point for wd0f (size=225382k), none or done? [/usr] _
Mount point for wd0g (size=2556634k), none or done? [/home] _
Mount point for wd0d (size=51030k), none or done? [/tmp] done
Done - no availiable disks found.

You have configured the following devices and mount points:

wd0a /
wd0d /tmp
wd0e /var
wd0f /usr
wd0g /home

The next step creates a filesystem on each partition, ERASING existing data.
Are you really sure that you're ready to proceed? [n] y

格式化之后会被问,要不要配置网络。(hostname 我们可以自已想一个更漂亮的名字,不一定非得象这里一样用router,不过应该只用小写字母)。

Enter system hostname (short form, e.g. "foo": [] router
Configure the network? [y] _

If any interface will be configured by DHCP, you should not enter
information that will be supplied via DHCP, e.g. the DNS domain name.

Enter DNS domain name (e.g. "bar.com": [] foobar.privat
Availiable interfaces are: rl0, rl1.
Which one do you wish to initialize? (or done) [rl0] _

设备名 rl0 和 rl1 指的是芯片组厂商(rl 就是著名的全世界最便宜的 RTL8139 芯片,而 de 就是 D-Link,等等)和该类卡的数目。这个例子里使用了两块 RTL8139 芯片的卡。如果你要问,“如果我用同类的卡,我怎样知道哪块是0,哪块是1啊?”,我只能答“不懂哦,我也不知道。”自己试一下就知道了嘛,网线换个位子还是很方便的吧。;)。两块卡的其中之一肯定是要配给内网,另外一块和DSL modem连在一起,什么都不用配置。当然,如果是用FTP安装的话,其中一块卡还是要设定和外网相通的。在这个例子中,我假设,局域网用网段 192.168.1.0/24 以及 192.168.1.1 还未被分配掉。

Configure which interface? (or, enter 'done') [rl0]
IP address (or 'dhcp') ? [] 192.168.1.1
Symbolic (host) name? [router] _
Netmask ? [255.255.255.0] _
Done - Avaliable interfaces are: rl1.      
Which one do you wish to initialize? (or done) [rl1] done

接下来,我们要给出“默认路由”,如果是从光盘安装的话,按预设的“none”回答就可以了,如果是用FTP安装,就得给出网关/路由的IP地址,域名服务器我们填写标准的T-online的就好了。(译注:作者是以T-online作为样本的,下同。其它人最好还是填写自己的提供商的域名服务器)。

Enter IP address of default route: [none] _
Enter IP address of primary nameserver: [none] 194.25.2.132
Would you like to use the nameserver now? [y] _
Do you want to do more, manual, network configuration? [n] _

接着要做的事是要想一下管理员密码(*NIX系统下总是叫root),尽量使用复杂的密码,由大小写、数字组成。好的密码比如“eWr43sR6”,相反“gott”或“0815”就很糟糕,当然,这个密码你自己得记得住。;)

Password for root account (will not echo): <root_passwort>;
Password (again): <root_passwort>;

.....

Where are the install sets you want to use? (m, c, f, etc.) _

这个问题当然看你是用什么安装的,“f”表示FTP,“c”表示光盘。如果选了FTP的话,还得从镜象站列表中选择合适的,如果选的是从光盘,还要被问放了光盘的CD-ROM的设备名,如果有多个光驱的话,可能会需要多试几次,如果找对了的话,就会继续下去:

The following sets are available. Enter a filename, 'all' to select
all the sets, or 'done'. You may de-select a set by prepennding a '-'
to its name.

    [X] base32.tgz
    [X] etc32.tgz
    [X] misc32.tgz
    [X] comp32.tgz
    [X] man32.tgz
    [X] game32.tgz
    [ ] xbase32.tgz
    [ ] xshare32.tgz
    [ ] xfont32.tgz
    [ ] xserv32.tgz
    [X] bsd

File name? (or 'done') [xbase32.tgz] done

Ready to extract selected file sets? [y] _

.....

Extract more sets? [n] _
Do you expect to run the X Window System? [y] n
Saving configuration files......done.
Generating initial host.random file ......done.
What timezone are you in? ['?' for list] [US/Pacific] UTC

时区我们之所以先UTC,是因为该机器还要拿来作时间服务器的。接下来的安装就需要等一段时间。安装完毕,取出光盘或软盘,敲入“reboot”,如果一切顺当,机器重启,一直到显示出“login: ”提示符,恭喜你,你的“OpenBSD DSL-Router”的第一步就大功告成了,现在放松一下,然后继续我们的配置工作。


三、"afterboot" 后的配置工作

系统安装好了,也重启了,我们现在用“root”来登录。为了简化挂接软驱和光驱的工作,我们先建立两个目录。

# mkdir -p /mnt/cdrom
# mkdir -p /mnt/floppy

然后只要在文件 "/etc/fstab" 加入下面两行就行了

/etc/fstab
   /dev/cd0a /mnt/cdrom cd9660 ro,nodev,nosuid,noauto 0 0
   /dev/fd0a /mnt/floppy msdos rw,nodev,nosuid,noauto 0 0

之后,我们用 "mount /mnt/floppy" 或 "mount /mnt/cdrom" 就可以挂接软驱和光驱了。

如果你希望有个简单好用一点编辑器,那我大力推荐 nano,包括下面安装 bash 一样,可以用 "pkg_add nano-1.0.9.tgz" 以及 "pkg_add http://ftp.leo.org/pub/OpenBSD/3.2/packages/i386/nano-1.0.9.tgz" 安装。(译注:前者适用于光盘,后面适用于FTP。)

各位如果不是受虐狂的话,我推荐安装bash(borne again shell),我自己反正是没有 TAB 和 光标键是没法活的,;)。公平地说,其实 korn shell “/bin/ksh”也有类似功能 - 只是我不太喜欢。

i386/OpenBSD 3.2的 bash-2.05b-static.tgz 包可以通过 FTP, SSH, CD-Rom 得到,甚至软盘都行。如果用软盘拷来的话,要注意还原成原有的名字(用正确的名字拷到硬盘上)。之后就可以在相应目录下,用“pkg_add”来安装了。.

# pkg_add bash-2.05b-static.tgz

如果是连网的机器,也可以用

# pkg_add http://ftp.leo.org/pub/OpenBSD/3.2/packages/i386/bash-2.05b-static.tgz

来安装. 因为我们想用 bash 作为我的默认 shell,建议把它从 /usr/local/bin/bash 拷贝到 /bin/bash 下,这样才能一旦不幸机器重启,要进行文件系统检查(或类似情形)时它也能用,因为这种情况下,只有根分区是挂接的,而 /usr/local/bin/bash 就不能用了。

# cp /usr/local/bin/bash /bin/

根据安装说明,我在 /etc/shell 中加入 bash

# echo "/bin/bash" >;>; /etc/shells

为了以后使用更美观一点,可以在 /etc/skel/.bash_profile 加入下面的内容

/etc/skel/.bash_profile
   PS1='\u@\h:\w\$ '
   export PS1

这样,新建用户总是会在家目录下自动产生 .bash_profile 文件。对现有用户(这儿就是 root 了)手动拷一下(别忘记,用户本人须能够读写这个文件)

# cp /etc/skel/.bash_profile /root/

到现在为止,root 还是用 csh 作为默认 shell 的,我们用下面的命令

# chsh

把 "Shell: /bin/csh" 改成 "Shell: /bin/bash".

默认的安装,OpenBSD 会开启一些我们不需要的服务,如果我们不想它启动后自动运行,可以在 /etc/rc.conf.local 中设定

/etc/rc.conf.local
   inetd=NO
   ntpd=NO

现在该建立新用户了。单单是为了不想看每次 root 登录时烦人的警告信息的理由,就该这么做。举例我这里建立一个叫 sepp 的用户。

# adduser
Couldn't find /etc/adduser.conf: creating a new adduser configuration file
Reading /etc/shells
Enter your default shell: bash csh ksh nologin sh [sh]: bash
Your default shell is: bash ->; /bin/bash
Enter your default HOME partition: [/home]: _
Copy dotfiles from: /etc/skel no [/etc/skel]: _
Send message from file: /etc/adduser.message no [no]: _
Do not send message
Prompt for passwords by default (y/n) [y]: _
Default encryption method for passwords blowfish des md5 old
[blowfish]: _

.....

Enter username [a-z0-9_-]: sepp
Enter full name []: Seppl
Enter shell bash csh ksh nologin sh [bash]: _
Uid [1000]: _
Login group sepp [sepp]: _
Login group is ``sepp''. Invite sepp into other groups: guest no
[no]: wheel
Enter password []: <sepps_passwort>;
Enter password again []: <sepps_passwort>;

.....

OK? (y/n) [y]: _
Added user ``sepp''
Copy files from /etc/skel to /home/sepp
Add another user? (y/n) [y]: n

可能你也注意到了,sepp 被归到 wheel 组中去了,这样他就可以用 su 来变成超级用户。如果不希望它有这个权限,只要在相应的地方回答 no 就行了。

在安装过程中如果是用的FTP方式,你设定了 gateway 和 default route。现在这个已经用不着了,甚至必须去掉,因为它现在自己就要作为 gateway 了。

在这种情况下,会有一个文件 /etc/mygate  里面是网关的IP地址,不用多想,直接删了它。不用重新启动,default route 也可以手动删除

# rm /etc/mygate
# route delete default

如果想改变机器的IP,最好的用和设备名相对应的文件 /etc/hostname.<device>;  (比如 /etc/hostname.rl0) 以及相应修改 /etc/hosts。参见  man hosts 和 man hostname.if。修改完后,不需要重启,运行 sh /etc/netstart 就行了。

至于重新启动后其它设置的相关部分,有心的读者可以看 man afterboot。现在其实已经可以把机器安放停当,显示器和键盘也不再需要了。不过,要提醒一下喜好摆弄防火墙规则的家伙,一不小心就会把自己挡住,然后不得不重新连上显示器和键盘。


四、DSL - 用 pppoe 连网

建立DSL连接所需的所有程序和驱动都已经在OpenBSD中内建了,所以设置是相当简单的。第二块网卡,没有作任何配置的,现在就应该和DSL-modem相连了。随后,有三个文件需要在 /etc/ppp/ 下建立,ppp.conf, ppp.linkup, ppp.linkdown。这个目录下的其它文件可以不去动它。我们从 ppp.conf 着手:

/etc/ppp/ppp.conf
default:
   set log Phase Chat IPCP CCP tun command
   set redial 15 0
   set reconnect 15 10000
   
pppoe:
   set device "!/usr/sbin/pppoe -i <interface>;"
   disable acfcomp protocomp
   deny acfcomp
   set mtu max 1492
   set crtscts off
   set speed sync
   enable lqr
   set lqrperiod 5
   set cd 5
   set dial
   set login
   set timeout 0
   set authname "<benutzername>;"
   set authkey <passwort>;
   add! default HISADDR
   enable dns
   enable mssfixup

这个文件和另外两个文件中的基本上每一行都是有意义的。多一个或少一个空格都有可能造成出错拨号中断。例如关键词“default”和“pppoe”必须在行首顶格写。所以最好把这个例子拷贝到你的机器上,然后做相应修改就好了。

<interface>; 处应该填入与DSL-modem相连的网卡的名称,在这个例子里是 rl1 (整句就是 set device "!/usr/sbin/pppoe -i rl1")
<benutzername>; 填 T-Online 用户名,线路+用户号(大致上看起来这样: 012345678901234567890123#0001@t-online.de - T-Online 号码大于11位的,就不需要#号了)。重要的是,名字必须放在引号中,不然的话会由于#号的关系出问题。
<passwort>; 处填你的密码,T-Online Passwort (据我所知)总是一个8位数(比如:01234567)

/etc/ppp/ppp.linkup
MYADDR:
 ! sh -c "/sbin/ifconfig pflog0 up"
 ! sh -c "/sbin/pflogd"
 ! sh -c "/sbin/pfctl -e -F all -f /etc/pf.conf"


ppp.linkup 文件中的命令将在 PPP/DSL 成功连接后被执行。在本例中,首先是初始化 “log interface”,接着log守护进程启动,最后打开防火墙。当然了,因为我们现在还没定义防火墙规则,现在也没什么意义。格式上一定要注意(下面的文件也一样),感叹号“!”前必须要有一个空格,不然,这些行不会被执行。

/etc/ppp/ppp.linkdown
MYADDR:
 ! sh -c "/sbin/pfctl -d -F all"
 ! sh -c "kill `cat /var/run/pflogd.pid`"
 ! sh -c "/sbin/ifconfig pflog0 down"
 ! sh -c "/sbin/route delete default"

类似地 ppp.linkup 还有上面这个文件 ppp.linkdown,它的命令将在DSL连接断开后被执行。首先关掉防火墙,然后停掉 log 守护进程,log interface  停用,最后清除 defaultroute,恢复拨号前的状态。

现在我们就可以利用下面的命令建立连接了:

# ifconfig <interface>; up media 10baseT
# ppp -ddial pppoe

<interface>; 指的就是与 DSL-Modem 相连的网卡的设备名。参数 -ddial 告诉 ppp 断线后自动重拨。如果只想拨一次,可以用参数 -background。

为了使机器开机后就自动直接拨号,我们可以建立下面的文件 /etc/hostname.<interface>;

# echo "up media 10baseT" >; /etc/hostname.<interface>;

并在文件 /etc/rc.local 中加入

/etc/rc.local
   /usr/sbin/ppp -ddial pppoe

<interface>; 当然还是照例指的是相应的设备,DSL 连通,在这台机器上就应该可以连网了(例如:ping www.openbsd.org)局域网内其它机器暂时还不能共享。为了方便配置 client,我们现在要在这台机器上配置域名服务器。


五、缓存域名服务器

我们要架的域名服务器其实不是正式的name server,而是把请求转发往“真正的”T-online 的name server,因此也就被称为“Caching Nameserver”。此后局域网内的其它机器只要填上我们这台机器的内部IP就可以了。

在配置文件 /var/named/named.boot 只需要加入下面的行

/var/named/named.boot
   options forward-only
   forwarders 194.25.2.132 194.25.2.129

nameserver 就配置好了,用 named -t /var/named -u named 就可以启动。为了使它能够重启后自动运行,需稍稍改动一下 /etc/rc.conf.local

/etc/rc.conf.local
    inetd=NO
    ntpd=NO
    named_flags=""

Caching nameserver 结束。到现在为止,我们已经能够上网冲浪了,但是从外界别人还无法连接我们的机器,因为我们的IP地址不固定,这样就需要一个固定的域名来帮助我们达到这个目的,这时就需要用到动态域名了。


六、动态域名 — 时刻能被外界访问

首先,我们可以在 www.no-ip.com 免费申请一个域名,比如说,my-router.no-ip.com (如果已经在 www.dyndns.org 申请了的,可以看一下我人旧版 HOWTO),如果顺利,很快就可以得到登录名、口令以及可以自己建立 hostname。动态域名服务需要客户端来告知当前的IP是多少,客户端可以用已经预编译好的package安装。

# pkg_add http://ftp.leo.org/pub/OpenBSD/3.2/packages/i386/no-ip-1.6.tgz

安装完会产生一个配置文件 /etc/no-ip.conf ,我们作一些修改,以适应我们的要求:

/etc/no-ip.conf
  LOGIN    = <loginname>;
  PASSWORD = <passwort>;
  GROUP    = ;
  HOSTNAME = <hostname>;
  DOMAIN   = <domain>;
  DAEMON   = N
  PROXY    = N
  INTERVAL = 10
  NAT      = N
  DEVICE   = tun0

<loginname>; 填入注册时用的电子邮件地址
<passwort>; 不用说就是相应的口令了
<hostname>; 只是指 hostname 部分(如本例中即 my-router)
<domain>; 指注册时挑选的域名(这里就是 no-ip.com )

测试一下能不能正常运行,手工启动程序

# /usr/local/sbin/noip

稍等片刻(大约 2-5 分钟),我们用 ping <hostname>;.<domain>; 来测试是否成功。万一不成功的话,可以在日志文件 /var/log/message 中找到错误信息。如果成功了,我们把它补充到 /etc/ppp/ppp.linkup 中去,以使动态域名总是指向正确的IP。

/etc/ppp/ppp.linkup
MYADDR:
 ! sh -c "/sbin/ifconfig pflog0 up"
 ! sh -c "/sbin/pflogd"
 ! sh -c "/sbin/pfctl -e -F all -f /etc/pf.conf"
 !bg sh -c "/usr/local/sbin/noip"

下面要做的三件事(时间服务器,FTP服务器和identd论证服务器)是可选的,如果不需要的话可以跳过,但是我觉得很实用,所以向你们推荐。

译注:国内也有提供相似的服务,并不一定非得要用文中所提及的 noip,关于这个可以网上查有关资料或问 jsn 大哥。


七、时间服务器

为使局域网内的所有机器保持准确和一致,比较理想的就是用时间服务器了,开启 ntpd 这个守护进程,客户端用 ntpdate 时刻与时间服务器校对,获取当前的精确时间,以保证本地机器上的时钟准确无误。下面我们来安装在默认安装中没带的 ntpd。因为现在DSL应该是成功安装好了的,所以这后续安装非常方便。只要

# pkg_add http://ftp.leo.org/pub/OpenBSD/3.2/packages/i386/ntp-4.1.72p1.tgz

就能安装上一个可以正常运行的ntpd了。还要做的就是修改一下配置文件 /etc/ntp.conf ,与internet上哪台服务器校对本地时间。在我这 128.100.102.201 总的说来不错。

/etc/ntp.conf
   server 128.100.102.201
   driftfile /etc/ntp.drift

因为机器重启后通过 /etc/rc.conf.local 立即运行 ntp 是有问题的,因此我们自己来建立一个脚本 /etc/ppp/reset_ntp 来运行它

/etc/ppp/reset_ntp
   #!/bin/sh
   if [ -f /var/run/ntpd.pid ]; then
      kill `cat /var/run/ntpd.pid`
      rm -f /var/run/ntpd.pid
   fi
   /usr/local/sbin/ntpd -p /var/run/ntpd.pid

用 chmod 500 /etc/ppp/reset_ntp 使 root 加上读和运行这个文件权限,然后在 /etc/ppp/ppp.linkup 再加入一行就行了

/etc/ppp/ppp.linkup
MYADDR:
 ! sh -c "/sbin/ifconfig pflog0 up"
 ! sh -c "/sbin/pflogd"
 ! sh -c "/sbin/pfctl -e -F all -f /etc/pf.conf"
 ! sh -c "/etc/ppp/reset_ntp"
 !bg sh -c "/usr/local/sbin/noip"

现在这台路由器的时钟应该总是能够保持准确的了,配置完成。

那么局域网内的其它机器怎样通过这台机器来校时呢?在Linux/*BSD下是很简单,只要用ntpdate就好了,把它放入每台机器的crontab这个文件中,例如每半小时校时一次可以这样,root 用命令

# crontab -e

修改这个文件,加入这一行

*/30  *  *  *  *   /usr/sbin/ntpdate -u -b -s <ip_des_routers>;

<ip_des_routers>; 理所当然就是指的你刚配置好的路由器的IP了(本例中192.168.1.1)。不过它不一定就在/usr/sbin目录下,最好自己用“type ntpdate”或“find / -name ntpdate”检查一下,并作相应修改。

Windows下也有可以用来同步时间的客户端软件,例如 AutomachronAboutTime。在 WindowsXP 下其实已经集成在系统里了,在设置时钟选项里有一条“同步系统时间”,默认的是微软自己的时间服务器,你只要把它改成你的路由器的IP就可以了。


八、FTP服务器

FTP文本传输协议有个缺点,所有的数据(包括登录名和口令都是用明文传送的,所以应该给FTP服务器专门一个帐号,这个帐号不能也不允许用SSH登录,而其它用户名则加到配置文件 /etc/ftpusers 中,以封掉其FTP的登录权限。在本例中到现在为止我们只有一个叫 sepp 的新用户,我们把它加入 /etc/ftpusers。

/etc/ftpusers
   sepp

下面我们新那建一个用户,他应该没有正常登录权限。

# adduser -silent
Enter Username [a-z0-9_-]: ftpguy
Enter full name []: FTP Guy
Enter shell bash csh ksh nologin sh [bash]: nologin
Uid [1001]: _
Login group ftpguy [ftpguy]: _
Login group is ``ftpguy''. Invite ftpguy into other groups: guest no
[no]: _
Enter password []: <ftpguy_passwort>;
Enter password again []: <ftpguy_passwort>;

.....

OK? (y/n) [y]: _
Added user ''ftpguy''
Add another user? (y/n) [y]: n

这里的<ftpguy_passwort>; 处输入你为FTP用户预设的口令,同时要用 chroot 来限制他只能在自己的家目录下活动(非常必要),把他的名字加到 /etc/ftpchroot中去

/etc/ftpchroot
   ftpguy

然后,修改 /etc/inetd.conf,把所有的没有注释掉的行用#注释掉,只保留下面这一行(见 man ftpd)。

/etc/inetd.conf
   ftp     stream tcp   nowait root  /usr/libexec/tcpd    ftpd -US -h -A -l -T 120 -t 60

手动运行用命令 inetd 就可以了,现在 ftpguy 就已经可以登录FTP了。在 /etc/rc.conf.local 中加入

/etc/rc.conf.local
   inetd=YES
   ntpd=NO
   named_flags=""

以使机器启动后自动运行 inetd。

译注:个人观点,仅供参考:如果安全要求较高的话,不要采用系统自带的FTP,OpenBSD 自己的FTP站都不用它。有很多更强大、更安全的服务器软件,比如 Pure-ftpd、vsftpd等可以做为选择。


九、Identd认证服务器

有些IRC网络(比如DALnet)要求idnetd服务器应答,正常情况下应该是发回聊天者的登记的正式用户名。但是,一来我们不愿这样做,二来也不怎么容易实现(聊天者并未登录到路由器上,而是在局域网内部其它机器的客户端上),所以我们就得用个小窍门。网上有很多“杜撰身份认证服务器”,使用假名字应答,也能通过,彼此都满意。我在下面这个网页找到一个相当不错的软件: http://www.clock.org/~fair/opinion/identd.html  非常小而且很容易在OpenBSD 3.2下编译,把 identd.c 抓来,放到 /tmp 目录下进行编译:

# cd /tmp
# cc -o fake_identd identd.c
# mv fake_identd /usr/local/libexec/

编译完毕,拷到 /usr/local/libexec/ 下,在 /etc/inetd.conf 加入fake_identd

/etc/inetd.conf
  ident    stream  tcp nowait nobody   /usr/local/libexec/fake_identd   fake_identd

然后需要重新启动 inetd 使配置生效,不要忘记,在 /etc/rc.conf.local 有 inetd=YES 这一行(参见上面 八、FTP服务器)。


十、NAT和防火墙

我们的路由器现在其实已经有很多功能了,只是路由功能本身还不具备。现在我们把这一功能也加上,用命令行:

# sysctl -w net.inet.ip.forwarding=1

这样它就可以转发IP数据包了。为了使它能够在机器启动后直接进入这一状态,我们在 /etc/sysctl.conf dafür 加入

/etc/sysctl.conf
   net.inet.ip.forwarding=1

就可以了。

接下来,我们想要考虑的是,是不是需要能够用主动模式访问外界FTP服务器,有些躲在防火墙后面FTP服务器是强制性必须用主动式。但这样的话,对我们的机器来说就有一点点潜在的安全隐患,因为这样一来,我们必须把大于49151的端口都打开。不过我个人以为,这种程度的“安全漏洞”还是可以忍受的,毕竟它给我们带来莫大的方便。

如果我们想连接这类只允许主动模式的FTP服务器,就还要扩展一下 /etc/inetd.conf,填入 FTP-proxy:

/etc/inetd.conf
  8081     stream  tcp  nowait  root   /usr/libexec/ftp-proxy  ftp-proxy

同样,之后也需重启 inetd。如果 /etc/rc.conf.local 中还没有打开 inetd=YES 把它加上。(参见上面 八、FTP服务器)

至于防火墙的配置文件在  /etc/pf.conf.

/etc/pf.conf
   ### 变量 ###

   Ext = "tun0"            # 与外界相连的设备名
   Int = "<internes_device>;"   # 与局域网相连的设备名
   IntNet = "192.168.1.0/24"   # 局域网的网段
   RouterIP = "192.168.1.1"    # 路由器的IP地址
   Loop = "lo0"            # Loopback 本地环回设备名

   # 不被路由的地址
   NoRoute = "{ 127.0.0.1/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 255.255.255.255/32 }"

   # 将被打开的端口
   InServicesTCP = "{ ssh, ftp, auth }"


   ### 选项 ###

   # DSL连接的统计数据(pfctl -s info)
   set loginterface $Ext

   # 快速断开非活动状态的连接 - 减少内存消耗
   set optimization aggressive

   # IP碎片重组
   scrub in on $Ext all fragment reassemble


   ### NAT 和转发 ###

   # 激活NAT
   nat on $Ext from $IntNet to any ->; $Ext

   # 激活 FTP - 转发到我们的 ftp-proxy 代理上
   rdr on $Int proto tcp from !$RouterIP to !$IntNet port 21 ->; 127.0.0.1 port 8081


   ### 过滤规则 ###

   # 只是用来调试用....
   #pass in quick all             # 测试一下允许所有进入的包
   #pass out quick all            # 和发出的包

   # 先是总的原则:挡住所有进出的数据包
   block out on $Ext all
   block in on $Ext all
   
   # 我们宁愿一声不吭装聋作哑,;)
   block return-rst out log on $Ext proto tcp all
   block return-rst in log on $Ext proto tcp all
   block return-icmp out log on $Ext proto udp all
   block return-icmp in log on $Ext proto udp all

   # 不需要 IPv6.0
   block in quick inet6 all
   block out quick inet6 all

   # 本地环回允许通过
   pass in quick on $Loop all
   pass out quick on $Loop all

   # 给nmap等扫描器来点难度
   block in log quick on $Ext inet proto tcp from any to any flags FUP/FUP
   block in log quick on $Ext inet proto tcp from any to any flags SF/SFRA
   block in log quick on $Ext inet proto tcp from any to any flags /SFRA

   # 防止IP欺骗
   block in log quick on $Ext inet from $NoRoute to any
   block in log quick on $Ext inet from any to $NoRoute

   # 允许 FTP 主动模式
   pass in quick on $Ext inet proto tcp from any to any port >; 49151 user proxy flags S/SAFR keep state

   # 允许被ping(禁止其实也没多大意义)
   pass in quick on $Ext inet proto icmp all icmp-type 8 code 0 keep state

   # 对外界开放的端口
   pass in quick on $Ext inet proto tcp from any to any port $InServicesTCP flags S/SAFR keep state

   # 允许通过由内向外的包
   pass out quick on $Ext all keep state

这个配置文件你可以完全照搬照抄,只要把<internes_device>;改成你自己的与内网相连的网卡的设备名就好了(本例中就是rl0)。其它也许要根据自己的情况改动的地方可能还有:内网的网段(变量$IntNet)、对外界开放的端口(变量 $InServicesTCP)或者路由器的IP地址(变量$RouterIP);如果不需要FTP主动模式的,只要把相应的两行注释掉就好了。

定制好的规则可以用命令

# /sbin/pfctl -e -F all -f /etc/pf.conf

导入,由于我们之前配置 ppp.linkup 时已经加入了这一句,每次拨号以后就能够自动地重新初始化。

好了,恭喜你,你的 OpenBSD 3.2 路由器现在是万事俱备了,内网的客户机以后只要在gateway和name server栏填上这台机器的内部IP就可以畅通无阻地上网了。


十一、参考资料

http://www.openbsd.org/de/
http://www.realo.ca/BSDinstall.html
http://www.unixscout.de/
http://neo.magdeburg.de/us/faq_pfnat.html
http://neo.magdeburg.de/us/faq_dsl.html


十二、鸣谢

在写这篇文章的过程中收到了很多改进意见的电子邮件,对于在通俗易懂、即时更新和减少错误上给了我很多帮助的所有人,在此一并致谢。他们中包括:

"Crash Override" vom [gEb], Ingolf Schuchardt, Hendrik Volkmer, Philipp Buehler aka "fips", Markus Pischulti, Kai Lingenauber, Danny Wagener, Frank Postleb, Grigori Goronzy, Jan Riedel und Waldemar Brodkorb.
作者: paopaoer    时间: 2003-02-27 08:32
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
顶一下
作者: simonzhan    时间: 2003-02-27 18:36
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
thanks! I've got it!
作者: bluepunk    时间: 2003-02-27 19:02
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
谢谢,看到了
作者: bluepunk    时间: 2003-02-27 19:15
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
哈哈,釉子,我成功了!!!

请你吃个大

我爱OpenBSD!
作者: 红袖添香    时间: 2003-02-27 19:25
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
...

哦,谢谢,怎么吃呢?  :*)~

呵呵,恭喜了~
作者: 红袖添香    时间: 2003-02-27 19:30
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
...

哦,谢谢,怎么吃呢?  :*)~

呵呵,恭喜了~
作者: ihweb    时间: 2003-02-27 19:34
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "红袖添香" 发表:
...

哦,谢谢,怎么吃呢?  :*)~

呵呵,恭喜了~


把他print 出来,然后…………………………
作者: 红袖添香    时间: 2003-02-27 19:48
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "ihweb"][quote:f33ada9c78="红袖添香" 发表:
...

哦,谢谢,怎么吃呢?  :*)~

呵呵,恭喜了~


把他print 出来,然后…………………………[/quote]
那是你们 baby 的作法!

你们不是最喜欢“咬”文“嚼”字的吗?嘻嘻~
作者: menp999    时间: 2003-02-28 11:30
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "红袖添香" 发表:

那是你们 baby 的作法!

你们不是最喜欢“咬”文“嚼”字的吗?嘻嘻~

你真是女生么?你的英语我真的好佩服哦。
作者: ihweb    时间: 2003-02-28 12:56
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "menp999" 发表:

你真是女生么?你的英语我真的好佩服哦。


没啥好羡慕的!!她的英文是迫出来的,红锈偷渡到德国后(偷渡的时候顺便抓了一张BSD,这样,她才学会了BSD),如果不说英语她能混吗?     
作者: menp9999    时间: 2003-02-28 16:32
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "ihweb" 发表:


没啥好羡慕的!!她的英文是迫出来的,红锈偷渡到德国后(偷渡的时候顺便抓了一张BSD,这样,她才学会了BSD),如果不说英语她能混吗?     

能不能请你穿上衣服呀(看看你的图象,这么冷天还把穿衣服,是锻炼准备偷渡的,自己游泳偷渡呵呵)?
作者: ihweb    时间: 2003-02-28 16:41
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "menp9999" 发表:

能不能请你穿上衣服呀(看看你的图象,这么冷天还把穿衣服,是锻炼准备偷渡的,自己游泳偷渡呵呵)?


为了学好英语,我有这个打算喔。
作者: menp9999    时间: 2003-02-28 16:44
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "ihweb" 发表:


为了学好英语,我有这个打算喔。

注意要顺便练习好抓东西的本领,呵呵。
作者: 红袖添香    时间: 2003-02-28 17:26
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "menp9999"][quote:98d9e1353f="ihweb" 发表:


为了学好英语,我有这个打算喔。

注意要顺便练习好抓东西的本领,呵呵。[/quote]...

呵呵~
作者: psjboy    时间: 2003-03-01 21:20
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
up
作者: wheel    时间: 2003-03-25 10:03
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
route如和使另一网卡能通呢?
作者: 黑夜编码人    时间: 2003-03-25 10:15
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
快把我的大印拿出来盖一下,嗯 ,怎么不见了呢?哦原来我忘了我没有呀。
oneflower, zyme, 夜猫子 把你们的大印借来用一下,夷!怎么不理我? ^_^
作者: wheel    时间: 2003-03-25 13:54
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
我在open BSD下有两块网卡
当各配一网段时正常

route show 结果如下
Internet
Destination    Gateway       Flogs
200.200.199.0   link#1          u
192.168.1.0       link#2          u

当各配同一网段时易常
route show 结果如下
Internet
Destination    Gateway       Flogs
200.200.199.0   link#1          u
因为link#2没加入IPV4路由所以地二块网卡ping 不出!
请问OPen BSD中如何才能两网卡同网段?
作者: 红袖添香    时间: 2003-03-26 01:35
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
...


我没遇到过这种情况.

有没有试试手工加路由?
作者: wheel    时间: 2003-03-26 09:55
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
手工只能加ip不能把link#1加上啊。。。
我的msn是Root@800.com.cn
icq是111290069
作者: 红袖添香    时间: 2003-03-26 19:39
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
...

对不起, 因为你贴的路由表格式乱了,所以也没仔细看, 呵呵.

应该是, 把第二块网卡的掩码设置成为 0xFFFFFFFF 就行了.
作者: kinux    时间: 2003-03-26 22:24
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
thanks .....~~~
作者: wheel    时间: 2003-03-27 16:57
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
如何能在路由表内加linuk #
route X.X.X.X link#1加不上啊!
作者: wheel    时间: 2003-03-27 16:58
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
如何能在路由表内加linuk #
route X.X.X.X link#1加不上啊!
作者: wheel    时间: 2003-03-27 17:00
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
如何能在路由表内加linuk #
route X.X.X.X link#1加不上啊!
作者: 红袖添香    时间: 2003-03-27 17:58
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "wheel" 发表:
如何能在路由表内加linuk #
route X.X.X.X link#1加不上啊!


不用手加路由, subnet mask 0xFFFFFFFF 设置完后,重启机器(或单用户模式进出一次)就行了,
作者: lllaaa    时间: 2003-03-28 07:14
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
我机器里是两块8139,可是openbsd只找到了一块。我怎么添加另外一块进去啊?
作者: 红袖添香    时间: 2003-03-28 07:17
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
[quote]原帖由 "lllaaa"]我机器里是两块8139,可是openbsd只找到了一块。我怎么添加另外一块进去啊?[/quote 发表:


只找到一块是什么意思?是指它只配置了一块吧?

看一下 dmesg 中有没有两块网卡的信息。
作者: ihweb    时间: 2003-03-28 08:41
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "红袖添香"][quote:b09663af12="lllaaa"]我机器里是两块8139,可是openbsd只找到了一块。我怎么添加另外一块进去啊?[/quote 发表:


只找到一块是什么意思?是指它只配置了一块吧?

看一下 dmesg 中有没有两块网卡的信息。
另外一块没接好。
作者: lllaaa    时间: 2003-03-28 10:52
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
谢谢,确实是有一块网卡没有接好。我说怎么前几天用的挺好的freebsd今天启动不了了.
作者: wheel    时间: 2003-03-28 14:01
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
当设成255.255.255.255时link#1和linuk#2都有可是ping不到同网段的机啊!

http://www.fantasy.net.cn/web2/dnlinux.html
作者: 红袖添香    时间: 2003-03-28 18:34
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
[quote]原帖由 "wheel"]当设成255.255.255.255时link#1和linuk#2都有可是ping不到同网段的机啊![/quote 发表:



NIC1: 0xFFFFFF00
NIC2: 0xFFFFFFFF

不是两块都设成 0xFFFFFFFF

NIC1 是 default route

(我试过的,没问题。)
作者: lllaaa    时间: 2003-03-28 21:32
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
还有一个问题,不过这次是Freebsd的
两块网卡我在安装的时候设定了ip,但是现在有一块的ip我想更改。我用的是最小安装方式。怎么手动更改rl1的ip地址?我现在用ifconfig 看到的是rl0分配了192.168.1.21,rl1的ipv4ip没有,ipv6的倒是有。
是不是用ifconfig rl1 192.168.1.22?
我用了这一条命令好像提示文件已经存在
作者: 红袖添香    时间: 2003-03-28 22:08
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "lllaaa" 发表:
还有一个问题,不过这次是Freebsd的
两块网卡我在安装的时候设定了ip,但是现在有一块的ip我想更改。我用的是最小安装方式。怎么手动更改rl1的ip地址?我现在用ifconfig 看到的是rl0分配了192.168.1.21,rl1的ipv4ip没有,ipv6的倒是有。
是不是用ifconfig rl1 192.168.1.22?
我用了这一条命令好像提示文件已经存在


我在 OpenBSD 下没碰到过这种情况,你试试把第2块网卡的掩码也加上,

ifconfig rl1 192.168.1.22 netmask 0xFFFFFFFF up

如不行,试一下先把它delete一下看
作者: i2era    时间: 2003-03-30 13:52
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "红袖添香" 发表:


我在 OpenBSD 下没碰到过这种情况,你试试把第2块网卡的掩码也加上,

ifconfig rl1 192.168.1.22 netmask 0xFFFFFFFF up

如不行,试一下先把它delete一下看

这样也行:
#ifconfig rl1 192.168.1.22/32
不明白netmask设成255.255.255.255干什么?
作者: wheel    时间: 2003-03-30 17:33
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
[quote="红袖添香"]


NIC1: 0xFFFFFF00
NIC2: 0xFFFFFFFF

不是两块都设成 0xFFFFFFFF

NIC1 是 default route

(我试过的,没问题。)
可是当NIC1断开网线后NCI2 也不通了?
作者: lllaaa    时间: 2003-03-30 19:06
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "红袖添香" 发表:


我在 OpenBSD 下没碰到过这种情况,你试试把第2块网卡的掩码也加上,

ifconfig rl1 192.168.1.22 netmask 0xFFFFFFFF up

如不行,试一下先把它delete一下看


怎么delete?

FreeBSD4.7安装界面里面好像只能对一个网卡的ip进行指定啊

我在rc.conf里面写入
ifconfig_rl1="inet 192.168.1.22 netmask 255.255.255.0"
启动的时候会看到ioctl xxxxx:File exists 之类的提示
直接用ifconfig rl1 192.168.1.22也是这样提示
作者: lllaaa    时间: 2003-03-31 06:39
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
我搞定了。两块网卡用不同的网段就没有那个提示了。
我再试一试netmask的办法
作者: wheel    时间: 2003-03-31 10:23
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
两块卡用不同的掩码
当用255.255.255.0的卡网线断开时
用255.255.255.255的网卡ping不出去啊。。。
作者: 红袖添香    时间: 2003-03-31 19:46
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
原帖由 "wheel" 发表:
两块卡用不同的掩码
当用255.255.255.0的卡网线断开时
用255.255.255.255的网卡ping不出去啊。。。


问题变大了.

想想看, 如果你不是这样设定的话, 数据包该怎样路由? 从哪个NIC出去? 按照你的意思是从NIC1, 但是NIC1断线时, 它得从NIC2出去. 那么简单地ifconfig设定是不要可能达到你的目的的.

这里有点"冗余路由"的意思. 你需要用 RIP 随时更新路由表. 动态地变换路由. 看一看 routed 的相关信息吧.
作者: wheel    时间: 2003-04-01 14:48
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
可是linux是可以的啊!route能用手工加link吗>;
另问BSD下有无MII-tool之类的工具
作者: B2Sun    时间: 2003-04-27 10:52
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
我安装了OPENBSD 3.2 听说在/etc/mygate文件是配置网关的东西,可是我的目录下没有这这个文件,我自己想写一个可是不知道格式是什么,
有没有哪位大佬知道这个东西怎么样的格式,或者把这个文件发过来参考一下!
我每次想上网还要用
route add default 192.168.4.254 这个命令 ,好麻烦的,我的邮件是:
Along@b2sun.com 电话是:13802785865请大家多指教!
作者: 我爱臭豆腐    时间: 2004-01-15 11:02
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
文章写的真是不错啊.最近这两天我就是参照红袖的文章做的一个nat.虽然我使用的不是adsl.但是给我的启发还是很大的 多谢多谢.虽然你现在不在我们这个论坛了但是还是要感谢你
作者: 像把刀子    时间: 2005-03-15 10:14
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
这个帖子包含的内容多很有用阿
作者: leeews    时间: 2005-03-15 17:16
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
来怀念一下没有见过面的红袖大姐~~
作者: leeews    时间: 2005-03-22 22:39
标题: 如何使用 OpenBSD 3.2 作 ADSL 路由(完整)
红袖大姐,归来,归来~~
作者: Macolex    时间: 2005-11-07 12:08
哈哈
作者: limutian    时间: 2005-11-07 16:50
好文章 !
作者: yu10101    时间: 2006-01-15 22:08
时间很长了,还是很有用~~~~~
作者: OraBSD    时间: 2009-09-10 21:16
好文章啊!可惜大姐现在不来了。
作者: maimaititiyou    时间: 2009-09-11 12:50
多谢多谢啊 哈哈
作者: chengqingtanyue    时间: 2010-07-27 00:12
多谢楼主好帖子。
作者: ulovko    时间: 2012-06-02 11:01
绝对要支持,一会慢慢看! Thx in advance O_o




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2