什么是路由器

    路由器会分析来源端封包的 IP 表头,在表头内找出要送达的目标 IP 后,透过路由器本身的路由表 (routing table) 来将这个封包向下一个目标 (next hop) 传送。


何时需要路由器

    计算机数量小于数十部的小型企业是无须路由器的,只需要利用 hub/switch 串接各部计算机, 然后透过单一线路连接到 Internet 上即可

    如果公司分布在各楼层而不想架设路由器,而是直接以网络线串接各楼层的 hub/switch 时, 那由于同一网域的数据是透过广播来传递的,那当整个大楼的某一部计算机在广播时, 所有的计算机将会予以回应 太慢 不安全


两种方式达成路由器功能

  • 硬件功能:例如 Cisco, TP-Link, D-Link (注2) 等公司都有生产硬件路由器, 这些路由器内有嵌入式的操作系统,可以负责不同网域间的封包转译与转递等功能;

  • 软件功能:例如 Linux 这个操作系统的核心就有提供封包转递的能力。


以下讨论以太网里头最简单的路由器功能:连接两个不同网域(linux核心就可以完成)

    查看核心是否启动封包转递功能

            [root@bird ~]# cat /proc/sys/net/ipv4/ip_forward


    修改配置文件 永久启动

            [root@bird ~]# vim /etc/sysctl.conf

            net.ipv4.ip_forward = 1             改为1

            [root@bird ~]# sysctl -p   立刻让设定生效(sysctl是在核心工作时用来修改核心参数的指令)

    路由表的两种设定方法   

  • 静态路由:直接以类似 route 这个指令来直接设定路由表到核心功能当中,设定值只要与网域环境相符即可。 不过,当你的网域有变化时,路由器就得要重新设定;

  • 动态路由:透过类似 Quagga 或 zebra 软件的功能,这些软件可以安装在 Linux 路由器上, 而这些软件可以动态的侦测网域的变化,并直接修改 Linux 核心的路由表信息, 你无须手动以 route 来修改你的路由表信息喔!

 

NAT服务器 (Network Address Translation, 网络地址转换) 

    路由器两端的网域分别是 Public 与 Private IP 时,才需要 NAT 的功能

    NAT服务器本身就是一个路由器 但比路由器多了一个『 IP 转换』的功能

  • 一般来说,路由器会有两个网络接口,透过路由器本身的 IP 转递功能让两个网域可以互相沟通网络封包。 那如果两个接口一边是公共 IP (public IP) 但一边是私有 IP (private IP) 呢? 由于私有 IP 不能直接与公共 IP 沟通其路由信息,此时就得要额外的『 IP 转译』功能了;

  • Linux 的 NAT 服务器可以透过修改封包的 IP 表头数据之来源或目标 IP ,让来自私有 IP 的封包可以转成 NAT 服务器的公共 IP ,就可以连上 Internet !


静态路由器搭建

wKioL1g2gWOyRYwfAAB5nYvggMg419.gif-wh_50

动态路由器搭建

  必须要了解到对方路由器上面所提供的动态路由协议才行,这样两部路由器才能够透过该协议来沟通彼此的路由规则

  目前常见的动态路由协议有:RIPv1, RIPv2, OSPF, BGP 等。

  搞定这些动态路由的相关机制,那就得要使用 quagga 这个软件!这个软件是 zebra 计划的延伸,

wKioL1g2gbfQJ9W4AABq53KeyvY067.gif-wh_50