北京SEO

如何用Linux安装TCP/IP路由器

2019/10/10/17:48:05  阅读:2109  来源:谷歌SEO算法  标签: SEO优化

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 addresseth1=140.115.50.161 为连接 Subnet 的 IP address

现在我们就要来看看如何规划 Subnet.

首先我们要先决定 Subnet 中有几台机器,也就是要划分几个 IP address 於 Subnet中,我以 Subnet 中有 32 台机器为例加以说明.因此 Subnet 之 IP 范围为

  1. 140.115.50.160~140.115.50.191,WHY??
  2. 140.115.50.160===>140.115.50.10100000
  3. ^^^^^^^^^^^^^^^^^^^
  4. networkaddresshostaddress
  5. 140.115.50.191===>140.115.50.10111111
  6. ^^^^^^^^^^^^^^^^^^^
  7. networkaddresshostaddress

其 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 的网路设定做一个整理:

  1. IPaddress=140.115.50.160~140.115.50.191
  2. netmask=255.255.255.224
  3. broadcast=140.115.50.191
  4. networkaddress=140.115.50.160

如何设定 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.255ifconfig eth1 140.115.50.161 netmask 255.255.255.224 broadcast 140.115.50.191後,再执行 rc.inet1 或重新开机.可以利用 ifconfig 指令来检查设定是否正确,

以下就是 Router 值行 ifconfig 的输出:

  1. loLinkencap:LocalLoopback
  2. inetaddr:127.0.0.1Bcast:127.255.255.255Mask:255.0.0.0
  3. UPBROADCASTLOOPBACKRUNNINGMTU:2000Metric:1
  4. RXpackets:0errors:0dropped:0overruns:0
  5. TXpackets:24errors:0dropped:0overruns:0
  6. eth0Linkencap:10MbpsEthernetHWaddr04:00:23:53:90:21
  7. inetaddr:140.115.50.67Bcast:140.115.255.255Mask:255.255.0.0
  8. UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1
  9. RXpackets:107061errors:0dropped:0overruns:0
  10. TXpackets:22060errors:0dropped:0overruns:0
  11. Interrupt:5Baseaddress:0x290Memory:d0000d4000
  12. eth1Linkencap:10MbpsEthernetHWaddr12:30:51:47:23:85
  13. inetaddr:140.115.50.161Bcast:140.115.50.191Mask:255.255.255.224
  14. UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1
  15. RXpackets:107061errors:0dropped:0overruns:0
  16. TXpackets:22060errors:0dropped:0overruns:0
  17. Interrupt:6Baseaddress:0x350Memory:d8000db000
  18. 如何设定Router的KernelRoutingtable

网路位址设定好後,接下来就是要设定 Kernel Routing table,当 Router 收到一个Packet 时,会依照 Packet 中的目的位址去 Kernel Routing table 比对,而决定该往那一个网路介面送,所以 Kernel Routing table设错了,Packet 就无法由正确的网路介面送到目的地.

  1. KernelRoutingtable的设定亦加入於/etc/rc.d/rc.inet1
  2. routeaddnet140.115.0.0netmask255.255.0.0eth0
  3. routeaddnet140.115.50.160netmask255.255.255.224eth1
  4. routeadddefaultgw140.115.1.254metric1
  5. ^^^^^^^^^^^^^^^^^^^^^^^^^

此为通往校外的 Gateway後,再执行 rc.inet1 或重新开机,可以利用 route 指令来检查设定是否正确,以下就是Router 值行 route 的输出:

  1. DestinationGatewayGenmaskFlagsMSSWindowUseIface
  2. 140.115.50.160*255.255.255.224U14360234eth1
  3. 140.115.0.0*255.255.0.0U1436029125eth0
  4. 127.0.0.0*255.0.0.0U1936034lo
  5. default140.115.1.254*UG1436079eth0

如何设定 Subnet 中机器的网路位址与 Kernel Routing tableSubnet 中的机器其设定方法较 Router 简单.其只有一张网路卡,即 eth0,所以在机器 ds170 的 /etc/rc.d/rc.inet1 中加入

  1. ifconfigeth0140.115.50.170netmask255.255.255.224broadcast140.115.50.191
  2. routeaddnet140.115.50.160netmask255.255.255.224eth0
  3. routeadddefaultgw140.115.50.161metric1
  4. ^^^^^^^^^^^^^^^^^^^^^^^^^^

此我们将 Gateway 设为 Router 的 eth1 IP address设定Proxy ARP 来连通 Subnet

以上设定完成後,你就可以由 Router 连上 ds170,亦可以由 ds170 联上 Router, 但是若要由 ds170 直接连到外面 Class B net 上之机器,如 dslab,则无法直接连通, 因为ds170 直接将 package(注意是资料不是ARP) 送到 router(可由 static routingtable 中决定),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

广告内容

如何用Linux安装TCP/IP路由器 如何用Linux安装TCP/IP路由器 如何用Linux安装TCP/IP路由器

相关阅读

热门评论

萧红SEO 萧红SEO

SEO爱好者,分享SEO经验~

总篇数212

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法