Router是什么 #
路由器(Router)是一个用于连接不同网络的设备,它的主要作用是连接不同网络。路由器通常工作在 OSI 模型的第三层(网络层),负责管理数据包的路径选择和转发。
主要特性 #
- IP 转发:Linux 内核支持 IP 包的转发功能,能够将数据包从一个网络接口转发到另一个接口。通过简单的配置可以实现基本的路由器功能。
- 流量控制和管理:Linux 路由器可以使用 tc(Traffic Control)工具来管理网络带宽,限制流量,进行流量优先级排序,防止网络拥塞。
- VPN 支持:Linux 路由器可以通过 OpenVPN、IPsec 等协议实现虚拟专用网(VPN)功能,建立安全的网络隧道,保护数据在公网上传输。
- QoS(服务质量):可以使用 tc 或类似的工具实现 QoS 功能,优先处理特定类型的网络流量,确保关键应用的带宽和延迟需求得到满足。
- 动态路由协议:Linux 支持动态路由协议,如 OSPF(开放式最短路径优先协议)、BGP(边界网关协议)等。通过使用软件如 Quagga 或 FRRouting(FRR),可以实现复杂的大规模动态路由环境。
- DHCP 和 DNS 服务:Linux 路由器可以配置为 DHCP 服务器,自动为内部网络分配 IP 地址。同时,它也可以运行 DNS 服务(如 dnsmasq),提供 DNS 解析和缓存功能。
工作机制 #
- IP 包的转发:
- Linux 路由器的核心工作机制是 IP 包的转发功能。启用 IP 转发后,Linux 内核会在接收到数据包时根据路由表决定下一跳。
- 内核查找路由表,确定数据包的目的地,并根据路由表中的信息将数据包从一个接口转发到下一个网络。
- 路由表的管理:
- 路由器使用路由表来决定数据包的转发路径。Linux 系统通过
ip route
命令可以配置和查看路由表。路由表中包含目标网络、下一跳设备和出口接口等信息。 - 路由表可以通过手动静态配置,也可以通过动态路由协议(如 OSPF 或 BGP)自动更新。
- 动态路由协议:
- 动态路由协议(如 OSPF、BGP)可在多台路由器之间动态交换路由信息。通过 FRRouting 等软件实现,Linux 可以参与动态路由网络,自动调整路由表,适应网络变化。
常见应用场景 #
Linux 路由器通常应用于网络虚拟化中。如:虚拟专用网络(VPN)网关、流量控制和负载均衡、动态路由器和核心路由器。
实现步骤 #
路由器的核心功能是转发数据包,因此需要在 Linux 上开启 IP 转发功能。
- 临时启用 IP 转发(物理机重启后失效)
echo 1 > /proc/sys/net/ipv4/ip_forward
- 永久开启 IP 转发(物理机重启后仍然生效)
修改系统配置
sudo vim /etc/sysctl.conf
将以下内容取消注释或条件
net.ipv4.ip_forward = 1
使配置生效
sudo sysctl -p