当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 以Linux做路由器的问题

Unix/Linux
Linux 备份 恢复方法
Linux玩CS反恐精英的方法
在一个ISO镜像中集成多个不同的linux发行版,可刻盘,可引导
Linux 快捷键使用
Linux DHCP 服务器配置方法介绍
Linux 22端口的修改方法
Linux 记录会话过程的命令
Linux 后台执行程序如何操作?
linux Wget命令来浏览网页的方法
Linux tail命令的巧妙应用
Wine 中文存在很多的乱码怎么解决方法
linux 新手教程之创建锁文件的方法
配置Linux 保证其系统的安全
Linux DHCP协议实现过程
Linux系统下破解SAM密码
linux/unix vi 编辑器用法详解
Linux 误删文件的解决方法
Linux系统下的历史记录删除方法
Red Hat Linux 安全设置指南
Linux基本命令-注销、关机、重启

Unix/Linux 中的 以Linux做路由器的问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 46 ::
收藏到网摘: n/a

  以 Linux 当 router 的方法                                by C.W.Huang 
********************************************************************** 
          本文欢迎非营利性质的转载,以便能让更多人受惠! 
             但若欲引用於商业用途需先知会原作者. 
********************************************************************** 
  利用 Linux 当 router 其实很简单.首先你在 compile kernel 时要选 
IP forwarding. 用这个 kernel 开机,看看能不能抓到两块网路卡.如果 
不行的话在 /etc/lilo.conf 上加上 
 append="ether=irq,io-port,eth0 ether=irq,io-port,eth1" 
再重跑 lilo. 或者如果你用 loadlin 的话,用 
 loadlin vmlinuz root=/dev/??? ro ether=irq,io,eth0 ether=irq,io,eth1 
应该就可以了.注意看开机时有没有抓到? 或看 /proc/net/dev 有没有 eth0 
和 eth1? 有的话就对了(如果没有就要 recompile kernel 了.请参考 "为何 
我的网路连不出去" 一文). 
  接下来就是 config 这两个界面了.假设你的网路环境如下: 
                                                | 
                                                |   +-----+ 
                                                +---| DOS |  140.122.52.236 
  +---------+             eth0 +-----+ eth1     |   +-----+ 
  | gateway |------------------|Linux|----------+           分出来的次子网 
  +---------+                  +-----+          |   +-----+ 
 140.122.52.254            140.122.52.235       +---| Sun | 140.122.52.234 
                               router           |   +-----+ 
                                                | 
                                                可再接多台机器 
  eth0 界面是用来跟外面的网路相连的.你可以用一般的 netconfig 来设定它. 
(若不会的话还是请参考精华区中的文章).  
  我们是利用 Linux 的 Proxy Arp 功能,当外界有封包要送到你的次子网路时, 
Linux 会回应此封包.所以对外界来说你的次子网就是存在的了.因此很重要的一点 
是,你的次子网必须要是从你原来的子网路上割出来的!! 
  以上面的情形为例,如果预估你的次子网约有五、六台左右的机器,你可以决定 
要割出来的次子网的 IP 范围是从 140.122.52.232 -- 140.122.52.239 共 8 个位 
址(一定是 2^n 啦! 不懂吗? 自己想...:) 算一算 netmask 应是 255.255.255.248, 
broadcast 是 140.122.52.239. 於是 eth1 应该这样 config: 
# ifconfig eth1 140.122.52.235 netmask 255.255.255.248 broadcast 140.122.52.23. 
?鲟恶□□□# route add -net 140.122.52.232 netmask 255.255.255.248 gw  
140.122.52.235 eth1 
这样你所有从 140.122.52.232 到 140.122.52.239 的封包都会往 eth1 送.试试看能 
不能从你的次子网 telnet 到 Linux 上? 若可以的话就成功了一大半....^_^ 
  不知你是否注意到,我将 eth0 和 eth1 的 IP address 设为一样! 常有人认为,有 
两块网路卡就要有两个 IP address. 但这是没有必要的! 你可以将两个设为相同!! 
  但是你若想试著直接 telnet 到外面去,就会发现不通! 这是因为尚未设定 arp 
table 的关系.以上面为例,如果你想要 DOS 那台机器可以跨出次子网,就要在 
Linux 上设 arp: 
# arp -s 140.122.52.236 08:00:77:14:00:00 pub 
                        ^^^^^^^^^^^^^^^^^ 
                        ↑  
                        这是你 eth0 界面的 hardware address, 可用 ifconfig查到. 
 
  这时应该就可以直接从 DOS telnet 到外面网路上的机器了! 也可以从外面 telnet 
上来...Oh! Sorry! DOS 是不能 telnet 上去的.... 若是 Linux 当然就没问题啦!! 
你如果在外面用 traceroute 指令查看