BBS水木清华站∶精华区

发信人: raner (毕设好无聊呀!), 信区: Linux 
标  题: 连入校园网的Linux解决方案 
发信站: BBS 水木清华站 (Sat Apr 11 16:13:53 1998) 
 
  
 现在正值校园网改造, 许多教研组都接入了校园网, 但有个常见的问题是IP地址不够, 
 这时用Linux的IP-Masquerade技术很不错. 可以实现子网内没有合法IP的机器透明 
 访问Internet(FTP/HTTP/Email等). 许多地方已经在用Linux做IP-Masq了, 我写这篇 
 文章主要是向一些还不太熟悉的同志介绍一下. 装好了Linux, 可以当router, DNS/FTP 
 /HTTP/Email/telnet/xdm... Server, 而对机器配置的要求很低, 还算是个"性价比" 
 高的解决方案吧 :-) 
  
 一般来说进入屋内的就是Hub/Switch上出来的一根网线, 接入方法大致有两种:  
 (1) 网线接router机器的网卡上,采用路由方法将局域网连入校园网, 这样屋内的局域 
     网与外面是隔离的  
 (2) 网线接Hub上, 采用Hub级连方式连入校园网, 这样屋内的局域网并入外面的子网  
 
 1. 通过Linux Router连入校园网 
 
  装一台有两块网卡的机器(486/586都行), 装Linux做router, 跑IP-Masquerade. 
  这种接入方法有firewall的功能, 外面的机器无法直接访问屋内子网. 推荐使用 
  RedHat Linux(下面的示范用RedHat), 安装配置简单, 易学易用. 关于Linux的 
  获取,安装请参见Linux版相关文章. 装好后进行以下配置: 
 
  首先当然要Linux Kernel能找到两块网卡了, 一般在/etc/lilo.conf中加上这么一句 
  append="ether=irq,io,eth1" 就可以找到第二块网卡了(irq,io填网卡的IRQ,IO, 
  若填0,0可以自动测试). 另外好多PCI的网卡kernel都能自动测到, 无需加内核参数. 
  然后运行lilo更新一下LILO就可以重起试验了. 
 
  接下来就是配IP地址和网关等东西: 
  /etc/sysconfig/network 下面是设gateway的地方,  
     NETWORKING=yes 
     FORWARD_IPV4=yes 
     HOSTNAME=host.your.domain.name 
     DOMAINNAME=your.domain.name 
     GATEWAYDEV=eth0 
     GATEWAY=166.111.68.1(for example) 
  GATEWAYDEV是指可以上 Internet那块网卡, GATEWAY是指你们的网关 
 
  /etc/sysconfig/network-scripts/ 
 下面有针对每块网卡的配置文件 
  ifcfg-lo, ifcfg-eh0, ifcfg-eth1 
 里面可以设你的IP地址, 广播地址, 网络号等, 设对了之后系统boot时就会自动建立正确 
 的静态路由表. 一般一块网卡接外面校园网, 有合法的IP地址, 另一块网卡接内部的 
 Intranet, 使用192.168等内部IP地址. 举个例子, 对外的eth0网卡地址为166.111.68.x, 
 对内设为192.168.1.1(eth1), 并给子网内的机器分配192.168.x.x的伪IP地址, 将它们的 
 gateway设为192.168.1.1就行了 
 
 然后就是要建立IP-Masquerade了, 这几句可以加在/etc/rc.d/rc.local的最后 
 
    echo "Starting IP-Masquerade service:  ipfwadm" 
    ipfwadm -F -p deny     缺省不进行IP包的forward 
    ipfwadm -F -a m -S 192.168.0.0/16 -D 0.0.0.0/0  
                           对192.168子网进行NAT(Network Address Translation) 
    insmod ip_masq_ftp     加入ftp模块, 使子网能够透明访问外面的ftp 
 
 这样就行了, Linux对192.168.0.0子网上的IP包会自动进行IP地址转换操作, 具体说就 
 是在192.168.x.x往外发IP包时Linux kernel自动将source IP替换为Linux的valid IP, 
 并选一个新的source port, 这个source port就对应了原来的机器, kernel会造一个 
 masquerade表. 而等到对方的机器回应后Linux机器根据返回IP包的port查masquerade 
 表找出源机器, 然后将该包送回给子网内的机器, 这样就实现了子网内的假IP地址对外 
 面Internet的透明访问. 现在Linux的IP-Masquerade已经实现了TCP,UDP和ICMP的 
 masquerade. 
 
 这样做的缺陷是所有连接应该由子网内首先发起, 因为由外面的机器发起的连接无法访 
 问子网内的机器. 因此在一些服务上可能有问题, 如ftp, 而这就要通过相应的module 
 来实现,insmod ip_masq_ftp加入ftp module模块后就可以实现ftp访问了, 这是通过检 
 测IP包来自动替换相应协议的某些地址来实现的. 类似的module还有ip_masq_irc.o,  
 ip_masq_raudio.o等, 都是针对相应协议的. 
 
  这种方式比用proxy的好处在于它是"透明"地访问外面的Internet, 无需对子网内机器 
  进行什么特别设置(就是设一下gateway/DNS就行了), 可以省出Netscape/IE等的proxy 
  地方. 假如还要进行计费的话, 可以去找Linux下进行IP流量统计的包, 装上就行了 
 
2. 通过Hub级连接入Internet 
 
  这种方法是指将switch/hub的引出的网线直接接入到自己局域网的Hub上, 这样自己的 
  子网就相当于并入外面的大子网内了. 这样接的好处是大家同处同一子网内, Windows 
  的网上邻居能够看见, 但是这样就无法实现firewall的功能了. 
 
  一般难以做到屋内每台机器都申请了合法的IP地址, 这样有valid IP的机器可以出 
  router, 而没有valid IP的机器只能在subnet内游弋, 无法出router(router处设了 
  static MAC-IP表), 或者先telnet到valid IP机器上再出去. 我看到好些屋是这么 
  接的, 感觉不太方便, 其实这样也是可以设IP-Masquerade的. 装一台有合法IP的 
  Linux机器(只要一块网卡)就行了. 
 
  具体的做法与第一种类似, 就是在设谁能使用IP-Masq服务时要格外小心, 不然就有可 
  能被别人盗用了, 最好也采用static MAC-IP对应技术, 使Masq服务只限于自己屋的几 
  台特定机器.也可以采用alias的方法, 使Linux机器bind两个IP(一个对外一个对内),  
  这样逻辑上会清楚一些 
  
3. Linux做网桥 
 
  比如说你有两个子网, 想用网桥把它们连起来, Linux就可以用来做软件网桥. 
  首先就是要编译一个支持网桥的内核, 然后download一个叫brcfg的utility, 运行 
 
  brcfg -enable            打开网桥 
  ifconfig eth0 promisc  
  ifconfig eth1 promisc    使两块网卡都进入promisc模式 
  (这些也可以写进/etc/rc.d/rc.local中) 
 
  好了, 你的两个子网已经连成一个逻辑上的大子网了, 你可以把netmask改大些,  
  包括两个子网就行了. 这比用router连的好处在于它们是在同一个子网内, 因此网络 
  邻居什么的都能看见, 要不然就得用wins之类的东西了 
 
  假如你用了前面第一种接入方法而又想能够看见校园网上的机器, 也可以使用网桥, 
  把两块网卡都置成promisc模式并brcfg -enable就好了 
 
4. Linux上架proxy 
   
  Linux上的proxy主要有SOCKS5, squid, fwtk2(TIS Firewall Toolkit), apache等 
  它们的功能各异, 架设方法也不大一样, 我不想在这里写了. 华南木棉站Unix斑竹 
  ali曾经写乐好多架proxy的文章, 大家可去看他的精华区 
  Linux还有许多有用的网络功能, 大家边用边体会了 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.68.98] 

BBS水木清华站∶精华区