呼呼!终于要来到修改 Linux 网络参数的章节了!在前面的 网络基础 章节内我们知道了主机要连上 Internet 需要一些正确的网络参数设定,这些设定在 Windows 系统上面的修改则在 局域网络的架构 里面进行了说明。在这一章当中,我们则主要以固定 IP 的设定方式来修改 Linux 的网络参数,同时,也会介绍如何使用 ADSL 的拨接方式来上网,此外,因为 Cable modem 使用者也不在少数,所以我们也说明一下 Cable modem 在 Linux 下的设定方式喔! |
1.
先察看一下核心版本,因为不同的版本模块放置的路径不同。
[root@test /root]# uname -r 2.4.20-18.9 上面是以 Red Hat 9 为范例, 他的核心是 2.4 版喔。 2. 核心模块的路径: [root@test /root]# cd /lib/modules/`uname -r`/kernel/drivers/net 上面是 2.4 版的路径 [root@test /root]# cd /lib/modules/`uname -r`/net 上面是 2.2 版的路径,请依照您的实际核心来查询。 [root@test net]# ls -l via* -rw-r--r-- 1 root root 17892 Sep 7 2001 via-rhine.o 太好了!被支援到呢! |
[root@test
/root]# dmesg | grep eth
divert: allocating divert_blk for eth0 eth0: RealTek RTL8139 Fast Ethernet at 0xc4844000, 00:50:fc:20:f1:4c, IRQ 10 eth0: Identified 8139 chip type 'RTL-8139C' eth0: Setting 100mbps full-duplex based on auto-negotiated partner ability 45e1. divert: allocating divert_blk for eth1 eth1: Digital DC21041 Tulip rev 33 at 0xc4852000, 21041 mode, 00:80:C8:5A:87:10, IRQ 9. |
假设核心的
Open source 目录为 /usr/src/linux-2.4.20-18.9
[root@test root]# cd /usr/src [root@test src]# ln -s linux-2.4.20-18.9 linux |
1. 将刚刚取得的
dlkfet-4.24.tar.gz 放置到 /tmp 底下
[root@test root]# cp dlkfet-4.24.tar.gz /tmp [root@test root]# cd /tmp [root@test tmp]# tar -zxvf dlkfet-4.24.tar.gz [root@test tmp]# cd dlkfet-4.24 2. 开始编译: [root@test dlkfet-4.24]# make 到此为止,会产生一个档案模块,称为: rhinefet.o [root@test dlkfet-4.24]# cp rhinefet.o \ > /lib/modules/`uname -r`/kernel/drivers/net [root@test dlkfet-4.24]# depmod -a 特别留意,上面的路径为 2.4.xx 版本的核心!并且将该模块写入属性相依档案。 |
1. 加载模块的测试:
[root@test root]# modprobe rhinefet 请注意,不要写完整的档名, .o 不需要写,那个 rhinefet 就是 刚刚编译出来的 rhinefet.o 咯! [root@test root]# lsmod Module Size Used by Tainted: P rhinefet 14208 2 ....(略).... 2. 设定开机时加载模块 [root@test root]# vi /etc/modules.conf # 加入底下这一行 alias eth0 rhinefet 3. 也可以重新开机是看看能否正常的启动模块: [root@test root]# sync; sync; reboot |
[root@test
root]# ifconfig
eth0 192.168.1.2
[root@test root]# ifconfig eth0 Link encap:Ethernet HWaddr 00:10:DC:F1:D8:C5 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST 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:17 Base address:0xd400 Memory:fb060000-fb060038 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:41739 errors:0 dropped:0 overruns:0 frame:0 TX packets:41739 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4252360 (4.0 Mb) TX bytes:4252360 (4.0 Mb) [root@test root]# ping 192.168.1.2 -c 3 PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.106 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.016 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.013 ms --- 192.168.1.2
ping statistics ---
|
[root@test
root]# vi /etc/sysconfig/network
NETWORKING=yes <==是否启动网络,当然是啦! HOSTNAME=test.domain.name <==主机名称,要确定呦!可以随时修改啦! |
[root@test
root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 <==设定装置的名称,这个要跟文件名称对应! ONBOOT=yes <==是否在开机的的时候启动网络卡 BOOTPROTO=static <==启动的时候的 IP 取得的协定,这里是固定的, 如果是 Cable 的话,要改成 dhcp 才行。 IPADDR=192.168.1.2 <==这个就是 IP 啰! NETMASK=255.255.255.0 <==这个就是子屏蔽网络啰! NETWORK=192.168.1.0 <==这个就是该网段的第一个 IP 咯 BROADCAST=192.168.1.255 <==这个就是最后一个同网段的广播地址啰! GATEWAY=192.168.1.2 <==这个就是这块网络卡的通讯闸啰! #GATEWAYDEV=eth0 <==也可以这么写! |
[root@test
root]# /etc/rc.d/init.d/network restart <==重新启动网络接口
[root@test root]# ifup eth0 <==启动 eth0 网络卡 [root@test root]# ifdown eth0 <==关闭 eth0 网络卡 |
[root@test
root]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:50:FC:22:9C:57 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5692910 errors:0 dropped:0 overruns:0 frame:0 TX packets:5914804 errors:0 dropped:0 overruns:0 carrier:0 collisions:848 txqueuelen:100 RX bytes:522002571 (497.8 Mb) TX bytes:2498073183 (2382.3 Mb) Interrupt:10 Base address:0x6100 [root@test root]# ping -c 3 192.168.1.2 PING 192.168.1.2 (192.168.1.2) from 192.168.1.2 : 56(84) bytes of data. 64 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=318 usec 64 bytes from 192.168.1.2: icmp_seq=1 ttl=255 time=213 usec 64 bytes from 192.168.1.2: icmp_seq=2 ttl=255 time=217 usec --- 192.168.1.2
ping statistics ---
|
[root@test
root]# vi /etc/sysconfig/network
NETWORKING=yes HOSTNAME=redhat9.vbird.net |
[root@test
root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.13 NETMASK=255.255.255.0 NETWORK=192.168.1.0 BROADCAST=192.168.1.255 GATEWAY=192.168.1.2 |
[root@test
root]# vi /etc/resolv.conf
nameserver 168.95.1.1 nameserver 139.175.10.20 |
[root@test
root]# /etc/rc.d/init.d/network restart
[root@test root]# ifdown eth0 [root@test root]# ifup eth0 |
[root@test
root]# vi /etc/sysconfig/network
NETWORKING=yes HOSTNAME=redhat9.vbird.net |
[root@test
root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp <==这一行设定正确即可!下面的四个网络参数没有用! 需要留意的是,在 Openlinux 里面,这里的设定 为 DYNAMIC=dhcp 喔! IPADDR=192.168.1.13 NETMASK=255.255.255.0 NETWORK=192.168.1.0 BROADCAST=192.168.1.255 |
[root@test
root]# vi /etc/resolv.conf
nameserver 168.95.1.1 nameserver 139.175.10.20 |
[root@test
root]# /etc/rc.d/init.d/network restart
[root@test root]# ifdown eth0 [root@test root]# ifup eth0 |
1. 取消预设通讯闸
[root@test root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes <==若您需要 eth0 帮您建立内部私有网域时,这里可以写成 yes 但若不需要内部网络时,这一行请直接写成 no ,反正拨接 之后网络卡会自动被启动! BOOTPROTO=static IPADDR=192.168.1.2 NETMASK=255.255.255.0 NETWORK=192.168.1.0 BROADCAST=192.168.1.255 [root@test root]# /etc/rc.d/init.d/network restart |
[root@test
root]# rpm -qa | grep rp-pppoe
rp-pppoe-3.5-2 <==看来是已经安装了!只好移除啰! [root@test root]# rpm -e rp-pppoe |
1. 编译 SRPM:
[root@test root]# rpm --rebuild rp-pppoe-3.5-1.src.rpm [root@test root]# rpmbuild --rebuild rp-pppoe-3.5-1.src.rpm # 注:在 Red Hat 7.3 以前, rpm 的指令使用 rpm ,但是在 Red Hat 8 # 以后, SRPM 的重制指令已经独立至 rpmbuild 啰!所以请选择 # 适合您的 Linux 版本喔! ......... Wrote: /usr/src/redhat/RPMS/i386/rp-pppoe-3.5-1.i386.rpm ......... 在编译时,最后的结果(如果没有错误)会显示上面那个样子! 也就是说,您的编译完成的档案就放在上面啰! 2. 安装 rp-pppoe : [root@test root]# cd /usr/src/redhat/RPMS/i386 [root@test i386]# rpm -ivh rp-pppoe-3.5-1.i386.rpm Preparing... ########################################### [100%] 1:rp-pppoe ########################################### [100%] [root@test i386]# rpm -q rp-pppoe rp-pppoe-3.5-1 这样就安装完毕了!简单吧!如果不相信,可以查询看看! |
1. 解压缩!
[root@test root]# mv rp-pppoe-3.5.tar.gz /usr/local/src [root@test root]# cd /usr/local/src [root@test src]# tar -zxvf rp-pppoe-3.5.tar.gz 2. 侦测系统与编译执行文件: [root@test src]# cd rp-pppoe-3.5/src [root@test src]# ./configure --prefix=/usr/local [root@test src]# make; make install |
[root@test
root]# /usr/sbin/adsl-setup
>>> Enter your PPPoE user name (default bxxxnxnx@sympatico.ca): T0123456 这个时候请输入您在 ADSL 的账号,不同的 ISP 有不同的设定方式呦!请特别注意! a. 如果是 seednet 的话,应该有点像这样==> T0123456 b. 如果是 Hinet 的话,应该有点像这样====> yourname@hinet.com.tw(连同 host 也要写) >>> 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 ethn, where 'n' is a number. (default eth0): eth0 因为我们使用 eth0 联机的呀! >>> Enter the demand value (default no): <=按下 Enter 即可 这里按 enter 不用设定就好了! >>> Enter the
DNS information here: 168.95.1.1
|
[root@test
root]# adsl-start
....Connect! |
[root@test
root]# ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol inet addr:211.74.249.38 P-t-P:172.16.11.8 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:8356088 errors:0 dropped:0 overruns:0 frame:0 TX packets:8532063 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 |
[root@test
root]# vi /etc/crontab
....... 01-59/3 * * * * root /usr/sbin/adsl-start > /dev/null 2>&1 |
[root@test
root]# more /var/log/messages
May 10 18:02:22 testing pppoe[8527]: Bogus PPPoE length field (50) |
/* Check
length */
if (ntohs(packet.length) + HDR_SIZE > len) { syslog(LOG_ERR, "Bogus PPPoE length field (%u)", (unsigned int) ntohs(packet.length)); return; } |
/* Check length */
if (ntohs(packet.length) + HDR_SIZE > len) { /* syslog(LOG_ERR, "Bogus PPPoE length field (%u)", (unsigned int) ntohs(packet.length)); */ return; } |
if (plen + HDR_SIZE > len) {
syslog(LOG_ERR, "Bogus length field in session packet %d (%d)", (int) plen, (int) len); return; } |
if (plen + HDR_SIZE > len) {
/* syslog(LOG_ERR, "Bogus length field in session packet %d (%d)", (int) plen, (int) len); */ return; } |
cd /usr/local/src/rp-pppoe-3.5/src
./configure make make install |
adsl-stop
adsl-start |
[root@test
root]# vi /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 主机名称 主机别名( alias ) |
[root@test
root]# vi /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.255 linux255 |
[root@test
root]# vi /etc/resolv.conf
nameserver 168.95.1.1 nameserver 139.175.10.20 |