3. 配置

3.1. 准备开始使用以太网调制解调器连接

一旦您连接到系统,您的调制解调器已开启,并且您的 dhcp 服务器正在运行,如 第 2.5 节 所述,您应该获得您自己的 IP 地址,除非您放弃租约(即离线一段时间),否则该地址不会更改。 要确认 DHCP 客户端正在工作并且您有一个新的 IP 地址,请执行(以 root 身份)ifconfig,不带任何其他参数,您应该看到以下内容

eth0 Link encap:Ethernet HWaddr 00:D0:09:DE:D4:6F
	inet addr:66.190.XXX.XXX Bcast:255.255.255.255 Mask:255.255.255.0 UP BROADCAST
	RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2591777 errors:0 dropped:0
	overruns:0 frame:0 TX packets:5589 errors:0 dropped:0 overruns:0 carrier:0
	collisions:0 txqueuelen:100 RX bytes:168673636 (160.8 MiB) TX bytes:1752872
	(1.6 MiB) Interrupt:12 Base address:0xc400

lo Link encap:Local Loopback
	inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX
	packets:5168 errors:0 dropped:0 overruns:0 frame:0 TX packets:5168 errors:0
	dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1695104
	(1.6 MiB) TX bytes:1695104 (1.6 MiB)

... 这显示了系统环回设备 lo,以及 eth0,有线调制解调器已成功获取由我们的有线互联网服务提供商提供的 IP 地址(“inet addr”)。

一个简单的基于以太网的配置应该在此步骤完成。 如果您有多个可用的以太网接口并想为有线服务选择一个特定的接口,请继续阅读 第 3.2 节

3.2. 获取特定接口

假设我们要选择一个特定的以太网接口 (ethX) 作为 DHCP 有线互联网服务的接收者。 如果您以 root 身份运行 ifconfig,您将获得一个打开设备列表

eth0 Link encap:Ethernet
HWaddr 00:D0:09:DE:D4:6F
	inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 BROADCAST RUNNING
	MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0
	TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100
	RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:12 Base address:0xc400

lo Link encap:Local Loopback
	inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX
	packets:5168 errors:0 dropped:0 overruns:0 frame:0 TX packets:5168 errors:0
	dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1695104
	(1.6 MiB) TX bytes:1695104 (1.6 MiB)

... 其中 eth0 是一个标准的 NIC,我们已预先配置为 IP 地址 192.168.1.1。

注意第一行中的 HWaddr 字段,或硬件地址。 这与 MAC 或媒体访问控制地址相同,我们将使用它来为每个操作指定接口。

3.2.1. 手动将 MAC 分配给接口名称

无论您使用什么发行版,您始终可以使用命令行来指定一个以太网设备(通过 MAC)作为接口“ethX”,无论是否具有特定的 IP 地址。 当您更改设置、更换硬件或仅用于简单测试时,这可能是必要的。 使用 ifconfig

# ifconfig ethX hw ether 00:D0:09:DE:D4:6F up 

您可以在下次重启后通过调用不带选项的 ifconfig 来检查它是否工作。 有关更多选项,请参阅 man ifconfig

3.2.2. 设备的自动配置

将特定接口名称 ethX 自动分配给特定硬件接口(媒体访问控制地址)的方法因发行版而异。

3.2.2.1. Debian

如果您正在运行 Debian 系统,您可以修改/etc/network/interfaces文件,使其看起来像这样

	# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The
	loopback interface auto lo iface lo inet loopback auto eth0 iface eth0 inet
	static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 hwaddress
	ether 00:D0:09:DE:D4:6F

	auto eth1 iface eth1 inet dhcp hwaddress ether 00:04:BD:DE:42:0B

需要 auto eth0auto eth1 才能在启动时配置接口。 请注意,某些版本的 dhcp 客户端默认情况下始终抓取 eth0 作为 dhcpc 接口。 因此,即使在完成上述所有操作之后,除非您专门运行 /sbin/dhcpcd-bin eth1,否则它将无法工作。 在启动时执行此操作的简单方法是创建一个 init 脚本,将 dhcp 地址加载到正确的接口,该脚本应放置在/etc/init.d。 然后以 root 身份使用正确的参数运行 update-rc.d(请参阅 man update-rc.d)。

3.2.2.2. Red Hat

要编辑的文件将采用以下形式ifcfg-ethX,位于/etc/sysconfig/network-scripts/。 内容通常采用以下形式

 DEVICE=eth1 
# Device name. This is the interface your cable modem will use.  
ONBOOT=yes 
# load at boot BOOTPROTO=dhcp 
# sets the device to receive an IP address from a DHCP server 
HWADDR=00:04:BD:DE:42:0B 
# the hardware MAC 

以 root 身份使用您喜欢的文本编辑器程序编辑相关部分,以反映您的接口名称和 MAC 并保存它。 如果您需要的接口的文件不存在,您可以创建它,例如ifcfg-eth1。 然后,您可以从命令行使用 ifconfig eth1 up 立即使用它。 重启后,应自动加载正确的硬件设置。

3.2.2.3. Slackware

Slackware 有一个名为“netconfig”的配置实用程序,您可以在命令行中以 root 身份使用它来修改您的网络设置并通过静态 IP 地址或 dhcp 配置接口。 安装调制解调器后,您可以随时重新运行它来重新配置。

3.2.2.4. 其他发行版

如果您有要添加的特定于发行版的信息,请随时贡献; 请参阅 第 1.5 节。 在适当的情况下,请查阅您的发行版文档。

3.3. 使用 USB 接口代替以太网卡

3.3.1. USB CDCEther

如果您希望使用 USB 接口来接收数据,您将需要在内核中支持 USB 子系统,如 第 2.1 节 中所述,无论是 USB-ohci、USB-ehci 还是您的系统所需的任何 USB 主机控制器驱动程序。 有关更深入的讨论,我建议您访问 Linux-USB 项目站点

此外,还有 CDCEther(通信设备类以太网)协议,该协议在有线调制解调器中很常见。

您的内核可能通过两种方式支持设备驱动程序:静态(始终开启)编译到该内核中,或作为模块加载(在启动时或稍后通过脚本或手动加载)。 您可以通过在命令行上使用 dmesg | less 检查启动时的消息日志,来了解驱动程序是否静态编译到内核中。 经验丰富的用户可能希望采用更简单的方法,并检查当前正在运行的内核的配置文件,该文件位于/boot,通常采用以下形式config-2.X.x,这是一个可以被 grepped 的文本文件。 在命令行上,尝试 grep -e,后跟 2.4.x 内核中的 CONFIG_USB_CDCETHER 或 2.6.x 内核中的 CONFIG_USB_ETH,然后是文件名; 您应该在此字符串的末尾看到“=y=m”,分别表示静态或模块化状态。

dmesg | less 的输出应显示类似于以下内容

 Mar 2 11:00:52 K7 kernel: CDCEther.c:
0.98.6 7 Jan 2002 Brad Hards and another
Mar 2 11:00:52 K7 kernel: usb.c: registered new driver CDCEther 

在静态编译的驱动程序或启动时加载的模块的情况下。

如果您没有看到它,要了解您的内核是否已将 CDCEther(通信设备类以太网)驱动程序作为模块加载,请在命令行上以 root 身份发出 lsmod。 您应该看到模块CDCEther列在 2.4.x 内核中,或者usbnet对于 2.6.x 内核。

如果您没有看到它与 lsmod 一起列出,请尝试以 root 身份直接加载模块; 对于内核 2.4.x,这将采用以下形式

 # modprobe CDCEther 
而对于 2.6.x,命令将是
 # modprobe usbnet

如果一切顺利,您应该在系统日志文件末尾看到类似以下内容(/var/log/messages/var/log/syslog,您可能需要 root 权限才能查看这些文件)或在命令行上 dmesg | less 的末尾

 Mar 2 11:00:52 K7 kernel: CDCEther.c:
0.98.6 7 Jan 2002 Brad Hards and another
Mar 2 11:00:52 K7 kernel: usb.c: registered new driver CDCEther 

如果一切顺利,您应该在系统日志文件或 dmesg 的末尾看到类似以下内容

 Mar 2 11:00:52 K7 kernel: CDCEther.c:
0.98.6 7 Jan 2002 Brad Hards and another 
Mar 2 11:00:52 K7 kernel: usb.c: registered new driver CDCEther 

如果您对上述任何操作都不成功,并且决心使用此设备的 USB 通道,您将需要重新编译内核以支持它。 您将需要 2.4.3 或更高版本的内核。 有关重新编译内核的详细说明,我建议您访问 Kernel-HOWTO。 在 第 2.1 节 中已讨论了使此设备上的 USB 接口支持正常工作所需的选项。