网络卡的安装,与连接上 Internet 的方法介绍
由前面几章的数据我们知道,想要连上 Internet 你得要设置一组合法的 IP 参数才可以,主要是 IP, Netmask, Gateway, DNS IP
以及主机名称等。那我们也知道,其实整个主机最重要的设置,就是『先要驱动网络卡』,否则主机连网络卡都捉不到时,
怎么设置 IP 参数都是没有用的,你说是吧!所以底下我们就来谈一谈,
你要如何确定网络卡已经被捉到,而 Linux 主机的网络参数又该如何设置?
你怎么确认 Linux 有捉到网络卡?Linux 底下的网络卡的名称是啥?让我们来了解一下吧!
[root@www ~]# dmesg | grep -in eth 258:e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection 313:ADDRCONF(NETDEV_UP): eth0: link is not ready 314:e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX 315:ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready 316:eth0: no IPv6 routers present |
[root@www ~]# lspci | grep -i ethernet 00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02) |
[root@www ~]# lsmod | grep 1000 e1000 119381 0 <==确实有加载到内核中! [root@www ~]# modinfo e1000 filename: /lib/modules/2.6.18-194.8.1.el5/kernel/drivers/net/e1000/e1000.ko version: 7.3.21-k4.1-NAPI license: GPL description: Intel(R) PRO/1000 Network Driver .....(以下省略)..... |
一般来说,如果没有特殊需求,鸟哥不是很建议你自己编译网络卡的驱动程序!为啥? 因为想到每次更新内核都得要重新编译一次网卡驱动程序,光是想想都觉得烦~所以,没有被 Linux 缺省内核支持的网卡, 就先丢着吧!
如果你真的很有求知欲,而且该网卡的官网有提供给 Linux 的驱动程序原代码; 或者是你很想要某些官网提供的驱动程序才有的特殊功能;又或者是你真的很不想要再买一张额外的网卡。 此时,就得要重新编译网络卡的驱动程序啰。
鸟哥之前买过一张主板,上面的内置网卡为 RTL8111/8168B PCI-E 的网卡芯片,其实是螃蟹卡的 Gigabit 版本! 不过在 CentOS 5.2 以前的版本所提供的新的 r8169 驱动程序却有些 bug ,因为观察内核确实有捉到且加载该驱动程序, 可惜的是,该网卡却无法通过 r8169 模块来联网!也就是说,看的到吃不到啦!查找了 Google 才知道这是已知的问题, 所以只好回去下载旧的 r8168 的驱动程序啰~好在 CentOS 5.4 以后的版本已经克服 r8169 这个问题!在这里,鸟哥就以这个案例为例来介绍如何编译吧!这个芯片的下载可到 Realtek 的官网去处理:
鸟哥下载的是『communications network ICs』--> 『Network Interface Controller』-->『10/100/100M Gigabit Ethternet』-->『PCI Express』-->『Software』,然后点击 (Unix/Linux) 项目, 之后再点击『for kernel 2.6.x』的那个项目,就能够顺利的下载啰!鸟哥下载的是『r8168-8.018.00.tar.bz2』这个文件。 另外,记得啊,要编译就得要有 gcc, make, kernel-devel 等套件才行喔!不要说你忘了! 赶紧回到基础学习篇里面看看先! 假设你已经:
那接下来的编译步骤是这样的:
[root@www ~]# cd /usr/src [root@www src]# ln -s kernels/2.6.18-194.11.1.el5-i686/ linux |
[root@www src]# tar -jxvf /root/r8168-8.018.00.tar.bz2 -C /usr/local/src [root@www ~]# cd /usr/local/src/r8168-8.018.00/ # 此时在该目录下有个 README 的文件,记得看一看,这个文件内会说明很多信息, # 包括如何编译,以及这个模块所支持的芯片组哩! [root@www r8168-8.018.00]# ./autorun.sh |
[root@www r8168-8.018.00]# ll src/r8168.ko -rw-r--r-- 1 root root 158488 8月 25 00:19 src/r8168.ko # 其实 kernel 2.6 的内核都是使用 .ko 这个扩展名!所以我们需要的是这个文件 [root@www r8168-8.018.00]# cp -a src/r8168.ko \ > /lib/modules/$(uname -r)/kernel/drivers/net # 注意啊!整个网络卡驱动模块就是放在上面的目录中,不要写错了。 [root@www r8168-8.018.00]# depmod -a # 将所有的模块进行重新分析的工作!创建关连文件 [root@www r8168-8.018.00]# modprobe r8168 # 开始加载 r8168 的模块! [root@www r8168-8.018.00]# lsmod | grep r8168 # 如果有相关的字样跑出来时,就表示这个模块可以顺利的被加载啦! |
[root@www ~]# vi /etc/modprobe.conf # 修改或增加底下这一行吧! alias eth0 r8168 [root@www ~]# sync; reboot |
[root@www ~]# ifconfig eth0 192.168.1.100 [root@www ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:01:BA:77:16:52 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 ....(以下省略).... |
我们知道 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=就是通信闸啦 |
主机名称 | /etc/sysconfig/network | NETWORKING=要不要有网络 NETWORKING_IPV6=支持IPv6否? HOSTNAME=你的主机名 |
DNS IP | /etc/resolv.conf | nameserver DNS的IP |
私有 IP 对应 的主机名称 |
/etc/hosts | 私有IP 主机名称 别名 |
你没有看错,主要需要修改的就是这四个文件而已!因此没有很困难!大家都想太多了!详细的设置后续小节再来讲, 这里先有概念即可。除此之外,还有些文件或许你也应该要知道一下比较好呦!
大概知道上面这几个文件后,未来要修改网络参数时,那就太简单了!至于网络方面的启动指令的话,可以记得几个简单的指令即可喔!
大概你只要只到这些基本的指令与文件,哈哈!网络参数的设置就太简单啦! 不过,最好你还是要了解 shell script ,比较好!因为可以追踪整个网络的设置条件。 why ?这是因为每个 distributions 的设置数据可能都不太相同,不过却都以 /etc/init.d/network 作为启动的 script , 因此,你只要了解到该文件的内容,很容易就追踪得出来你的设置档所需要的内容呢!对吧!
在前几章我们就谈过,台湾地区主要连上互联网的方法有(1)学术网络、(2)ADSL 固接与拨接、(3)Cable modem 等方式,同时,手动设置 IP 参数是很重要的学习,因此,底下的各节中,第一节的手动设置固定 IP 一定要做过一次! 其他的才依照您的环境去设置去学习!
此外,由于目前使用 Linux notebook 的用户大增,而 Notebook 通常是以无线网络来连接的,
所以鸟哥在这里也尝试使用一款无线网络来进行连接设置。至于传统的 56 Kbps 拨接则因为速度较慢且使用度越来越低,
所以在这里就不多做介绍了。
所谓的固定 IP 就是指在你的网络参数当中,你只要输入既定的 IP 参数即可。那么这个既定的 IP 来自哪里呢? 一般来说,他可能来自于:
这样清楚吗?也就是说,我们取得的固定 IP 参数并非一定是 public IP 喔!反正就是一组可接受的固定 IP 就是了! 所以在架设你的环境之前,请先注意所有网络参数的来源正确性啊!好了,那么现在假设我的 Linux 主机需要的参数如下所示:
IP: 192.168.1.11 Netmask: 255.255.255.0 Gateway: 192.168.1.254 DNS IP: 168.95.1.1 Hostname: www.centos.vbird |
那么要修改的四个文件与相关的启动脚本,以及重新启动后需要用啥指令观察的重点,鸟哥再次的使用一个简单的表格来说明, 你只要记得这几个表格内的重要文件与指令,以后在修改网络参数时,就不会出现错误了!看看吧!
修改的参数 | 设置档与重要启动脚本 | 观察结果的指令 |
IP相关参数 | /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/init.d/network restart |
ifconfig (IP/Netmask) route -n (gateway) |
DNS | /etc/resolv.conf | dig www.google.com |
主机名称 | /etc/sysconfig/network /etc/hosts |
hostname (主机名) ping $(hostname) reboot |
底下我们就分别针对上面的各项设置来进行文件的重新修改啰!
[root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 <== 网络卡代号,必须要 ifcfg-eth0 相对应 BOOTPROTO=none <== 取得IP的方式,其实关键字只有dhcp,手动可输入none ONBOOT=yes <== 是否缺省启动此接口的意思 IPADDR=192.168.1.11 <== 就是 IP 啊 NETMASK=255.255.255.0 <== 就是子网络遮罩 GATEWAY=192.168.1.254 <== 就是缺省路由 HWADDR=08:00:27:F3:5D:23 <== 就是网络卡地址,若只有一张网卡,可省略此项目 # 重点是上面这几个,底下的则可以省略的啰! NETWORK=192.168.1.0 <== 就是该网段的第一个 IP,可省略 BROADCAST=192.168.1.255 <== 就是广播地址啰,可省略 MTU=1500 <== 就是最大传输单元的设置值,若不更改则可省略 #GATEWAYDEV=eth0 <== 主要路由的设备为那个,通常不用设置 |
[root@www ~]# /etc/init.d/network restart Shutting down interface eth0: [ OK ] <== 先关闭接口 Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] <== 再打开接口 Bringing up interface eth0: [ OK ] # 针对这部主机的所有网络接口 (包含 lo) 与通信闸进行重新启动,所以网络会停顿再开 |
# 检查一:当然是要先察看 IP 参数对否,重点是 IP 与 Netmask 啦! [root@www ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 08:00:27:F3:5D:23 inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fef3:5d23/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3842 errors:0 dropped:0 overruns:0 frame:0 TX packets:647 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:369985 (361.3 KiB) TX bytes:129710 (126.6 KiB) # 有出现上头那个 IP 的数据才是正确的启动;特别注意 inet addr 与 Mask 项目 # 这里如果没有成功,得回去看看设置档有没有错误,然后再重新 network restart ! # 检查二:检查一下你的路由设置是否正确 [root@www ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0 # 重点就是上面的特殊字体!前面的 0.0.0.0 代表缺省路由的设置值! # 检查三:测试看看与路由器之间是否能够连接成功呢! [root@www ~]# ping -c 3 192.168.1.254 PING 192.168.1.254 (192.168.1.254) 56(84) bytes of data. 64 bytes from 192.168.1.254: icmp_seq=1 ttl=64 time=0.519 ms 64 bytes from 192.168.1.254: icmp_seq=2 ttl=64 time=0.343 ms 64 bytes from 192.168.1.254: icmp_seq=3 ttl=64 time=0.370 ms --- 192.168.1.254 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2011ms rtt min/avg/max/mdev = 0.343/0.410/0.519/0.080 ms # 注意啊!有出现 ttl 才是正确的回应!如果出现『 Destination Host Unreachable 』 # 表示没有成功的连接到你的 GATEWAY 那表示出问题啦!赶紧检查有无设置错误。 |
[root@www ~]# vim /etc/resolv.conf nameserver 168.95.1.1 nameserver 139.175.10.20 |
# 检查四:看看 DNS 是否顺利运作了呢?很重要的测试喔! [root@www ~]# dig www.google.com ....(前面省略).... ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 428539 IN CNAME www.l.google.com. www.l.google.com. 122 IN A 74.125.71.106 ....(中间省略).... ;; Query time: 30 msec ;; SERVER: 168.95.1.1#53(168.95.1.1) ;; WHEN: Wed Aug 25 14:06:47 2010 ;; MSG SIZE rcvd: 284 |
[root@www ~]# vim /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=www.centos.vbird [root@www ~]# vim /etc/hosts 192.168.1.11 www.centos.vbird # 特别注意,这个文件的原本内容不要删除!只要添加额外的数据即可! |
[root@www ~]# hostname localhost.localdomain # 还是默认值,尚未更新成功!我们还得要进行底下的动作! # 检查五:看看你的主机名称有没有对应的 IP 呢?没有的话,开机流程会很慢! [root@www ~]# ping -c 2 www.centos.vbird PING www.centos.vbird (192.168.1.11) 56(84) bytes of data. 64 bytes from www.centos.vbird (192.168.1.11): icmp_seq=1 ttl=64 time=0.015 ms 64 bytes from www.centos.vbird (192.168.1.11): icmp_seq=2 ttl=64 time=0.028 ms --- www.centos.vbird ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.015/0.021/0.028/0.008 ms # 因为我们有设置 /etc/hosts 规定 www.centos.vbird 的 IP , # 所以才找的到主机主机名称对应的正确 IP!这时才能够 reboot 喔!重要重要! |
上面的信息中,检查的内容总共有五个步骤,这五个步骤每一步都要成功后才能够继续往下处理喔! 至于最重要的一点,当你修改过 /etc/sysconfig/network 里面的 HOSTNAME 后, 务必要重新开机 (reboot)。但是重新开机之前,请务必『 ping 主机名称』且得到 time 的回应才行!
可自动取得 IP 的环境是怎么回事啊?不是很简单吗?当你在 IP 分享器后头的主机在设置时,不是都会选择『自动取得 IP 』吗?那就是可自动取得 IP 的环境啦!那么这个自动取得是怎么回事啊?也不难了解啦,其实就是『有一部主机提供 DHCP 服务给整个网域内的电脑』就是了!例如 IP 分享器就可能是一部 DHCP 主机。那么 DHCP 是啥? 他是:Dynamic Host Configuration Protocol 的简写,顾名思义,他可以『动态的调整主机的网络参数』的意思。详细的 DHCP 功能我们会在后面的章节说明的。好了,那么这个方法适合哪些连接的方式呢?大致有这些:
你依旧需要前一小节手动设置 IP 的主机名称设置 (第三步骤),至于 IP 参数与 DNS 则不需要额外设置, 仅需要修改 ifcfg-eth0 即可喔!这样处理吧:
[root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=dhcp HWADDR=08:00:27:F3:5D:23 ONBOOT=yes |
没盖你喔!只要这三个项目即可,其他的都给他注解 (#) 掉!尤其是那个 GATEWAY 一定不能设置! 避免互相干扰!然后给他重新启动网络:
[root@www ~]# /etc/init.d/network restart Shutting down interface eth0: [ OK ] <== 先关闭接口 Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] <== 再打开接口 Bringing up interface eth0: [ OK ] Determining IP information for eth0.. [ OK ] <== 重要!是 DHCP 的特点! # 你可以通过最后一行去判断我们是否有通过 DHCP 协定取得 IP! |
我们局域网路内的 IP 分享器或 DHCP 主机,就会立刻帮你的 Linux 主机做好网络参数的规划, 包括 IP 参数与 GATEWAY 等,就通通设置妥当啦!很方便也很简单吧!
终于来到台湾最热门的 ADSL 拨接上网的介绍啦!来谈一谈如何在 Linux 上拨接上网吧! 要拨接上网时,可以使用 rp-pppoe 这套软件来帮忙(注1),所以,你必须要确认你的 Linux distributions 上面已经存在这个玩意儿了!CentOS 本身就含有 rp-pppoe ,请使用原版光盘,或者是使用 yum 来进行安装吧!
[root@www ~]# rpm -q rp-pppoe rp-pppoe-3.5-32.1 <==你瞧瞧!确实有安装喔!理论上,缺省都会安装啦! |
当然,很多 distributions 都已经将拨接这个动作归类到图形接口里面去了,所以可能没有提供 rp-pppoe 这个咚咚,没关系,你可以到底下的网站去取得的:
然后再自行手动安装即可。如何安装的过程鸟哥在这里就不谈了,请自行前往基础篇的原代码与 Tarball 章节查阅相关数据吧。 另外请注意,虽然整个连接是由主机的以太网路卡连接到 ADSL 调制解调器上,然后再通过电话线路连接到 ISP 的机房去,最后在主机上以 rp-pppoe 拨接达成连接。但是 rp-pppoe 使用的是 Point to Point (ppp) over Ethernet 的点对点协定所产生的网络接口,因此当你顺利的拨接成功之后, 会多产生一个实体网络接口『 ppp0 』喔!
而由于 ppp0 是架构在以太网路卡上的,你必须要有以太网卡,同时,即使拨接成功后,你也不能将没有用到的 eth0 关闭喔!注意注意!因此,拨接成功后就会有:
虽然 ppp0 是架构在以太网卡上面的,但上头这三个接口在使用上是完全独立的,互不相干, 所以关于 eth0 的使用上,你就可以这样思考:
[root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none BROADCAST=192.168.1.255 IPADDR=192.168.1.11 NETMASK=255.255.255.0 ONBOOT=yes |
至于其他的文件请参考手动设置 IP 的连接方法来处理即可。 当然啦,拨接之前,请确认你的 ADSL 调制解调器 (小乌龟) 已经与主机连接妥当,也取得帐号与密码,也安装好了 rp-pppoe ,然后就来处理吧!
[root@www ~]# adsl-setup Welcome to the ADSL client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly... LOGIN NAME Enter your Login Name (default root): T1234567 # 注意啊!这个帐号名称是 ISP 给的,其中如果是 SeedNet ,输入如上, # 如果是 Hinet 的话,就得要输入 username@hinet.com.tw ,后面的主机名也要写。 INTERFACE Enter the Ethernet interface connected to the ADSL modem For Solaris, this is likely to be something like /dev/hme0. For Linux, it will be ethX, where 'X' is a number. (default eth0): eth0 # 就是连接到 ADSL 调制解调器的那张网卡代号 Do you want the link to come up on demand, or stay up continuously? If you want it to come up on demand, enter the idle time in seconds after which the link should be dropped. If you want the link to stay up permanently, enter 'no' (two letters, lower-case.) NOTE: Demand-activated links do not interact well with dynamic IP addresses. You may have some problems with demand-activated links. Enter the demand value (default no): <==这里按 Enter 确定不要即可 DNS Enter the DNS information here: 168.95.1.1 Enter the secondary DNS server address here: 139.175.10.20 # 这两个设置会影响 /etc/resolv.conf 的内容喔! PASSWORD Please enter your Password: <==这里则是输入你 ISP 给的密码 Please re-enter your Password: <==再一次密码 USERCTRL Please enter 'yes' (two letters, lower-case.) if you want to allow normal user to start or stop DSL connection (default yes): no # 不让用户可以启动或关闭 ADSL 的设置比较好吧! The firewall choices are: 0 - NONE: This script will not set any firewall rules. You are responsible for ensuring the security of your machine. You are STRONGLY recommended to use some kind of firewall rules. 1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation 2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway for a LAN Choose a type of firewall (0-2): 0 # 先不要 ppp 的防火墙!后面我们会使用 Linux 本机的防火墙! Start this connection at boot time Do you want to start this connection at boot time? Please enter no or yes (default no):yes # 是否要开机的时候就拨接?如果你的调制解调器是一直开着的,这里使用 yes 较佳 Ethernet Interface: eth0 User name: T1234567 Activate-on-demand: No Primary DNS: 168.95.1.1 Secondary DNS: 139.175.10.20 Firewalling: NONE User Control: no Accept these settings and adjust configuration files (y/n)? y # 如果没有问题就按下 y 开始写入设置档吧! Adjusting /etc/sysconfig/network-scripts/ifcfg-ppp0 Adjusting /etc/resolv.conf (But first backing it up to /etc/resolv.conf.bak) Adjusting /etc/ppp/chap-secrets and /etc/ppp/pap-secrets (But first backing it up to /etc/ppp/chap-secrets.bak) (But first backing it up to /etc/ppp/pap-secrets.bak) # 上面具有特殊字体的文件主要功能是: # ifcfg-ppp0 :亦即是 ppp0 这个网络接口的设置文件; # resolv.conf :这个文件会被备份后,然后以刚刚我们上面输入的 DNS 数据取代; # pap-secrets, chap-secrets:我们输入的密码就放在这里! |
[root@www ~]# adsl-start
....Connect!
|
[root@www ~]# ifconfig [root@www ~]# route -n [root@www ~]# ping GW的IP [root@www ~]# dig www.google.com [root@www ~]# hostname |
[root@www ~]# ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:114.33.149.35 P-t-P:168.95.88.254 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:216541 errors:0 dropped:0 overruns:0 frame:0 TX packets:125009 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:283114899 (269.9 MiB) TX bytes:11393717 (10.8 MiB) |
[root@www ~]# rm /etc/sysconfig/network-scripts/ifcfg-ppp0
|
很快的,这样你就已经做好 ADSL 拨接上网的动作了!很快乐吧!但是不要忘记了,你的主机若还没有更新 (update) 系统,恐怕资安方面会有些问题哩!所以,赶紧往下两个章节读读去!
除了使用实体 RJ-45 线路来连接网络之外,由于现在笔记本电脑渐渐广为使用,因此在笔记本电脑上面的无线网络 (Wireless Local Area Network, WLAN) 也越来越重要啰~针对无线网络所提出的标准中,早期是 IEEE 802.11b / 802.11g 较为重要,其中 802.11g 这个标准的传输速度已经可以达到 54Mbps 的水准。不过,近期以来还有新的标准,那就是 802.11n (注3) ,这个标准的理论传输速度甚至可达 300Mbps 哩!所以啰,我们也得稍微介绍一下无线网络啦!
我们知道在 RJ-45 的以太网路连接环境中,以 switch/hub 以及网络卡与网络线最重要,该架构中主要以 switch/hub 串接所有的网络设备。那么在无线网络中,当然也需要一个接收信号的设备,那就是无线基地台 (Wireless Access Point, 简称 AP) 了!另一个设备当然就是安装在电脑主机上面的无线网卡啰!
其实无线基地台本身就是个 IP 分享器了,他本身会有两个接口,一个可以与外部的 IP 做沟通,另外一个则是作为 LAN 内部其他主机的 GATEWAY 啰!那其他主机上面只要安装了无线网卡,并且顺利的连上 AP 后,自然就可以通过 AP 来连上 Internet 啦!整个传输的情况可以用下图来示意:
在上图中,我们假设 PC A 与 PC B 这两部主机都有安装无线网卡,因此他们可以扫瞄到局域网路内的 AP 存在,所以可以通过这个 AP 来连上 Internet 啊。在不考虑内部 LAN 连接的情况下,AP 如何连上 Internet 呢?虽然每部 AP 的控制接口都不相同,不过绝大部分的 AP 都是提供 Web 接口来设置的,因此你可以参考每部 AP 的说明书来进行设置,在这里鸟哥就不多说了。
鸟哥底下将会以一般家庭常用的小型 AP 与无线网卡来说明一个案例,鸟哥手边有的笔记本电脑是旧式的 MiTac 内有 PIII 1GHz CPU 及 384 MB 的内存,够旧了吧!所以并没有内置无线网卡。鸟哥额外加了扩充卡 (PCMCIA) 的无线网卡,产品是 D-Link 的 DWL-G650 ,都是老式配备,单纯用来玩玩!让大家了解了解啦! 至于 AP 则是朋友家里的 PCi 这家公司制造的 BLW-54PM 无线基地台。
如果你留心一下图 4.3-1 ,那么就可以发现一件事情,那就是:『如果 AP 不设置任何连接限制,那任何拥有无线网卡的主机都可以通过这个 AP 连接上你的 LAN 』, 要知道,通常我们都会认为 LAN 是信任网域,所以内部是没有防火墙的,亦即是不设防的状态,呵呵! 如果刚好有人拿着笔记本电脑经过你的 AP 可以接收信号的范围,那么他就可以轻易的通过你的 AP 连接上你的 LAN ,并且可以通过你的 AP 连上 Internet ,如果他刚好是个喜欢搞破坏的 cracker , 哈哈!那么当他使用你的 AP 去攻击别人时,最后被发现的跳板是谁?当然是你的 AP! 那是谁会吃上官司?够清楚了吧?而且你内部主机的数据也很有可能被窃取啊!
所以啦,『无线网络的安全性一定是具有很大的漏洞的』,没办法, 因为无线网络的传输并不是通过实体的网络线,而是通过无线信号,实体网络线很好控制,无线信号你如何侦测啊?对吧! 因此,请你务必在你的 AP 上面进行好连接的限制设置,一般可以这样做限制的:
当然,上面两种方法你可以同时设置,亦即不但需要连接的密钥,而且在 AP 处也设置能够访问的 MAC 网卡, 嘿嘿!这样一来,就更安全的多了(注5)。底下让我们来介绍一下 AP 里面经常要了解的数据, 那就是 ESSID/SSID 啰!
OK!底下我们就来谈一谈,那么你的笔记本电脑如何通过无线网络实际的上线呢? 首先当然就是需要安装驱动程序啦!再来则是需要让网卡代号与模块对上关系, 然后设置了网络卡设置档后,才能够连上 Internet 啦!底下我们就一个一个步骤来说明吧!
[root@www ~]# lspci | grep -i ethernet 00:09.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 PCI Fast Ethernet (rev 02) 02:00.0 Ethernet controller: Atheros Communications Inc. Atheros AR5001X+ Wireless Network Adapter (rev 01) # 上头这个就是鸟哥的 MiTAC 旧笔电上面的以太网卡与无线网卡。这张无线网卡使用的是 # Atheros 的 AR5001X+ 芯片!因此等一下的模块我们找 ath 开头的模块名。 |
[root@www ~]# lsmod | grep ath ath5k 124029 0 mac80211 139073 1 ath5k ath 12737 1 ath5k [root@www ~]# modinfo ath5k filename: /lib/modules/2.6.18-194.el5/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko version: 0.6.0 (EXPERIMENTAL) license: Dual BSD/GPL description: Support for 5xxx series of Atheros 802.11 wireless LAN cards. ....(后面省略).... [root@www ~]# iwconfig wlan0 IEEE 802.11bg ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm RTS thr:off Fragment thr:off Encryption key:off Power Management:off # 要注意喔!新的系统中,无线网卡的网络卡代号使用 wlan0 来处理的! |
[root@www ~]# ifconfig wlan0 up
|
[root@www ~]# iwlist wlan0 scanning wlan0 Scan completed : Cell 01 - Address: 00:1F:D4:00:2C:55 Channel:1 Frequency:2.412 GHz (Channel 1) Quality=26/70 Signal level=-84 dBm Encryption key:off ESSID:"KSUWLAN_I15F" Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s 11 Mb/s; 12 Mb/s; 18 Mb/s Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s ....(中间省略).... Cell 02 - Address: 94:0C:6D:F0:24:C6 Channel:4 Frequency:2.427 GHz (Channel 4) Quality=26/70 Signal level=-84 dBm Encryption key:off ESSID:"DICLab" Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s 9 Mb/s; 12 Mb/s; 18 Mb/s ....(底下省略).... |
[root@www ~]# iwconfig wlan0 essid "KSUWLAN_I15F" # 我们学校里面并没有强硬指定需要密钥的!所以这里只要这样做即可。 # 此外,你也可以使用 iwconfig --help 查阅相关的信息喔! [root@www ~]# iwconfig wlan0 wlan0 IEEE 802.11bg ESSID:"KSUWLAN_I15F" Mode:Managed Frequency:2.412 GHz Access Point: 00:1F:D4:00:2C:55 Bit Rate=1 Mb/s Tx-Power=27 dBm RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=67/70 Signal level=-43 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 |
[root@www ~]# cd /etc/sysconfig/network-scripts [root@www network-scripts]# vim ifcfg-wlan0 DEVICE=wlan0 BOOTPROTO=dhcp ONBOOT=no <== 若需要每次都自动启动,改成 yes 即可! HWADDR=00:13:46:99:f4:3d ESSID=KSUWLAN_I15F RATE=54M <== 可以严格指定传输的速率,要与上面 iwconfig 相同,单位 b/s |
[root@www ~]# ifup wlan0 Determining IP information for wlan0... done. # 如果上面的测试都没有问题的话,那么建议你继续底下的动作 [root@www ~]# iwconfig wlan0 wlan0 IEEE 802.11bg ESSID:"KSUWLAN_I15F" Mode:Managed Frequency:2.412 GHz Access Point: 00:1F:D4:00:2C:55 Bit Rate=54 Mb/s Tx-Power=27 dBm RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=69/70 Signal level=-41 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 |
整个流程就是这么简单喔!一般来说,目前比较常见的笔记本电脑内置的 Intel 无线网络模块 (Centrino) 适用于 Linux 的 ipw2200/ipw21000 模块,所以设置上也是很快!因为 CentOS 5.x 缺省就有支持,你不必重新安装无线网卡驱动程序! 那直接通过上述的方式来处理你的无线网络即可!很快速又方便吧!本章结尾的参考数据处, 鸟哥还是列出许多与无线网卡有关的链接,你可以自行前往查阅与你的无线网卡有关的信息喔(注6)! ^_^
其实这个小节也很重要的!因为可以让你在念完理论后,了解一下如何利用那些概念来查找你的网络设置问题喔!
底下我们就针对几个常见的问题来说说看吧!
你或许曾经听过这样的问题:『我在我的内部局域网域内有几部电脑, 这几部电脑明明都是在同一个网域之内,而且系统通通没有问题,为什么我使用 pop3 或者是 ftp 连上我的 Linux 主机会停顿好久才连上?但是连上之后,速度就又恢复正常!』
由于网络在连接时,两部主机之间会互相询问对方的主机名称配合的 IP ,以确认对方的身份。 在目前的互联网上面,我们大多使用 Domain Name System (DNS) 系统做为主机名称与 IP 对应的查找,那就是我们在上面提到的 /etc/resolv.conf 文件内设置的 IP 由来, 如果没有指定正确的 DNS IP 的话,那么我们就无法查找到主机名称与 IP 的对应了。
公开的互联网可以这样设置,但是如果是我们内部网域的私有 IP 主机呢? 因为是私有 IP 的主机,所以当然无法使用 /etc/resolv.conf 的设置来查找到这部主机的名称啊! 那怎么办?要知道,如果两部主机之间无法查找到正确的主机名称与 IP 的对应, 那么将『可能』发生持续查找主机名称对应的动作,这个动作一般需要持续 30-60 秒,因此,你的该次连接将会持续检查主机名 30 秒钟,也就会造成奇怪的 delay 的情况。
这个问题最常发生在内部的 LAN ,例如使用 192.168.1.1 的主机连接到 192.168.1.2 的主机。 这个问题虽然可以通过修改软件的设置来略过主机名称的检查,但是绝大多数的软件都是缺省激活这个机制的, 因此,内部主机『老是连接时期很慢,连接成功后速度就会恢复正常』 时,通常就是这个问题啦!尤其是在 FTP 及 POP3 等网络连接软件上最常见。
那么如何避过这个情况?最简单的方法就是『给予内部的主机每部主机一个名称与 IP 的对应』即可。举例来说,我们知道每部主机都有一个主机名称为 localhost ,对应到 127.0.0.1 ,为什么呢?因为这个 127.0.0.1 与 localhost 的对应就被写到 /etc/hosts 内嘛! 当我们需要主机名称与 IP 的对应时,系统就会先到 /etc/hosts 找寻对应的设置值, 如果找不到,才会使用 /etc/resolv.conf 的设置去互联网找。这样说,你明白了吧? 也就是说,只要修改了 /etc/hosts,加入每部主机与 IP 的对应, 就能够加快主机名称的检查啰!
了解了吗?所以说,你就要将你的 私有 IP 的电脑与电脑名称写入你的 /etc/hosts 当中了!这也是为啥我们在主机名称设置的地方, 特别强调第五个检查步骤的缘故。我们来看一看 /etc/hosts 原本的设置内容吧!
[root@www ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost # 主机的 IP 主机的名称 主机的别名 |
在上面的情况中很容易就发现了设置的方法了吧!很简单吧!没错!那就是 IP 对应主机名称啦! 那么现在知道为什么我们给他 ping localhost 的时候,地址会写出 127.0.0.1 了吧! 那就是写在这个文件中的啦!而且 localhost 那一行不能拿掉呦! 否则系统的某些服务可能就会无法被启动!好了!那么将我局域网路内的所有的电脑 IP 都给他写进去!并且,每一部给他取一个你喜欢的名字, 即使与 client 的电脑名称设置不同也没关系啦! 以鸟哥为例,如果我还额外加设了 DHCP 的时候,那么我就干脆将所有的 C Class 的所有网段全部给他写入 /etc/hosts 当中,有点像底下这样:
[root@www ~]# vim /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.1.1 linux001 192.168.1.2 linux002 192.168.1.3 linux003 ......... ......... 192.168.1.254 linux254 |
如此一来,不论我哪一部电脑连上来,不论是在同一个网段的哪一个 IP , 我都可以很快速的追查到!嘿嘿!那么区内网络互连的时候,就不会多等个好几时秒钟啰!
很多朋友常问的一个问题『咦!我可以拨接上网了,也可以 ping 到奇摩雅虎的 IP ,但为何就是无法直接以网址连上 Internet 呢!』嘿!被气死! 前面不是一直强调那个 DNS 解析的问题吗?对啦!就是名称解析不对啦!赶快改一下 /etc/resolv.conf 这个文件吧!改成上层 ISP 给你的 DNS 主机的 IP 就可以啦!例如 Hinet 的 168.95.1.1 及 Seednet 的 139.175.10.20 啰!例如底下的范例(这个范例就可以照抄了! ^_^):
[root@www ~]# vi /etc/resolv.conf nameserver 168.95.1.1 nameserver 139.175.10.20 |
朋友们常常会在这个地方写错,因为很多书上都说这里要设置成为 NAT 主机的 IP , 那根本就是不对的!你应该要将所有管理的电脑内,关于 DNS 的设置都直接使用上面的设置值即可! 除非你的上层环境有使用防火墙,那才另外考量!
记得我们在前两章提到的网络基础当中,不是讲了很多缺省路由 (default gateway) 相关的说明吗? 缺省路由通常仅有一个,用来做为同一网域的其他主机传递非本网域的封包闸道。 但我们也知道在每个网络设置文件 (/etc/sysconfig/network-scripts/ifcfg-ethx) 内部都可以指定『 GATEWAY 』这个参数,若这个参数重复设置的话,那可就麻烦啦!
举例来说,你的 ifcfg-eth0 用来做为内部网域的沟通,所以你在该文件内设置 GATEWAY 为你自己的 IP , 但是该主机为使用 ADSL 拨接,所以当拨接成功后会产生一个 ppp0 的接口,这个 ppp0 接口也有自己的 default gateway ,好了,那么当你要将封包发送到 Yahoo 这个非为本网域的主机时, 这个封包是要传到 eth0 还是 ppp0 呢?因为两个都有 default gateway 啊!
没错!很多朋友就是这里搞不懂啦!常常会错乱~所以,请注意, 你的 default gateway 应该只能有一个, 如果是拨接,请不要在 ifcfg-eth0 当中指定 GATEWAY或 GATEWAYDEV 等变量,重要重要!
更多的网络调试请参考后续章节Linux 网络调试 的说明。