当前位置:Linux教程 - Linux综合 - 把Linux用作家里的Internet网关和服务器

把Linux用作家里的Internet网关和服务器

  By James T. Dennis, [email protected] Starshine Technical Services, http://www.starshine.org/ 翻译:gaia From Nilesh M. Hi, 我有几个问题.我想把Linux设置成我的家用电脑的服务器,让它们共享一条 Internet连接,还想把它用做Internet服务器. O.K.那是三种不同的角色: 网络服务器 (要提供哪些服务) Internet网关 (代理(proxy) 和/或 伪装(masquerading)) Internet主机/服务器 (要提供哪些服务) Linux可以同时扮演这三种角色---尽管就安全和风险评估而言"把所有的蛋放进一个篮子"未必是个好主意. 按常规,你还要考虑机器性能---不过拥有200+Pentium处理器,32M到256M RAM,4Gb到12Gb磁盘空间的典型的现代PC比起5到10年前的Unix已经是相当强大了 . 你知道不知道我能否用一个用于modem的10mbs以太网和一个用于家庭网络的100mbs以太网来设置Linux?应该从哪着手,怎么去做? 我猜想你指的是设一个10Mbps以太网用于cable modem,ISDN路由器(router)(如 Trancell/WebRamp,或Ascend Pipeline系列),或者DSL路由器.这些设备的功能是作 为你购买的cable,ISDN或xDSL服务的路由器,一般提供10Mbps接口. 你完全可以在Linux系统中安装两个或更多以太网卡.若你把任何标准的现代 100Mbps网卡用于10Mbps的局域网,它们会自动处理10Mbps的速率.所以你只管为你的系统安装两块这样的网卡,一块接路由器,另一块接高速HUB. 你通常要把以下这行加进/etc/lilo.conf文件里好让内核识别第二块网卡: append="ether=0,0,eth1" ... 0,0,表示自动检测这个设备的 IRQ 及I/O基地址.否则你就需要像下面这样指定参数: append="ether=10,0x300,eth0 ether=11,0x280,eth1" 这一行必须出现在/etc/lilo.conf的每一个Linux"段"中(即每一组引导Linux的选项,分别指向不同的Linux kernel,相应的root文件系统及其它设置). 当然了,你必须运行 /sbin/lilo命令以读入 /etc/lilo.conf 文件中的任何改变,并把它们"编译"进新的引导区和映 像("maps"). 如果你的系统安装了普通的modem---照样可以用.你可以用PPP(使用pppd程序)通过普通电话线建立Internet连接.Linux还提供了对内置ISDN, T1 "FRADs" (frame relay Access devices)和 CSU/DSU (即Codecs --- coder decoder units)的支持. 我还听说用于控制一些类型的内置ISDN卡的ipppd.我想多数其它设备都有相应的驱 动程序使它们"看似"Linux的 modem或以太网设备. 我只想买两块100mbs网卡互相连接...所以我想我并不需要集线器,对吗?我只想让两台机器连在这个简单网络上. 你要么需要一个HUB,要么需要一个"十字交叉"的ethernet patch cord.普通的5个接头(? cat 5)的ethernet patch cord没法正确直接连接两块网卡. 感谢你的每一点帮助,特别是像一些站点链接之类的信息,能让我找到教我怎样一步步设置的资料. 我不知道这样的链接.正如你可能已经知道的,Linux有一百多个HOWTO文件,其中许多和设置各种服务有关. 现在我们回到前面列出的几种不同的角色: 网络服务器(要提供哪些服务) Internet网关(代理(proxy)和/或IP伪装(masquerading)) Internet主机/服务器(要提供哪些服务) 从第一项开始说吧.你有一个平时不连在Internet上的小网络(即没有永久的Internet专线连接).所以你会希望你的系统使用"私人网络地址".这就是指保留的IP地址 ---它们不会被分配给任何Internet上的主机(所以,使用它们不会导致你的系统在选择路由时产生歧义). 有三类这样的地址: 192.168.*.* --- 255个C类网络 172.16.*.* 到 172.31.*.* --- 15个B类网络 10.*.*.* --- 1个A类网络
[1] [2] [3] 下一页 

... 我为我家里的网络分配了 192.168.42.* ... 这些地址还可以被防火墙和Internet网关(gateways)后面的系统使用. 就Linux而言,我们可以把一个Linux系统设置成本地服务器和Internet网关.我们的网关的实现可以通过"代理"(使用SOCKS或其它应用层工具在我们的私人网络和 Internet之间转发数据),或者通过IP伪装(在数据包被转发时,使用内建于内核的网络地址翻译代码重写数据包---一种网络层透明的代理方式). 不过,我们说得太远了点. 首先我们要设置Linux LAN服务器.所以,安装好Linux并设置好其网卡的IP地址,如 192.168.5.1.内核路由表里应该有指向我们的内部网络的路由,就像下面这样: route add -net 192.168.5.0 eth0 ... 这就告诉内核所有地址是 192.168.5.* 的主机位于与eth0相连的网段. 现在,想想你希望为你的其它机器提供什么服务. Linux在缺省安装时就为任何能访问你的系统的机器提供了一些常见服务 (telnet, NFS, FTP, rsh, rlogin, sendmail/SMTP, web,samba/SMB, POP和 IMAP等等).多数这些服务要通过名叫inetd的"internet服务分派程序 "才能得到.这些服务的清单在 /etc/inetd.conf里.一些其它服务,如 mail传送及转发(sendmail),和web (Apache httpd)以"standalone"模式启动 ---即由 /etc/rc.d/*/S* 脚本启动而不需要inetd.NFS是一个特殊服务,需要几个不同的守护进程参与完成---特别是 portmapper和 mountd.因为NFS是基于"RPC"(远端过程调用)的服务. 既然所有能送数据包给你的系统都可以请求你的系统提供的服务,既然多数Unix和 Linux系统提供全套服务,这就出现了一个严重的安全问题.任何服务的守护进程的任何bug会导致整个系统的不可靠,从而可能被世界任何一个角落的人利用.这就导致了TCP包装程序(TCP Wrappers)的产生.(所有主要Linux发布都缺省安装了它---但缺省设置成提供全部权限).也就是为什么我们有"防火墙"和"包过滤". 你容易以为你很隐蔽,谁也不会闯进来.然而,如今有很多cracker和script kiddies,他们花费大量时间在"端口扫描"("portscanning")上---寻找脆弱的系统 ---把他们叫过来,利用他们做进一步的portscanning sniffing, 破解口令 ,spamming,破解软件,及其它活动. 我最近安装了一条DSL线路.所以我现在可以一直连在Internet上.我装上它还不足一个月,还没有指向我的IP地址的DNS记录.但我已经做了至少三次扫描寻找一些常见的 IMAP的bug,还有一次寻找一个mountd 的bug.所以,我敢说你并没有隐避得能高枕无忧. 当你通过ISDN或POTS(plain old telephone service)线路使用拨号PPP时,你仍有些风险.当你做这些时,风险仍在你这边.然而,设置你的系统以避免这类问题还是 值得的. 所以,你有必要如下编辑两个文件: /etc/hosts.allow ALL:LOCAL /etc/hosts.deny ALL:ALL ... 这绝对是你最低限度要考虑的.这样设置意味着tcpd程序(TCP Wrappers)允许 "local"系统访问(相对于你的域名,其主机名中没有"点"的那些主机),并且拒绝其它所有主机对一切服务的访问. 为了让这项措施正常工作,你要确认所有你的本地主机在/etc/hosts文件里正确地有自己的一项,且/或你已经正确设置了你自己的DNS服务的 forward 和reverse区.你还有必要确认你的/etc/host.conf (libc5)文 件和/或 /etc/nsswitch.conf (glibc2,即libc6)设置成首先搜索 /etc/hosts文件. 我的host.conf文件是这样的: # /etc/host.conf order hosts bind multi on 我的/etc/nsswitch.conf是这样: passwd: db files nis shadow: db files nis group: db files nis hosts: files dns networks: files dns services: db files protocols: db files rpc: db files ethers: db files netmasks: files netgroup: files bootparams: files automount: files aliases: files glibc2提供了一些钩函数,所以使用模块化的服务库(service libraries)对上面文件里每一种数据库的搜索和处理是可扩展的.所以很快我们将可以看到在这个服务调度文件(services switch file)中加入 LDAP服务---那样主机(hosts)用户(passwd或shadow?),用户组 (group)等信息就可以用名为nss_ldap的模块库来查询和处理,而nss_ldap模块与 LDAP服务器打交道.我们还可能看到用某种nss_hesiod模块对一些用户和用户组信息提供"Hesiod"服务(通过DNS或secureDNS协议).甚至我们会看到用一个 nss_nds模块来提供NDS(Novell/Netware目录服务).
上一页 [1] [2] [3] 下一页 

不过话说得远了点. 一旦你做完这些,你就可以为你的LAN提供普通服务了.简单地说你如何设置你的客户系统取决于它们运行什么OS,和你想让它们得到什么服务. 比如,如果你想通过NFS让你的Linux或其它Unix客户共享文件,你要编辑你的 Linux服务器上的/etc/eXPorts文件指定哪些目录树对哪些客户系统是可访问的. 以我自己的系统上的exports文件为例: -+ # / *.starshine.org(ro,insecure,no_root_squash) # / 192.168.5.*(ro,insecure,no_root_squash) /etc/ (noaccess) /root/ (noaccess) /mnt/cdrom 192.168.5.*(insecure,ro,no_root_squash) ... 注意我在向我的LAN输出根目录时把两个目录标记为noaccess".这样做是为了防止我的网络上其它系统读我的设置文件和passwd/shadow文件.我只用 read-only模式输出我的根目录,并且只是偶尔才暂时地输出根目录(这就是为什么你看到时这几行是被注释掉的).我的CDROM设为可访问的,因为我并不担心屋子里的任何人读我的任何CD上的数据. 牢牢记住NFS就是 "no flippin security"(不堪一击的安全性) --- 任何能控制你的网络上任何系统的人都能够变成非root用户身份执行操作,并以那个用户的"名义"访问

(出处:http://www.sheup.com)


上一页 [1] [2] [3] 

不过话说得远了点. 一旦你做完这些,你就可以为你的LAN提供普通服务了.简单地说你如何设置你的客户系统取决于它们运行什么OS,和你想让它们得到什么服务. 比如,如果你想通过NFS让你的Linux或其它Unix客户共享文件,你要编辑你的 Linux服务器上的/etc/eXPorts文件指定哪些目录树对哪些客户系统是可访问的. 以我自己的系统上的exports文件为例: -+ # / *.starshine.org(ro,insecure,no_root_squash) # / 192.168.5.*(ro,insecure,no_root_squash) /etc/ (noaccess) /root/ (noaccess) /mnt/cdrom 192.168.5.*(insecure,ro,no_root_squash) ... 注意我在向我的LAN输出根目录时把两个目录标记为noaccess".这样做是为了防止我的网络上其它系统读我的设置文件和passwd/shadow文件.我只用 read-only模式输出我的根目录,并且只是偶尔才暂时地输出根目录(这就是为什么你看到时这几行是被注释掉的).我的CDROM设为可访问的,因为我并不担心屋子里的任何人读我的任何CD上的数据. 牢牢记住NFS就是 "no flippin security"(不堪一击的安全性) --- 任何能控制你的网络上任何系统的人都能够变成非root用户身份执行操作,并以那个用户的"名义"访问

(出处:http://www.sheup.com/)


上一页 [1] [2] [3] [4]