首先, 网卡必须已经安装并连接了hub, 交换机或者直连 (参 图 23.1, “带有网关的网络”).
接着, 确认网卡可被内核识别, 研究一下 dmesg 命令的输出. 下例中内核正确地识别出一块NE2000 clone网卡:
如果网卡没有被内核识别出来, 检查它是否在内核配置文件中被启用了,然后检查卡的IRQ是否和内核的预计值匹配。例如, 在配置文件中有一行 isa NE2000 ; 内核内核预计卡在IRQ 9....
ne0 at isa0 port 0x280-0x29f irq 9
ne0: NE2000 Ethernet
ne0: Ethernet address 00:c2:dd:c1:d1:21
...
如果卡的配置不一样, 启动时可能找不到它。 这种情况下, 无论是改变内核配置文件中的这行内容然后编译一个新内核,还是改变卡的设置 (通常用安装盘,或者老卡是用跳线)....
ne0 at isa? port 0x280 irq 9 # NE[12]000 ethernet cards
...
下列命令显示了网卡的当前配置:
代码: 全选
# ifconfig ne0
ne0: flags=8822<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST> mtu 1500
address: 00:50:ba:aa:a7:7f
media: Ethernet autoselect (10baseT)
inet6 fe80::250:baff:feaa:a77f%ne0 prefixlen 64 scopeid 0x1
代码: 全选
# ifconfig ne0 inet 192.168.1.1 netmask 0xffffff00
现在重复上一个命令得到一个不同的结果:
代码: 全选
# ifconfig ne0
ne0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: 00:50:ba:aa:a7:7f
media: Ethernet autoselect (10baseT)
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
inet6 fe80::250:baff:feaa:a77f%ne0 prefixlen 64 scopeid 0x1
现在ifconfig 的输出改变了: 现在的IP地址多了两个新标签, “UP” 和 “RUNNING” ,如果接口显示的不是 “UP”, 它将不能为系统发送数据包.
主机获得的IP地址是192.168.1.1, 属于一套保留给内部网络使用的地址,不能从Internet访问. 配置完成后要进行测试; 如果在此网络上有另一台主机, ping 命令可用于测试. 例如, 如果要测试192.168.1.2:
代码: 全选
# ping 192.168.1.2
PING ape (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=1.286 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=255 time=0.649 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=255 time=0.681 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=255 time=0.656 ms
^C
----ape PING Statistics----
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.649/0.818/1.286/0.312 ms
代码: 全选
auto_ifconfig=yes
ifconfig_ne0="inet 192.168.1.1 netmask 0xffffff00"
本例中设置了变量 ifconfig_ne0 ,因为它被内核识别为 ne0 ; 请根据你的情况自行修改自己的配置.
这样下次启动时网卡会被自动识别出来.
如果你通过一个路由器连接到internet, 你可以将其设为默认路由, 它将处理你的所有数据包. 要这样, 将/etc/rc.conf文件中的defaultroute 设定为路由器的IP地址
defaultroute=192.168.0.254
如果你的DNS不在本地,请确认用IP地址代替了名称 . 因为这种情况下DNS服务器无法解析默认路由器的域名,并且反之亦然, 这样你就陷入了一个所谓的“先有鸡还是先有蛋的”困境中.
要是本地网络的主机间可通讯, 而且这里假设你的本地主机不多, 你可以调整 /etc/hosts 文件,让其包含所有的本地主机. 例如:
Example 23.9. /etc/hosts
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# It is used only for "ifconfig" and other operations
# before the nameserver is started.
#
#
127.0.0.1 localhost
::1 localhost
#
# RFC 1918 specifies that these networks are "internal".
# 10.0.0.0 10.255.255.255
# 172.16.0.0 172.31.255.255
# 192.168.0.0 192.168.255.255
192.168.1.1 ape.insetti.net ape
192.168.1.2 vespa.insetti.net vespa
192.168.1.0 insetti.net
如果你通过一个ISP拨入, 或者本地运行着一台域名服务器(DNS), 你能用本地的NDNS将域名解析为IP地址, , 因为 /etc/hosts 只知道本地的主机(译者注:不见得,有时可用其屏蔽一些网址。). 要将机器配置为DNS客户端, 你需要编辑 /etc/resolv.conf, 并输入DNS服务器的地址, 除了一个可选域名,这里不能输入域名以便可以创建一个FQDN来解析. 这里假设你的DNS服务器的IP是192.168.1.2,并且服务于"home.net", 将下列内容添加到 /etc/resolv.conf:
# /etc/resolv.conf
domain home.net
nameserver 192.168.1.2
应该检查 /etc/nsswitch.conf 文件,它的解释在 Example 23.2, “nsswitch.conf”.
总结, 要配置网络必须做这些事情: 网络适配器必须安装并物理连接上了. 接下来是用ifconfig命令配置它们, 最后, 必须在 /etc/rc.conf 文件里修改接口和可用的默认路由的配置, 而且如果要使用DNS,则需要调整 /etc/resolv.conf 和 /etc/nsswitch.conf 文件。 这种网络管理方式适合于小型网络,适合于新手。