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