## 4.1 Linux 连上 Internet 前的注意事项
由前面几章的数据我们知道,想要连上 Internet 你得要设定一组合法的 IP 参数才可以,主要是 IP, Netmask, Gateway, DNS IP 以及主机名等。那我们也知道,其实整个主机最重要的设定,就是『先要驱动网络卡』,否则主机连网络卡都捉不到时, 怎么设定 IP 参数都是没有用的,你说是吧!所以底下我们就来谈一谈, 你要如何确定网络卡已经被捉到,而 Linux 主机的网络参数又该如何设定?
* * *
### 4.1.1 Linux 的网络卡
你怎么确认 Linux 有捉到网络卡?Linux 底下的网络卡的名称是啥?让我们来了解一下吧!
* 认识网络卡的装置代号
在 Linux 里面的各项装置几乎都是以文件名来取代的,例如 /dev/hda 代表 IDE1 接口的第一个 master 硬盘等等。 不过,网络卡的代号 (Network Interface Card, NIC) 却是以模块对应装置名称来代替的, 而默认的网络卡代号为 eth0 ,第二张网络卡则为 eth1 ,以此类推。
* 关于网络卡的模块 (驱动程序)
我们知道网络卡其实是硬件,所以当然需要核心支持才能驱动他。一般来说,目前新版的 Linux distributions 默认可以支持的网络卡芯片组数量已经很完备了,包括大厂的 3COM, Intel 以及初阶的 RealTek, D-Link 等网络卡芯片都已经被支持, 所以使用者可以很轻易的设定好他们的网络卡。不过,万一你的网络卡芯片组开发商不愿意释出开放源 (Open Source) 的硬件驱动程序,或者是该网络卡太新了,使得 Linux 核心来不及支持时,那么你就得要透过:
1. [重新编译较新的核心,或者是](http://linux.vbird.org/linux_basic/0540kernel.php)
2. [编译网络卡的核心模块](http://linux.vbird.org/linux_basic/0540kernel.php#module)
好让核心可以支持网络卡这块硬件啦!但是,重编核心或编译网络卡核心模块都不是简单的工作, 而且有时原始码又可能无法在每部主机上面编译成功,所以万一你的网络卡真的不被默认的 Linux 网络芯片所支持,那么鸟哥真的建议直接换一块被 Linux 支持的网络卡吧,例如很便宜的螃蟹卡! 免得花了太多时间在硬件确认上面,划不来的! ^_^
另外,其实有的时候 Linux 的默认网络卡模块可能无法完全 100% 的发挥网络卡的功能的, 所以,有的时候你还是得必须要自行编译网络卡的模块才行喔!当然, 那个网络卡的模块就得要自行由网络卡开发商的官方网站下载了!不过,如果你的网络卡是自行编译安装的, 那么每次重新安装其他版本的核心时,你都必须要自行重新手动编译过该模块。 因为模块与核心是有相关性的啊!
* 观察核心所捉到的网卡信息
假设你的网络卡已经在主机上面,不论是内建的还是自行安插到 PCI 或 PCI-x 或 PCI-E 的接口上, 那么如何确认该网络卡有被核心捉到呢?很简单啊!就利用 dmesg 来查阅即可:
```
[root@www ~]# dmesg | grep -in eth
377:e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
383:e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
418:e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
419:eth0: no IPv6 routers present
```
从上面的第 377 及 383 这两行,我们可以查到这部主机的两张网络卡都使用模块为 e1000,而使用的芯片应该就是 Intel 的网络卡了。此外,这个网卡的速度可达到 1000Mbps 的全双工模式哩 (418行) !除了使用 dmesg 来查询核心侦测硬件产生的信息外,我们也可以透过 lspci 来查询相关的设备芯片数据喔!如下所示:
```
[root@www ~]# lspci | grep -i ethernet
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet
Controller (rev 02)
```
请注意,鸟哥这里使用的是 Virtualbox 仿真的那部主机的环境 (请参考[第一章 1.2.2-2](http://linux.vbird.org/linux_server/0105beforeserver.php#server_target_1)),因此使用的是模拟出来的 Intel 网卡。 如果你是使用自己的实际硬件配备安装的主机,那么应该会看到不同的芯片啦!那是正常的!
* 观察网络卡的模块
从刚刚的 dmesg 的输出讯息中,我们知道鸟哥这部主机所使用的模块是 e1000 ,那核心有顺利的载入了吗?可以利用 lsmod 去查查看。此外,这个模块的相关信息又是如何呢?使用 modinfo 来查查看吧!
```
[root@www ~]# lsmod | grep 1000
e1000 119381 0 <==确实有载入到核心中!
[root@www ~]# modinfo e1000
filename: <u>/lib/modules/2.6.32-71.29.1.el6.x86_64/kernel/drivers/net/e1000/e1000.ko</u>
version: 7.3.21-k6-NAPI
license: GPL
description: Intel(R) PRO/1000 Network Driver
.....(以下省略).....
```
上面输出信息的重点在于那个档名 (filename) 的部分!那一场串的文件名目录,就是我们驱动程序放置的主要目录所在。 得要注意的是,那个 2.6.32-71.29.1.el6.x86_64 是核心版本,因此,不同的核心版本使用的驱动程序其实不一样喔!我们才会一直强调,更改核心后, 你自己编译的硬件驱动程序就需要重新编译啦!
那你如何知道你的网络卡卡号呢?很简单啊!不管有没有启动你的网络卡,都可以使用: 『 ifconfig eth0 』来查询你的网卡卡号。如果你照着上面的信息来作, 结果发现网卡已经驱动了,恭喜你,准备到下一节去设定网络吧!如果没有捉到网卡呢?那就准备自己编译网卡驱动程序吧!
* * *
### 4.1.2 编译网卡驱动程序(Option)
一般来说,如果没有特殊需求,鸟哥不是很建议你自己编译网络卡的驱动程序!为啥? 因为想到每次更新核心都得要重新编译一次网卡驱动程序,光是想想都觉得烦~所以,没有被 Linux 预设核心支持的网卡, 就先丢着吧!
**Tips:** 鸟哥之前买了一张内建网卡的主板,该网卡并没有被当时的 Linux 预设核心所支持,所以就得要自己编译核心啦。因为 CentOS 很少更新核心,所以第一次编译完毕之后就忘记有这回事了。等到过了数周有新的核心出现后,鸟哥很开心的自动升级核心, 然后远程进行 reboot ,结果呢?没有网卡驱动程序了啦!我的主机无法联网,得要到主机前用 tty 登入后才能进行编译~唉~
![](https://box.kancloud.cn/2016-05-13_5735736501917.gif)
如果你真的很有求知欲,而且该网卡的官网有提供给 Linux 的驱动程序原始码; 或者是你很想要某些官网提供的驱动程序才有的特殊功能;又或者是你真的很不想要再买一张额外的网卡。 此时,就得要重新编译网络卡的驱动程序啰。
**Tips:** 事实上,如果你要新添购硬件时,请先查阅一下硬件包装上面是否提及支持 Linux 的字样, 因为有些硬件厂商在推出新硬件时,常常会漏掉 Linux 驱动程序的撰写。 如果包装上面有提到支持的话,那么至少你会获得官方网站所提供的驱动程序原始码啊! ^_^
![](https://box.kancloud.cn/2016-05-13_5735736501917.gif)
因为我们这里使用的网络卡是 Intel 的 82540EM Gigabit Ethernet 控制芯片,假设你需要的驱动程序得要由 Intel 官网取得最新的版本,而不要使用预设的核心所提供的版本时,那你该如何处理呢?请注意,鸟哥这个小节只是一个范例简介, 不同的厂商推出的驱动程序安装方式都有点不太一样,你得要参考驱动程序的读我档 (READ ME) 或相关档案来安装才行。 此外,如果默认驱动程序已经捉到了网络卡,鸟哥是建议使用预设的驱动程序就好了喔!
另外,由于编译程序需要编译程序以及核心相关信息,因此得要预安装 gcc, make, kernel-header 等软件才行。 但是我们选择的安装模式为『basic server』,这些软件默认都没有安装的,所以你得要先安装这些软件才行。 这些软件可以简单的透过 yum 使用『yum groupinstall 'Development Tools'』来安装,只可惜你并没有网络啊! 所以就得要透过原本光盘一个一个去处理 RPM 属性相依的问题来解决了~很麻烦的~不然的话,就得要透过更改 yum 配置文件,使用本机档案的类型来取得原版光盘的 yum 软件列表啰!鸟哥这里假设你已经安装了所需要的编译程序了, 接下来的动作是:
1. 取得官方网站的驱动程序:
再次说明,你可以复制鸟哥的环境,透过 Virtualbox 的模拟而来。我们这里使用的是 Intel 的网卡,你可以到如下的网站去下载:
* [http://downloadcenter.intel.com/SearchResult.aspx?lang=eng&keyword='e1000-'](http://downloadcenter.intel.com/SearchResult.aspx?lang=eng&keyword=%27e1000-%27)
最后 (2011/07) 下载的版本为 8.0.30,确实比上个小节提到的版本还要新!下载的文件名为 e1000-8.0.30.tar.gz, 鸟哥将它放置于 /root 底下,然后准备来处理编译过程吧!
2. 解压缩与编译:
使用 root 的身份进行如下工作吧:
```
[root@www ~]# tar -zxvf e1000-8.0.30.tar.gz -C /usr/local/src
[root@www ~]# cd /usr/local/src/e1000-8.0.30/
# 此时在该目录下有个 README 的档案,记得看一看,这个档案内会说明很多信息,
# 包括如何编译,以及这个模块所支持的芯片组哩!
[root@www e1000-8.0.30]# cd src
[root@www src]# make install
```
最后这个模块会被编译完成且安装放置于如下的档名: /lib/modules/$(uname -r)/kernel/drivers/net/e1000/e1000.ko。 接下来我们得要重载这个新的模块才行呦!
3. 模块之测试与处理
由于这个模块已经被加载啦,所以我们得要先移除旧的模块后,才能够重载这个模块。使用的方法有点像这样:
```
# 1\. 先移除已经加载在内存中的旧模块
[root@www ~]# rmmod e1000
# 此时已经捉到的网卡会整个消失不见!因为驱动程序被卸除了嘛!
# 2\. 加载新模块,并且查阅一下有没有捉到正确的版本!
[root@www ~]# modprobe e1000
[root@www ~]# modinfo e1000
filename: /lib/modules/2.6.32-71.29.1.el6.x86_64/kernel/drivers/net/e1000/e1000.ko
version: <u>8.0.30-NAPI</u> <==就是这里!
license: GPL
description: Intel(R) PRO/1000 Network Driver
```
请自行与前一小节比对一下,就会发现真的捉到正确的版本啰!不过,这个模块在下次新的核心推出后就会失效! 为什么呢?因为新核心会给一个新的驱动程序嘛!就不是你现在这个 8.0.30 的版本啰。这点还是要再次说明的。
4. 设定开机自动启动网络卡模块 (Option)
如果你在开机就能够正确的取得这个模块的话,那么你的网卡就没有问题啦!这个步骤是可以略过的。如果你的核心还是捉不到网卡, 那你可能得要自己处理一下模块的对应才行。怎么处理呢?很简单,在 /etc/modprobe.d/ 目录下建立一个名为 ether.conf 的档案, 内容将模块与网卡代号链接在一块即可!这样处理:
```
[root@www ~]# vim /etc/modprobe.d/ether.conf
alias eth0 e1000
alias eth1 e1000 <==因为鸟哥有两张网卡嘛!
[root@www ~]# sync; reboot
```
为了测试一下刚刚的设定是否会生效,通常鸟哥都会尝试一次重新启动,然后开机完成之后观察一下是否有正确的启动网络卡, 并观察一下模块加载的情况,如果一切都顺利,那就太完美了!
5. 尝试设定 IP
等到一切就绪之后,总得试看看这样的网络卡模块是否可以顺利的设定好 IP 吧? 所以我们先手动给他一个私有 IP 看看先:
```
[root@www ~]# ifconfig eth0 192.168.1.100
[root@www ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:71:85:BD
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
....(以下省略)....
```
嘿嘿!真的设定妥当哩!然后利用 ping 这个指令去 ping 一下网域内的其他计算机, 看看能不能有响应,就知道你的网络卡是否 OK 的啦!通常是没有问题的啦!
* * *
### 4.1.3 Linux 网络相关配置文件案
我们知道 TCP/IP 的重要参数主要是: IP, Netmask, Gateway, DNS IP ,而且千万不要忘记你这部主机也应该要有主机名 (hostname)!此外,我们也知道 IP 的取得有手动设定、DHCP 处理等。那么这些参数主要是写在哪些配置文件?如何对应呢? 底下就让我们来处理一番!
| 所需网络参数 | 主要配置文件档名 | 重要参数 |
| --- | --- |
| IP Netmask DHCP 与否 Gateway 等 | /etc/sysconfig/network-scripts/ifcfg-eth0 | DEVICE=网卡的代号 BOOTPROTO=是否使用 dhcp HWADDR=是否加入网卡卡号(MAC) IPADDR=就是IP地址 NETMASK=只网络屏蔽啦 ONBOOT=要不要默认启动此接口 GATEWAY=就是通讯闸啦 NM_CONTROLLED=额外的网管软件 鸟哥建议取消这个项目! |
| 主机名 | /etc/sysconfig/network | NETWORKING=要不要有网络 NETWORKING_IPV6=支持IPv6否? HOSTNAME=你的主机名 |
| DNS IP | /etc/resolv.conf | nameserver DNS的IP |
| 私有 IP 对应的主机名 | /etc/hosts | 私有IP 主机名 别名 |
你没有看错,主要需要修改的就是这四个档案而已!因此没有很困难!大家都想太多了!详细的设定后续小节再来讲, 这里先有概念即可。除此之外,还有些档案或许你也应该要知道一下比较好呦!
* /etc/services
这个档案则是记录架构在 TCP/IP 上面的总总协议,包括 http, ftp, ssh, telnet 等等服务所定义的 port number ,都是这个档案所规划出来的。如果你想要自定义一个新的协议与 port 的对应,就得要改这个档案了;
* /etc/protocols
这个档案则是在定义出 IP 封包协议的相关数据,包括 ICMP/TCP/UDP 这方面的封包协议的定义等。
大概知道上面这几个档案后,未来要修改网络参数时,那就太简单了!至于网络方面的启动指令的话,可以记得几个简单的指令即可喔!
* /etc/init.d/network restart
这个 script 最重要!因为可以一口气重新启动整个网络的参数! 他会主动的去读取所有的网络配置文件,所以可以很快的恢复系统默认的参数值。
* ifup eth0 (ifdown eth0)
启动或者是关闭某张网络接口。可以透过这个简单的 script 来处理喔! 这两个 script 会主动到 /etc/sysconfig/network-scripts/ 目录下, 读取适当的配置文件来处理啊! (例如 ifcfg-eth0)。
大概你只要只到这些基本的指令与档案,哈哈!网络参数的设定就太简单啦! 不过,最好你还是要了解 [shell script](http://linux.vbird.org/linux_basic/0340bashshell-scripts.php) ,比较好!因为可以追踪整个网络的设定条件。 why ?这是因为每个 distributions 的设定数据可能都不太相同,不过却都以 /etc/init.d/network 作为启动的 script , 因此,你只要了解到该档案的内容,很容易就追踪得出来你的配置文件所需要的内容呢!对吧!
另外,新版的 CentOS 6.x 还有额外推出一个名称为 NetworkManager 的软件机制来管理网络, 不过,鸟哥还是比较喜欢手工打造自己的网络环境,所以很建议将该软件关闭呢!还好,我们安装的『basic server ([第一章的 1.2.2-2](http://linux.vbird.org/linux_server/0105beforeserver.php#server_target))』 就这么巧的没有安装该软件!好佳在~^_^
* * *
- 鸟哥的Linux私房菜:服务器架设篇 第三版
- 第一部份:架站前的进修专区
- 作者序
- 第一章、架设服务器前的准备工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架设服务器流程
- 1.3 自我评估是否已经具有架站的能力
- 1.4 本章习题
- 第二章、基础网络概念
- 2.1 网络是个什么玩意儿
- 2.2 TCP/IP 的链结层相关协议
- 2.3 TCP/IP 的网络层相关封包与数据
- 2.4 TCP/IP 的传输层相关封包与数据
- 2.5 连上 Internet 前的准备事项
- 2.6 重点回顾:
- 2.7 本章习题
- 2.8 参考数据与延伸阅读
- 第三章、局域网络架构简介
- 3.1 局域网络的联机
- 3.2 本书使用的内部联机网络参数与通讯协议
- 第四章、连上 Internet
- 4.1 Linux 连上 Internet 前的注意事项
- 4.2 连上 Internet 的设定方法
- 4.3 无线网络--以笔记本电脑为例
- 4.4 常见问题说明
- 4.5 重点回顾
- 4.6 本章习题
- 4.7 参考数据与延伸阅读
- 第五章、 Linux 常用网络指令
- 5.1 网络参数设定使用的指令
- 5.2 网络侦错与观察指令
- 5.3 远程联机指令与实时通讯软件
- 5.4 文字接口网页浏览
- 5.5 封包撷取功能
- 5.6 重点回顾
- 5.7 本章习题
- 5.8 参考数据与延伸阅读
- 第六章、 Linux 网络侦错
- 6.1 无法联机原因分析
- 6.2 处理流程
- 6.3 本章习题
- 6.4 参考数据与延伸阅读
- 第二部分:主机的简易资安防护措施
- 第七章、网络安全与主机基本防护:限制端口, 网络升级与 SELinux
- 7.1 网络封包联机进入主机的流程
- 7.2 网络自动升级软件
- 7.3 限制联机埠口 (port)
- 7.4 SELinux 管理原则
- 7.5 被攻击后的主机修复工作
- 7.6 重点回顾
- 7.7 课后练习
- 7.8 参考数据与延伸阅读
- 第八章、路由观念与路由器设定
- 8.1 路由
- 8.2 路由器架设
- 8.3 动态路由器架设:quagga (zebra + ripd)
- 8.4 特殊状况:路由器两边界面是同一个 IP 网段: ARP Proxy
- 8.5 重点回顾
- 8.6 本章习题
- 8.7 参考数据与延伸阅读
- 第九章、防火墙与 NAT 服务器
- 9.1 认识防火墙
- 9.2 TCP Wrappers
- 9.3 Linux 的封包过滤软件:iptables
- 9.4 单机防火墙的一个实例
- 9.5 NAT 服务器的设定
- 9.6 重点回顾
- 9.7 本章习题
- 9.8 参考数据与延伸阅读
- 第十章、申请合法的主机名
- 10.1 为何需要主机名
- 10.2 注册一个合法的主机名
- 10.3 重点回顾
- 10.4 本章习题
- 10.5 参考数据与延伸阅读
- 第三部分:局域网络内常见的服务器架设
- 第十一章、远程联机服务器SSH / XDMCP / VNC / RDP
- 11.1 远程联机服务器
- 11.2 文字接口联机服务器: SSH 服务器
- 11.3 最原始图形接口: Xdmcp 服务的启用
- 11.4 华丽的图形接口: VNC 服务器
- 11.5 仿真的远程桌面系统: XRDP 服务器
- 11.6 SSH 服务器的进阶应用
- 11.7 重点回顾
- 11.8 本章习题
- 11.9 参考数据与延伸阅读
- 第十二章、网络参数控管者: DHCP 服务器
- 12.1 DHCP 运作的原理
- 12.2 DHCP 服务器端的设定
- 12.3 DHCP 客户端的设定
- 12.4 DHCP 服务器端进阶观察与使用
- 12.5 重点回顾
- 12.6 本章习题
- 12.7 参考数据与延伸阅读
- 第十三章、文件服务器之一:NFS 服务器
- 13.1 NFS 的由来与其功能
- 13.2 NFS Server 端的设定
- 13.3 NFS 客户端的设定
- 13.4 案例演练
- 13.5 重点回顾
- 13.6 本章习题
- 13.7 参考数据与延伸阅读
- 第十四章、账号控管: NIS 服务器
- 14.1 NIS 的由来与功能
- 14.2 NIS Server 端的设定
- 14.3 NIS Client 端的设定
- 14.4 NIS 搭配 NFS 的设定在丛集计算机上的应用
- 14.5 重点回顾
- 14.6 本章习题
- 14.7 参考数据与延伸阅读
- 第十五章、时间服务器: NTP 服务器
- 15.1 关于时区与网络校时的通讯协议
- 15.2 NTP 服务器的安装与设定
- 15.3 客户端的时间更新方式
- 15.4 重点回顾
- 15.5 本章习题
- 15.6 参考数据与延伸阅读
- 第十六章、文件服务器之二: SAMBA 服务器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服务器的基础设定
- 16.3 Samba 客户端软件功能
- 16.4 以 PDC 服务器提供账号管理
- 16.5 服务器简单维护与管理
- 16.6 重点回顾
- 16.7 本章习题
- 16.8 参考数据与延伸阅读
- 第十七章、区网控制者: Proxy 服务器
- 17.1 什么是代理服务器 (Proxy)
- 17.2 Proxy 服务器的基础设定
- 17.3 客户端的使用与测试
- 17.4 服务器的其他应用设定
- 17.5 重点回顾
- 17.6 本章习题
- 17.7 参考数据与延伸阅读
- 第十八章、网络驱动器装置: iSCSI 服务器
- 18.1 网络文件系统还是网络驱动器
- 18.2 iSCSI target 的设定
- 18.3 iSCSI initiator 的设定
- 18.4 重点回顾
- 18.5 本章习题
- 18.6 参考数据与延伸阅读
- 第四部分:常见因特网服务器架设
- 第十九章、主机名控制者: DNS 服务器
- 19.1 什么是 DNS
- 19.2 Client 端的设定
- 19.3 DNS 服务器的软件、种类与 cache only DNS 服务器设定
- 19.4 DNS 服务器的详细设定
- 19.5 协同工作的 DNS: Slave DNS 及子域授权设定
- 19.6 DNS 服务器的进阶设定
- 19.7 重点回顾
- 19.8 本章习题
- 19.9 参考数据与延伸阅读
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服务器之三: FTP 服务器
- 21.1 FTP 的数据链路原理
- 21.2 vsftpd 服务器基础设定
- 21.3 客户端的图形接口 FTP 联机软件
- 21.4 让 vsftpd 增加 SSL 的加密功能
- 21.5 重点回顾
- 21.6 本章习题
- 21.7 参考数据与延伸阅读
- 第二十二章、邮件服务器: Postfix
- 22.1 邮件服务器的功能与运作原理
- 22.2 MTA 服务器: Postfix 基础设定
- 22.3 MRA 服务器: dovecot 设定
- 22.4 MUA 软件:客户端的收发信软件
- 22.5 邮件服务器的进阶设定
- 22.6 重点回顾
- 22.7 本章习题
- 22.8 参考数据与延伸阅读