Linux连接internet前的注意事项
如何确定网卡已经被Linux操作系统捕捉到(即发现网卡的存在并加载了相应的网卡驱动程序)?
而Linux主机的网络参数又该如何配置呢?
调制解调器(Modem): 一种计算机硬件, 可把计算机的数字信号翻译成可沿普通电话线传递的模拟信号, 而这些模拟信号又可以被电话线那头的另一个Modem所接收, 并翻译成计算机可懂得语言, 这一简单的过程完成两台计算机的通信
Linux的网卡
网卡(Network Interface card, NIC)的名称却是以网卡对应的内核模块来命名的, 而默认的名称是eth0
1. 关于内核模块
万一你的网卡芯片组开发商不愿意开放源代码的硬件驱动程序, 或者该网卡太新了, 使得linux内核来不及支持, 那么你需要通过以下方式让内核支持该网卡:
- 重新编译内核
- 编译网卡的内核模块 (需要由网卡开发商的官网下载)
如果你的网卡是自行编译安装的, 那么每次安装其他版本的内核时, 你必须重新手动编译该模块, 因为
模块与内核是有关联性的!!!
2. 观察内核捕捉的网卡信息, 网卡模块
# 观察1685与1686两行, 可以发现这部主机的网卡使用的是e1000模块,
# 而使用的芯片则是inter的网卡了
dmesg | grep -in eth
1685:e1000 0000:02:01.0: eth0: (PCI:66MHz:32-bit) 00:0c:29:4d:ee:5a
1686:e1000 0000:02:01.0: eth0: Intel(R) PRO/1000 Network Connection
#查询相关的设备数据芯片
lspci | grep -i ethernet
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
#观察网卡的模块
lsmod | head -1 ; lsmod | grep e1000
Module Size Used by
e1000 160643 0
#查看内核模块是否顺利加载
modinfo e1000
filename: /lib/modules/2.6.32-504.el6.x86_64/kernel/drivers/net/e1000/e1000.ko
# 重点!!! 特别需要注意内核版本, 因为不同内核版本使用的驱动程序是不一样的,
# 所以更改内核后, 你自己编译的硬件驱动程序也需要重新编译
version: 7.3.21-k8-NAPI
license: GPL
description: Intel(R) PRO/1000 Network Driver
3. 编译网卡的驱动程序(Option)
在购买硬件时, 请先查阅是否支持linux的字样, 有些硬件厂商在推出新硬件时, 常常会漏掉该设备的linux驱动程序
由于编译需要编译程序以及内核相关信息, 因此需要安装Gcc, Make, Kernel-Header等软件才行, yum groupinstall Development Tools
-
1.取得官网的驱动程序
去网卡对应的官网下载驱动, 例如下载的文件名为"e1000-8.0.30.tar.gz", 放于/root/目录下
-
2.解压与编译
tar -zxvf /root/e1000-8.0.30.tar.gz -C /usr/local/src
cd /usr/local/src/e1000-8.0.30
# 此时应该看到一个README的文件, 记得看一看, 这个文件内有很说明,包括如何编译, 以及这个模块支持的芯片组
cd src
make install #进行编译安装
# 这个模块会被编译完成且被安装到一下路径: /lib/modules/$(uname -r)/kernel/drivers/net/e1000/e1000.ko, 接下来我们需要重新加载该模块
-
3.模块的测试与处理
由于这个新模块已经被加载了, 我们需要删除旧模块, 才能重新加载这个模块
#1. 先删除已经加载到内存中的模块
modprobe -r e1000
#2. 加载新模块, 并查阅有没有捕捉到正确版本
modprobe e1000
lsmod | grep e1000
modinfo e1000 # 查看version是否正确, version: 8.0.30-NAPI,
# 这个模块会在下次内核更新后失效, 因为新内核会给一个新的驱动程序,
# 就不是这个8.0.30的版本了
-
4.设定开机自动启动的网卡模块(Option)
如果内核还是捕捉不到网卡, 就需要自己处理一下模块的关系了
# 很简单, 在/etc/modprobe.d/目录下建立一个名为ether.conf的文件,
# 内容将模块与网卡代号连接在一块即可
vim /etc/modprobe.d/ether.conf
alias eth0 e1000
alias eth0 e1000 #如果有两张网卡则写两个
sync ; reboot
- 5.尝试配置IP
ifconfig eth0 192.168.1.200
ifconfig eth0
4. linux网络相关的配置文件
所需网络参数 | 主要配置文件 | 重要参数 |
---|---|---|
IP, NETWORK, DHCP, GATEWAY | /etc/sysconfig/network-scripts/ifcfg-eth0 | DEVICE=网卡名<br />BOOTPROTO=协议<br />HWADDR=是否加入网卡的MAC地址<br />IPADDR=IP地址<br />NETMASK=子网掩码<br />ONBOOT=是否默认启动此接口<br />GATEWAY=网关<br />NM_CONTROLLED=额外的网管软件, 建议取消 |
主机名 | /etc/sysconfig/network | NETWORKING=要不要使用网络<br />NETWORKING_IPV6=要不要使用IPv6网络<br />HOSTNAME=主机名 |
DNS IP | /etc/resolv.conf | Name Server DNS的IP地址 |
私有 IP 对应主机名 | /etc/hosts | 私有IP 主机名 别名 |
-
/etc/services
记录构建在TCP/IP上的各种协议, 服务对应的port number, 如果你想要自定义一个新的协议与端口的对应, 就要修改此文件
-
/etc/protocols
定义IP数据包协议的相关数据, 包括ICMP/TCP/UDP的数据包协议的定义等
5. 连接internet的设置方法
连上因特网的主要方法有: (1)学术网 (2)ADSL固接与拨号 (3)Cable Modem 等方式
-
1.手动配置固定IP参数
只要记住下面这个表格内的重要文件和指令, 以后在修改网络参数的时候, 就不会出错了
修改的参数 | 配置文件与重要启动脚本 | 查看结果的指令 |
---|---|---|
IP相关参数 | /etc/sysconfig/network-scripts/ifcfg-eth0<br />/etc/init.d/network {restart|status|start|stop...} | ifconfig (IP|Netmask)<br />route -n (gateway) |
DNS | /etc/resolv.conf | dig www.baidu.com |
主机名 | /etc/sysconfig/network<br />/etc/hosts<br /> | |
# 注意两个文件的主机名要对应!!! | hostname<br />ping $(hostname)<br />reboot |
系统有非常多的服务已经启动了, 这些服务如果需要主机名, 都是
去/etc/sysconfig/network中去读取的, 而配置文件修改后,
已启动的服务已经读取这个文件, 务必要重新启动才会使修改后的数据生效 |
-
2.自动取得IP参数的方法(DHCP: Dynamic Host Configuration Protocol, 动态主机配置协议)
适合的连接方式主要有以下这些:
Cable Modem: 使用有线电视网络实现网络连接
ADSL多IP的DHCP方式: 很多ISP都推出一种项目, 让ADSL用户以DHCP的方式来自动取得IP, 不需要拨号
IP路由器或NAT搭建DHCP服务时: 当你的主机位于IP路由器的后端, 或你的LAN当中有NAT主机且NAT主机搭建了DHCP服务时, 那取得IP的方法就是这样
-
3.ADSL拨号上网(适用ADSL拨号以及光纤接入)
可以使用rp-pppoe这套软件, rp-pppoe使用的是Point to Point(ppp) over Ethernet的点对点协议所产生的网络接口, 因此当顺利拨号成功之后, 会多产生一个网络接口ppp0
mount /dev/cdrom /mnt cd /mnt/Packages rpm -ivh rp-pppoe* ppp* rpm -q rp-pppoe
ppp0是构建在以太网卡上的, 必须要有以太网卡, 且即使拨号成功, 也不可将eth0关闭, 因此拨号成功后会有如下接口:
-
lo
-
eth0
-
ppp0
这三个接口在使用上完全独立, 互不干扰
千万不要定义GATEWAY, 因为ppp0拨号成功后, ISP会主动给予ppp0接口一个可以连上Internet的Default Gateway, 如果你又定义另一个, 两个网关可能造成网络不通
-
6. 无线网络 (以笔记本电脑为例)
无线网络 (Wireless Local Area Network, WLAN)
-
1.无线网络所需要的硬件: AP, 无线网卡
无线网络中, 需要一个接收信号的设备: AP (无线接入点 Wireless Access Point), 另一个设备当然是无线网卡了
其实AP本身就是个无线路由器, 本身有两个接口, 一个与外部的IP沟通, 另一个则作为LAN内部其他主机的GATEWAY
那么其他主机上只要安装了无线网卡, 并顺利连上AP后, 就可以通过AP来连上internet了
-
2.关于AP的设置: 网络安全方面
如果AP不设置若讷河连接限制, 那任何拥有无线网卡的主机都可以通过这个AP连上你的LAN, 无线网络的安全性一定是具有很大漏洞的!!!
限制: 1.指定可以访问AP的网卡卡号(MAC) 2.设置AP连接加密机制与密钥
7. 利用无线网卡开始连接
#1. 检查无线网卡设备
lsusb #网卡可能会被监测到, 但不一定被内核加载, 需要继续检查
#2. 查看模块与对应的网卡代号(modinfo与iwconfig)
iwconfig #要出现wlan0之类的网卡才是被捕捉到!
# 如果没有加在正确驱动, 需要安装下载的RPM驱动,
# 先将USB拔出来, 再安装RPM文件
rpm -ivh kmod-rt3070sta* rt2870-firmware*
iwconfig
lo no wireless extensions
eth0 no wireless extensions
ra0 Ralink STA
#3. 利用iwconfig侦测AP
ifconfig ra0 up
iwlist ra0 scan #使用iwlist命令来使用这个无线网卡搜寻
# 再接下来修改配置文件, 这部分很麻烦, 参考如下网页: https://wiki.archlinux.org/index.php/Rt2870
ifconfig ra0 down && modprobe -r rt3070sta
vim /etc/Wireless/RT2870STA/RT2870STA.dat
modprobe rt3070sta && ifconfig ra0 up
iwconfig ra0
#4. 设定网卡配置文件(ifcfg-ethn)
vim /etc/sysconfig/network-scripts/ifcfg-ra0
#5. 启动与查看
ifup ra0
本文基于<鸟哥的Linux私房菜>, 归纳整理, 在此致谢鸟哥.