来源:自学PHP网 时间:2014-11-28 23:06 作者: 阅读:次
[导读] Linux 当 Router 的先决条件要以 Linux 当 Router,首先必须确认你的 Linux Kernel 中有支援 IP Forwarding的功能,也就是在 m...
如何用Linux安装TCP/IP路由器Linux 当 Router 的先决条件 要以 Linux 当 Router,首先必须确认你的 Linux Kernel 中有支援 IP Forwarding 的功能,也就是在 make Kernel 时,要选择 IP Forwarding 的选项。 Router 分别以两块网路卡连接 Class B net 与 Subnet,所以让Linux 在开机的时候就要抓到这两块网路卡,成了一先决的条件。其方法是在 /etc/lilo。conf 中加入 append="ether=irq_0,io_port_0,eth0 ether=irq_1,io_port_1,eth1" 後,再值行 lilo C lilo。conf,之後再重新开机,应该就可以抓到两块网路卡了。 要检查是否有抓到两块网路卡的话,可以看 /proc/net/dev 档中是否有 eth0 和 eth1 两个网路介面,或是值行 ifconfig,看是否有 eth0 和 eth1 两个网路介面, 若是没有的话,有可能是你的 Kernel 没有支援那种网路卡,那就必须再重新 make Kernel,将那种网路卡的选项包含进来。 如何规划 Subnet 的 IP address Router 的两个网路介面分别连接两个 net,且各有其 IP address,eth0=140.115.50.67 为连接 Class B net 的 IP address eth1=140.115.50.161 为连接 Subnet 的 IP address 现在我们就要来看看如何规划 Subnet. 首先我们要先决定 Subnet 中有几台机器,也就是要划分几个 IP address 於 Subnet 中,我以 Subnet 中有 32 台机器为例加以说明.因此 Subnet 之 IP 范围为
其 netmask 皆为 255.255.255.224 ===> 255.255.255.111 00000 ^^^^^^^^^^^^^^^ ^^^^^ 其 broadcast 皆为 140.115.50.191 ===> 140.115.50.101 11111 ^^^^^^^^^^^^^^ ^^^^^ host address 有 5 个 bit,因此可以决定 2^5 = 32 台机器,当然同理你也可以用 140.115.50.96 ~ 140.115.50.127 为你的 Subnet address,只要不和别人相冲就好了. 所以我们可以将 Subnet 的网路设定做一个整理:
如何设定 Router 的网路位址 决定好 Subnet 的 IP address 後,接下来就是 Config eth0 和 eth1 这两个 网路介面,於 /etc/rc.d/rc,inet1 中加入 ifconfig eth0 140.115.50.67 netmask 255.255.0.0 broadcast 140.115.255.255 ifconfig eth1 140.115.50.161 netmask 255.255.255.224 broadcast 140.115.50.191 後,再执行 rc.inet1 或重新开机.可以利用 ifconfig 指令来检查设定是否正确, 以下就是 Router 值行 ifconfig 的输出:
网路位址设定好後,接下来就是要设定 Kernel Routing table,当 Router 收到一个 Packet 时,会依照 Packet 中的目的位址去 Kernel Routing table 比对,而决定该往 那一个网路介面送,所以 Kernel Routing table设错了,Packet 就无法由正确的网路介 面送到目的地.
此为通往校外的 Gateway 後,再执行 rc.inet1 或重新开机,可以利用 route 指令来检查设定是否正确,以下就是 Router 值行 route 的输出:
如何设定 Subnet 中机器的网路位址与 Kernel Routing table Subnet 中的机器其设定方法较 Router 简单.其只有一张网路卡,即 eth0,所以在 机器 ds170 的 /etc/rc.d/rc.inet1 中加入
此我们将 Gateway 设为 Router 的 eth1 IP address 设定Proxy ARP 来连通 Subnet 以上设定完成後,你就可以由 Router 连上 ds170,亦可以由 ds170 联上 Router, 但是 若要由 ds170 直接连到外面 Class B net 上之机器,如 dslab,则无法直接连通, 因为 ds170 直接将 package(注意是资料不是ARP) 送到 router(可由 static routing table 中决定),router 再帮你在 class B network 中送 ARP,所以 dslab 会听到此 ARP ,但当 dslab 要将 ARP 送回来时,由於 router 或 gateway 会将 broadcast 和 multicast 的 package 挡下来,而不会forwarding,所以说 dslab 回应的 ARP 无法让 ds170 所收到 ,於是我们需在 Router上设定 Proxy ARP,其功能就是代 subnet 中的机 器回应 class B 中机器所 broadcast 的 ARP,让 class B 中要送往 subnet 的 package 先送到 router, 之後 router 再帮其送往 subnet 中的机器. 所以应该在 Router 的 /etc/rc.d/rc.inet1 中加入 arp s 140.115.50.170 04:00:23:53:90:21 pub
^^^^^^^^^^^^^^^^^
此为 Router eth0 介面的 hardware address |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com