Linux 版 (精华区)
发信人: howdoit (教练让我上场!!!), 信区: Linux
标 题: Linux安装指南,第六部分
发信站: 哈工大紫丁香 (Tue May 18 09:00:38 1999), 转信
《Linux公报》……让Linux更富魅力!
Linux 安装指南, 第六部分
By Ron Jenkins 帆译
Copyright (C) 1998, 1999 by Ron Jenkins. This work is
provided on an "as is" basis. The author provides no warranty
whatsoever, either express or implied, regarding the work,
including warranties with respect to its merchantability or
fitness for any particular purpose.
The author welcomes corrections and suggestions. I can be
reached by electronic mail at rjenkins@qni.com, or at my
personal homepage: http://www.qni.com/~rjenkins/.
Corrections, as well as updated versions of all of the
author's scribbles may be found at the URL listed above.
更正和所有作者提到的版本更新都可以在上面列出的网站上找到。
注意:就象你所见,我换了一个新ISP。我的E-MAIL地址现在可以使
用;网页将在1月中或2月早期运行。
特别提醒:由于我接到很多信件,如果你想发送问题或要求解决问
题,请先看我主页列出的建议和提供的信息。
适用的操作系统:
Slackware version 3.6
RedHat version 5.1
Windows NT Server version 4.0
Windows NT Workstation version 4.0
我仅仅测试了我指定的操作系统。我没有使用MAC,没有使用WINDOWS
95,也没有计划使用WINDOWS98。如果谁愿意提供这几种操作系统相关
说明,我将愿意将他们包含在我的文档中。
第六部分:建立一个Internet网关
在多次的改写和测试以后,我们将使用Linux机器作为Internet网
关/代理服务器,把我们的家庭网络挂到Internet上。
这台Linux机器将在启动时自动连接到ISP,自行设置,并在断线
时自动重新建立PPP连接。 在本文中我不讨论拨号服务器的设置,这
部分内容将放到下个月的高级设置中去讨论。
在这部分的结尾,你应该能在你网络中的任意一台机器上都能访
问internet、收发电子邮件、 在你的ISP帐户的权限范围内上网冲
浪,以及其他一些你想要做的事。
和这个连载的其他每部分一样,在一些Linux发布中有些操作和其
他的发布不同。我会象以往一样在不一样的地方分开讲。
在这一部分,我讲介绍下面这些主题:
Internet网关服务的背景知识。
优点和缺点。
软硬件需求。
安装前的规划。
设置PPP界面。
设置NIC(网络接口卡)。
网关服务作为内核整体还是模块化
为网关服务重新编译内核。
测试网关机器。
配置客户机。
测试客户机。
查错排错。
一些个别服务的注释和技巧。
rc.local脚本的例子。
参考书目。
更多的信息资源。
关于作者。
快速复习一下前面和本章相关的材料:
简单的说,我们安装了一个三节点网络,这三台机器的IP地址都
被设置在192.168.1.x,使用一个公用主机文件(common host file)
来做域名解析。
作为网关的这台机器我们管它叫做gateway01.home.net,它的IP
地址是192.168.1.1。
假定网关机器有一个标准的非即插即用的modem(或着可关闭PNP功
能而手工设定COM口和IRQ的值), 不论是内置的还是外置的都可以。
注意:我收到很多关于56K V.90的modem,ISDN modem和cable
modem的询问,我把他们包括在了这个文档里。
ISDN modem的线规格和设置超出了本文的范围。但是,如果它使
用串口或网卡来连接,那么让它工作起来应该没有什么困难的。
关于56K V.90的内置modem,我理解,它具有很好的telco
interface和阻抗匹配装置(impedance matching device),它的很多
工作都是由软件和CPU来完成的。据我所知,它不能在linux上工作。
如果你的是一个外置56K V.90 modem,并且它支持贺氏的命令集
的话,可以试一下,我 很有兴趣想听你说一下使用这种外置modem的
经历。
最后,关于cable modem,我从没用过,因此我不知道这种modem
怎么样。看一下Cable Modem MINI HOW-TO吧。 很明显的一条是由于
这种设备是通过NIC连接到计算机上的,你的设置步骤应该比我们这里
的要简单。
这里假定你知道有关你ISP的一些资料,最少你应该知道这些:
拨号电话号码
你的email和新闻服务器的正式域名。
主、副域名服务器的IP地址。
你的子网掩码(通常是255.255.255.0.)
关于这个主题的更多信息,请看我去年九月份的文章,或者看ISP
Hookup and Connectivity HOW-TO这份文档。
Internet网关服务的背景知识:
People always say "You can't get something for nothing."
Well, in a sense, that's exactly what we are going to do this
time. We are going to use a standard, non-dedicated, and
inexpensive dial up account to provide Internet access for
our entire network.
人们常说“你不能不劳而获。” 就某种意义来说,我们这次就是
要这么做。我们要用一个标准的、非专用的、便宜的拨号帐户来 提供
给我们整个网络Internet访问。
要做到这个,我们就要联合防火墙软件(ipfwadm)来使用IP
Masquerading软件, 就象NIC、modem和PFM(Pure Freakin' Magic,
我这么叫)。
我们的机器要实现两个主要功能。它要作为Internet网关,同时
对本地IP地址对外界伪装。
网关功能相当简单。网关仅仅是吧两个不同的网络连接起来,并
保证所有的通信信息 能够到达正确的目的地。
IP伪装功能有时叫做网络地址转换(NAT),这个有些复杂。
基本上来说,它是一个可编程的欺骗程序。它所做的事就是接受
来自本地网(家庭网络)的请求,然后对外界欺骗说这些请求都是从网
关机器发出去的。
反过来,当外部世界的请求到来的时候,它又截住这些请求,再
撒一次谎,把它们分发给本地网上合适的用户。
关于它还有很多知识,但是鉴于我们这篇文章的目的,我们这样
理解它就可以了。
优点和缺点:
优点:
你可以以每个月18美圆的价钱把你的整个网络接到
internet上去,而不是象专用ISDN连接那样要300美
圆。
你不需要购买域名,设置域名服务器,也没有那些随
着商业安装而带来的垃圾广告邮件。
的确,我们这里的配置和安装在很多方面都比一个简
单的商业安装更复杂。 它不仅仅以一个合理的价格
给你一个家庭网络,而且你还能学到很使用的技能。
如果仅两、三个人在收发email、在web上冲浪或
telnet,这个家庭网络将会提供不错的 的性能。
缺点:
当你象这样设置的时候,某些ISP是决不会同意的。
虽然你仍然仅使用一个拨号连接,他们总是认为你有
些什么不对。然后要求你购买一个商业类型的固定帐
户,否则他们会删掉你的帐户。
根据你ISP的帐户类型的不同,你很可能仅有一个
email地址。这意味着仅仅你可以接受email。 某些
ISP提供"家庭帐户",每月交一小笔费用就可以有额
外的几个email地址。
虽然在家庭网上的每个人都能在WWW上冲浪、执行
FTP、Telnet和许多其他的应用程序, 也有一些事是
不能做的。看一下下面提到的IP_Masq的文档,上面
列出了支持的和不支持的服务和应用程序。
根据使用的PPP连接类型的不同,性能可能很差。虽
然有有某些东西可以用来提高性能和 给这么慢的连
接提速,但是在使用28.8或33.6的modem一个星期以
后,你就会梦想要ISDN或Cable Moded的连接了。
这种设置中你根本就不可能有出站服务(outbound
services)。由于你很有可能使用动态IP地址, 这会
在你每次连接的时候分配给你不同的IP,这就很困
难,而且 有些不实际来提供出站服务(outbound
services)。
软硬件需求:
RedHat
还要Dialup Workstation、Networked Workstation和C开发工具
即库。
你也可以考虑加上Mail/WWW/News Tools, DOS/Windows
Connectivity, NFS Server, SMB (Samba) Connectivity, Anonymous
FTP Server和其他你想要装的东西。
如下,跳过APACHE、INN和BIND。当提示时,继续设置你的本地网
信息。把域名服务器和网关的提示空着不添。
这里只要接受缺省的内核就可以,记住要做一张bootdisk。
最后,在安装分区的首块安装LILO,这时不要把LILO装到启动簇
上去
重新启动机器,记会连到你的home.net。把common host 文件拷
贝到网关机器上去, 就象上个月的文章中指出的其他文件一样。
Slackware
安装A, AP, D 和 N 这几个包的东西。选择菜单的安装方法。不
要安装APACHE , INN, 或 BIND。 在提示的时候继续,设置本地网络
的信息。域名服务器和网关都空着。最后为你的系统选择合适的
vmlinuz内核。
当问你是否要做bootdisk的时候,回答yes。不要安装LILO。
重启动,当你发现找不到网络的时候别慌,条到设置NIC一节,然
后跟着提示做,再重起一次。
安装前的规划:
确定你手边有上述的ISP的资料。
如果可能的话,找个朋友和你一起配这个网络。
有个人在工作中端,你在网关,这样将会使诊断测试和排错很容
易。
确定ipfwadm这个软件已经被安装到了网关机器上。 在Slackware
上这不是问题,但是在RedHat上,可能并没有安装上去。如果需要,
用glint或 这样手工安装它:
rpm -ivh <nameofipfwadm.rpm>
设置PPP界面:
RedHat
在文本模式下,你可以使用linuxconf工具,或者手工设置。在X
上,使用Control Panel/ Networking/ Network Configurator
utility。
Slackware
你不得不手工来做。下面的有些难,但上面的部分很简单,你应
该有很多办法来搞定它。
不管你用哪种linux,下面的事情都是要在每台机器上做的:
把ISP的主、副域名服务器的IP地址加到/etc/resolv.conf文件
里。这两种linux发布都一样。
增加并设置ppp0界面,在启动时激活它,使它成缺省的网关设
备。最后,你要设置ppp0界面 在连接失败的时候自动从新拨
号。
RedHat
打开Network Configurator,点击Interface的标签,选择Add,然
后跟着Network Configurator的 提示设置剩下的选项。
然后选择Routing标签,选上Network Packet Forwarding选项。
最后确认一下,缺省网关是空着的, 缺省的网关设备使ppp0,选择
Save,然后Quit。
Slackware
这里你有两个选择 - 你可以使用Slackware 3.6自身带的
pppsetup工具,也可以按 排错一节里所描述的来自己给它写脚本。
我仅推荐你自己给它写脚本这个方法,就我经验pppsetup有时会
运行不正常。 当作为中端用户程序来使用的时候,(在login以后手工
初始化它的时候,它工作的很好) 当在boot时从rc.local文件调用它
的时候有时它能连上,有时就不行。
使用写脚本的方法,看排错那节,创建和测试脚本,然后编辑
rc.local文件来在ipfwadm之前 调用这个unicom。
如果你使用pppsetup,读一下文档,然后把ppp-go这行岔道
/etc/rc.d/rc.local文件里的ipfwadm前面。
关于自动重新拨号 -- 这有一个非常好的小程序,叫pppupd,从
这里下载:
ftp://metalab.unc.edu/pub/Linux/system/network/serial/ppp/pppupd-0.23.tar.g
z
把它解包: gunzip -dc pppupd-0.23.tar.gz | tar xvf -
看一下README文件,编译它,在一个nutshell里拷贝,然后编辑
pppupd.cf.template这个模板文件 来使它合适你的机器。
你将不得不提供pppsetup脚本或在排错一节里提到的脚本的路
径、在两次ping之间的时间间隔、 以及程序要ping的主机名。
接下来,打开Makefile这个文件,查找下面的一行:
CONFIGFILE=
把它设成你前面创建的pppupd.cf文件的路径。
最后,在命令行敲入"make"命令,你就可以得到最后pppupd的二
进制版本了。把它拷贝到 /sbin或者/usr/sbin目录。
如果你想要在启动的时候就运行它,你可以在rc.local文件里加入下
面一行:
pppupd > /dev/null
但是要小心,在测试期间,它会时不时地出现捉摸不定的毛病。 我推
荐你第一次手工启动它,如果一切正常的话再把它添到rc.local里的
ipfwadm后面的位置。
在启动的时候在内核里允许IP Forwarding。在Slackware里,这
应该已经被打开了。 要确定这一点,执行这个命令: cat
/proc/sys/net/ipv4/ip_forwarding。它应该设置成1。 在RedHat
里,编辑/etc/sysconfig/network,把FORWARD_IPV4=no 改成 yes。
编辑/etc/rc.d/rc.local文件,来让这台机器为网络的剩下部分
IP伪装。这在这两种发布中是一样的。 可能有很多种方法能做到这
个,但是我是这么做的:
打开/etc/rc.d/rc.local,按这个顺序加上下面的行:
1. ipfwadm -F -p deny #deny everyone not listed below
2. ipfwadm -F -a masquerade -W ppp0 -S 192.168.1.0/24 -D
0.0.0.0
上面的第二行,激活masquerade,并指出ppp0作为家庭网络的缺省网
关。
设置NIC(网络接口卡):
RedHat
这在软件安装的过程中应该已经做玩了。如果没有的话,在文本
模式下,你可以编辑 /etc/config.modules文件,或使用linuxconf工
具。如果你在X下,你可以使用Control Panel/Networking/Network
Configurator,这在你前面设置PPP界面 时候用过的。
Slackware
要设置NIC,改变目录到/etc/rc.d/rc.modules,把适当的行的注
释去掉, 就是把相关的行前面的#号删掉。这里你可能不得不给出一
些配置信息,如IO port 或 NIC的IRQ。
无论是那种情况,都要确定让NAMESERVER 和 DEFAULT GATEWAY空
着。
网关服务作为内核整体还是模块化:
对于网关服务,你有两个选择,一个是作为系统内核的一部分(所有的
驱动程序和支持模块都编译在内核的内部) 一个是模块化的支持(这种
方法中使用标准内核,当需要的时候驱动程序和服务进程会被加载)。
在这个问题上有很多争论,就象emacs vs. vi的辩论一样,因此这
里是我的想法 - 我使用模块化,很大的原因 是以为它make的很小,
很精简,而且很重要,我很懒;-)
既然新内核已经支持了ip_masquerade, ip_forward,和ipfwadm,
那为什么还要编译新内核呢?
对,我们中的很多人都不断地更改这系统设置,这样做的目的是
为了是你尽量少走弯路。
为网关服务重新编译内核
如果你使用Slackware 3.6, RedHat 5.1或更高,这步就不用做。
如果你是一个受虐待,编译内核的指令可以在Kernel HOWTO里找
到,网关服务所须的参数在 IP_Masq MINI HOW-TO里。
测试网关机器:
如果在连线时失败或下面的测试失败了的话,跳到排错一节看看
怎么解决。
测试界面 - 简单的执行ifconfig命令,它应该返回三个界面:
lo,或loopback adapter,eth0,你的NIC, 和ppp0,连接到你的
ISP。
测试PPP界面 - 杀掉pppd守护进程几次,从modem上拔掉电话线,
看看是不是正常的重拨了。
测试物理连接 - 用IP地址ping一下外部网络(使用你ISP的DNS的
IP),然后ping一下本机。
测试域名解析 - 用域名来ping一下外部网络,例如 - ping
ftp.foobar.com,然后ping一下本地 - ping filserver01。
测试路由和网关功能 - 执行命令 netstat -r 来检测你的路由
表。应该时象这样的四部分:
1. <your ISP assigned IP>, with no Gateway, a
Genmask of 255.255.255.255, Flags set to UH, MSS of
1500, Window of 0, irtt of 0, and an Iface
(Interface) of ppp0.
2. 192.x (or localnet), no Gateway, Genmask
255.255.255.0, Flags U, MSS, Window, and irtt
identical to the above, Iface of eth0.
3. 127.x (or localhost), no Gateway, Genmask
255.0.0.0, Flags U, MSS 3584, Window and irtt same,
Iface of lo.
4. Default, <the same IP as number one (1,)>,
Gateway <your ISP's machine at the other end of the
PPP link>, Genmask 0.0.0.0, Flags UG, MSS 1500,
Window and irtt same, Iface ppp0.
配置客户机:
UNIX 客户机 -
RedHat - 使用linuxconf或Network Configurator都行,
把客户机的缺省网关设置成192.168.1.1。
Slackware - 使用netconfig,象上面那样设置缺省网关。
NT 客户机
打开控制面板 Panel/Network/Protocols/Properties/IP
Address, 然后设置缺省网关。
注意:除 http, smtp/pop3, icmp, 和 telnet以外的服务
请看下面的注释和技巧一节。
测试客户机:
如果一切正常的话,你应该能够使用浏览器、访问邮件服务器、
访问web和telnet了。
如果上面的服务中有不能工作的,请看下面的排错一节。
如果你需要其他的服务象ftp,real audio/vide,cuseeme等等,请
查阅下面的注释和技巧一节。
查错排错:
网关机
确定所有的三个界面都是经过验证的。如果没有重新设置
一下漏掉的。
检查一下你的脚本和路由表。如果需要,重新看看网关机
的PPP和NIC设置。
最后,如果你的RedHat 或 Slackware的PPP连接不通的
话,你可以试试下面的方法:
再说一次,可能还有比这更好的方法,但是我是这么做
的。你先要建两个脚本,一个 拨ISP,然后使用chat来
login,并设置PPP daemon,pppd,另一个传递给chat程序
关于modem的 信息,再在ISP的机器提示的时候告诉它
username和password。
在我的这里,我的ISP等待Username和Password以文本方式
输入。然后ISP的PPP daemon自动启动。下面的例子 仅是
按这个顺序设置的。根据你的ISP,可以适当的修改一下。
看看参考书目一节找找其他的设置。
在我这个例子里,我建立了两个脚本,一个叫unicom(用于
拨ISP,并启动pppd),另一个 叫做unicom.chat,包含了
modem信息和username/passowrd的信息。
使用你熟悉的编辑器,创建这两个脚本,保存他们,然后
把用这个命令设置它们的属性 - chmod +x <脚本名称>
unicom的内容:
#!/bin/sh
pppd connect \
'chat -v -f /sbin/unicom.chat' -detach crtscts
modem defaultroute \
/dev/modem/ 115200 &
unicom.chat的内容:
TIMEOUT 5
"" ATZ
OK ATDT2213005
ABORT "NO CARRIER"
ABORT BUSY
ABORT "NO DIALTONE"
ABORT WAITING
TIMEOUT 45
CONNECT ""
TIMEOUT 5
"name:" your username
"word:" your password
做完这个以后,把它们放到/sbin目录下。从命令行运行
unicom。如果下面的测试正常的话 从rc.local里调用
unicom,把它放到ipfwadm行的上面。
UNIX 客户机
检查一下你的终端机把网关机的NIC设成了缺省的网关(在
这个例子里是192.168.1.1)。
Ping 127.0.0.1,然后ping 机器的地址。如果失败,你的
网络设置不正确,或者NIC发生故障。
如果正常,ping 网关机的IP,如果失败,检查接线电缆。
ping 外部网络。如果失败,问题在网关,不在客户机。
现在使用域名代替IP地址重复上面的步骤。如果在某处失
败的话,就是域名解析的问题了。 检查一下DNS服务器的
resolv.conf,hosts.conf仔细检查一下hosts,bind和主机
文件。
NT 客户机
检查一下客户机把网关机的NIC设置成了缺省的网关(在这
个例子里是192.168.1.1)。
Ping 127.0.0.1,然后ping 机器的地址。如果失败,你的
网络设置不正确,或者NIC发生故障。
如果正常,ping 网关机的IP,如果失败,检查接线电缆。
ping 外部网络。如果失败,问题在网关,不在客户机。
现在使用域名代替IP地址重复上面的步骤。如果在某处失
败的话,就是域名解析的问题了。
检查一下控制面板/Network/Protocols/Properties,DNS
settings,确定在你的网络设置里 lmhosts for lookup 和
dns for lookup的开关都没有打开,主机名和域名都正
确,最后在仔细核对一遍主机文件。
一些个别服务的注释和技巧:
按这里描述,网关应该支持ICMP请求,Web冲浪,SMTP/POP3和
telnet。
对于其他的服务,特别是那些使用某些端口的的服务,你可能回
需要在启动的时候加载某些额外的模块。
至于完整的应用程序列表,请看IP_Masq HOW-TO。
最起码,你应该想要加载FTP模块和real audio模块。
看看前面提到的/etc/rc.d/rc.local文件,把下面这几行加到
ipfwadm的前面(ipfwadm这行是你前面加入的)。
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
关于模块的注意事项:
有很多模块可用,这里提到的仅是我最常使用的两个。要加载其
他的模块,照着上面的例子 把它们加进去就行了。
rc.local脚本的例子:
RedHat -
>snip of lots of stuff<
cp -f /etc/issue /etc/issue.net
echo >> /etc/issue
# Now, the stuff you add -
echo "Loading Masquerade Modules .."
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
echo "Done..."
echo "Loading Masquerade and Routing Rules.."
ipfwadm -F -p deny
ipfwadm -F -a masquerade -W ppp0 -S 192.168.1.0/24 0.0.0.0/0
echo "Done.."
# if configured properly, no pppupd required
Slackware (with my script)
>snip gpm stuff<
# Now, the stuff you add -
/usr/sbin/unicom
echo "Loading Masquerade Modules .."
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
echo "Done..."
echo "Loading Masquerade and Routing Rules.."
ipfwadm -F -p deny
ipfwadm -F -a masquerade -W ppp0 -S 192.168.1.0/24 0.0.0.0/0
echo "Done.."
pppupd > /dev/null
Slackware (with pppsetup script NOT RECOMMENDED)
>snip gpm stuff<
# Now, the stuff you add -
ppp-go -q
echo "Loading Masquerade Modules .."
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
echo "Done..."
echo "Loading Masquerade and Routing Rules.."
ipfwadm -F -p deny
ipfwadm -F -a masquerade -W ppp0 -S 192.168.1.0/24 0.0.0.0/0
echo "Done.."
pppupd > /dev/null
参考书目:
以前几期的文章:
十一月、十二月和一月的。
其他:
IP_Masq mini HOW-TO
Ethernet HOW-TO
Net-3 HOW-TO
Network Administrator's Guide
Mastering Windows NT Server 4 (3rd Edition)
ISP Hookup HOW-TO
ISP Connectivity HOW-TO
更多的信息资源:
Web 资源:
http://ipmasq.cjb.net/
http://www.redhat.com/
http://www.linuxgazette.com
http://www.linuxjournal.com/
http://www.cdrom.com/
新闻组:
alt.unix.wizards
comp.security.unix
comp.unix.admin
alt.os.linux.slackware
comp.os.linux.networking
comp.os.linux.hardware
linux.redhat.misc
印刷材料:
Linux - Installation, Configuration, and Use
(Michael Kofler)
RedHat Linux Installation Guide - versions 4.2,
5.0, 5.1 (Red Hat Software, Inc.)
Linux Gazette - (SSC Inc.)
Linux Journal - (SSC Inc.)
Linux - The Complete Reference (Walnut Creek CDROM
Books)
下个月,将介绍安装一个caching web和域名服务器,一些高级设置的
技巧和一些提高性能的秘技。
以前的 ``Linux 安装指南'' 的文章
Linux Installation Primer #1, September 1998
Linux Installation Primer #2, October 1998
Linux Installation Primer #3, November 1998
Linux Installation Primer #4, December 1998
Linux Installation Primer #5, January 1999
版权所有 (C) 1999 NJLUG
出版于第37期《Linux公报》1999年2月 中文版第四期
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:208.847毫秒