34 FreeBSD连载:手工配置网络( 二 )


# ifconfig -a
xl0: flags=8843 mtu 1500
inet 192.168.1.64 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:90:27:4e:f6:67
media: autoselect
supported media: autoselect 100baseTX 100baseTX 10baseT/UTP 10baseT/UTP
lp0: flags=8810 mtu 1500
tun0: flags=8050 mtu 1500
sl0: flags=c010 mtu 552
ppp0: flags=8010 mtu 1500
lo0: flags=8049 mtu 16384
inet 127.0.0.1 netmask 0xff000000上图显示的信息包括各个网络界面,如以太网界面xl0,并行口界面lp0,用于ppp拨号的tun0和ppp0界面,用于slip拨号的sl0界面等各个网络界面的设置数据 。
对于点对点的PPP界面,ppp0或tun0,通常要求指定另一端的IP地址,如果没有另一端的IP地址,就不能正常设置网络,事实上PPP软件会自动完成这些设置,而不需手工执行ifconfig 。
# ifconfigtun0 inet 10.10.1.42 10.10.1.29配置路由表
【34 FreeBSD连载:手工配置网络】在同一个局域网上的计算机是直接连通的,但是不同的网络上的计算机并没有直接相连,只能通过一台特殊的专用计算机-路由器来完成连通 。路由器连接有多个网络界面,每一个网络界面连接到一个相应的网络上,有一个相应的IP地址 。而网络内部的计算机要向外连接,必须通过路由器进行转接,因此计算机必须知道路由器的IP地址 。
缺省网关就是一个网络中的最基本的路由器,负责几乎所有的向外连接任务 。假设缺省网关的地址为192.168.1.254,则设置缺省网关的命令为:
# route add default 192.168.1.254更复杂的情况下,网络中可以有多个路由器,每个路由器负责到一些网络的转发任务,因此应该在计算机中配置这个网络上所有路由器及这些路由器负责的网络的路由数据 。可以使用route命令增加到各个网络的静态路由数据,其中-net参数是一个可选参数,否则route从所给予的IP地址中判断它是网络还是计算机,同样可以指定-host参数为一个远程计算机指定路由 。
# route add -net 192.168.10.0/24 192.168.1.253
# route add -net 192.168.20.0 192.168.1.253这个语句将在路由表中增加到网络192.168.2.0和192.168.3.0的路由,其中ip地址后面的24用于指示网络掩码,它代表二进制方式的网络掩码前面非0位的长度,24个非0位的掩码等价于255.255.255.0 。如果没有指定网络掩码,route就使用该ip对应的缺省网络掩码 。
设置完路由表之后,可以使用netstat -r命令来查看当前的路由表的内容 。
# netstat -r
Routing tables

Internet:
DestinationGatewayFlagsRefsUseNetif Expire
default192.168.1.254UGSc1941xl0
127.0.0.1127.0.0.1UH1644lo0
192.168.1link#1UC00xl0
192.168.1.2540:e0:1e:ce:85:a9UHLW20xl0
192.168.1.640:90:27:4e:f6:67UHLW16lo0
192.168.1.253link#1UHLW20xl0
192.168.10 192.168.1.253UGSc00xl0
192.168.20 192.168.1.253UGSc00xl0除了显示到达其他网络的路由器之外,路由表中,还能显示出到达本地网段计算机的方式,例如link#1表示通过第一个网络界面,也能显示直接连接的其他主机的Mac地址 。
保存配置
上面的命令都是立即生效的命令,但是并没有将信息写入配置文件中,因此要想让系统重起之后配置仍然有效,就必须更改配置文件/etc/rc.conf 。这里可以设置主机名,各个网络界面的属性,以及各个路由设置等 。
hostname="wb.example.com.cn"
network_interfaces="xl0 ppp0 lo0"
ifconfig_xl0="inet 192.168.1.64netmask 255.255.255.0"
ifconfig_ppp0="inet 10.10.1.4210.10.1.29"
ifconfig_lo0="inet 127.0.0.1"
defaultrouter=”192.168.1.254”
static_routes=”static_route1 static_route2”
static_route1=”-net 192.168.10.0/24 192.168.1.253”
static_route2=”-net 192.168.20.0/24 192.168.1.253”其中network_interfaces定义了多个网络界面的名字,此后相对应的ifconfig_xl0等项的值是相应的ifconfig的参数 。同样static_routes参数也使用相同方式,来定义多个静态路由 。

推荐阅读