实例解析—用Linux操作系统构建的路由器

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:
一.网络整体框架
  网络结构如图, Linux路由器这台计算机标识为A,它与三个网段相连,192.168.1.0/24,10.0.0.0/8,172.16.0.0/16.
  A计算机必须拥有三块网卡,分别与三个网段相连。
  假设:
  eth0与172.16.0.0相连,
  eth1与10.0.0.0相连,
  eth2与192.168.1.0相连。
   二.具体网络设置
  2.1配置eth0
  首先来配置eth0.给这个网络接口分配地址172.16.1.1,运行下列命令:
  # ifconfig eth0 172.16.1.1 netmask 255.255.0.0
  为了使这个地址不再计算机重新启动后消失,编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,修改为如下格式:
DEVICE = eth0
ONBOOT = yes
BROADCAST = 172.16.255.255
NETWORK = 172.16.0.0
NETMASK = 255.255.0.0
IPADDR = 172.16.1.1
  增加一条静态路由:
  # route add -net 172.16.0.0 netmask 255.255.0.0
  这样系统中就增加了一条静态路由:
  # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
  172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
   2.2配置eth1
  接下来,配置eth1,eth1与10.0.0.0网段相连,分配给它的地址是10.254.254.254,使用ifconfig命令为它配置参数:
  # ifconfig eth1 10.254.254.254 netmask 255.0.0.0
  同样编辑/etc/sysconfig/network-scripts目录下的ifcfg-eth1文件,内容如下:
DEVICE = eth1
ONBOOT = yes
BROADCAST = 10.255.255.255
NETWORK = 10.0.0.0
NETMASK = 255.0.0.0
IPADDR = 10.254.254.254
  再增加一条静态路由:
  # route add -net 10.0.0.0 netmask 255.0.0.0
  网络中当前的路由表为
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 et
  2.3配置eth3
  最后配置eth3,它连接192.168.1.0网段,分配的IP地址是192.168.1.254,执行下列命令:
  # ifconfig eth2 192.168.1.254 netmask 255.255.255.0
  编辑/etc/sysconfig/network-scripts目录下的ifcfg-eth2文件,内容如下:
DEVICE = eth2
ONBOOT = yes
BROADCAST = 192.168.1.255
NETWORK = 192.168.1.0
NETMASK = 255.255.255.0
IPADDR = 192.168.1.254
  再增加一条静态路由:
  # route add -net 192.168.1.0 netmask 255.255.255.0
  这样网络中就有三条静态路由记录了:
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth1
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
   2.4配置缺省路由和系统转发
  2.4.1建立缺省路由
  还要为系统增加一条缺省路由,因为缺省的路由是把所有的数据包都发往它的上一级网关(假设地址是172.16.1.100,这个地址依赖于使用的网络而定,由网络管理员分配),因此增加如下的缺省路由记录:
  # route add default gw 172.16.1.100
  或者
  #ip route add default via 172.16.1.100 dev eth0
  这样系统的静态路由表建立完成,它的内容是
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth1
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
default 172.16.1.100 0.0.0.0 UG 0 0 0 eth0
   2.4.2建立路由转发
  最后一步,要增加系统的IP转发功能。这个功能由/proc/sys/net/ipv4目录下的ip_forward文件控制,执行如下命令打开ip转发功能:
  echo 1 > /proc/sys/net/ipv4/ip_forward
  或者
  /etc/sysctl.conf文件,让包转发功能在系统启动时自动生效:
  # Controls IP packet forwarding
  net.ipv4.ip_forward = 1
  iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
  #iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth1 -j MASQUERADE
  参数说明:
  -t nat:调用NAT表,调用这个说明遇到了产生新的连接的包。
  -A POSTROUTIN:指定信息包打算离开防火墙时改变它们的规则,意即使用NAT。
  -s 192.168.1.0/255.255.255.0:要进行NAT转换的源地址,也就是内网地址。
  -o eht0:输出接口为eth0。
  -j MASQUERADE:指定进行地址伪装,意即将内网地址伪装成外接口eth0的地址进行传输。
  整条语句的意思就是将内网向外连接的数据包的地址转换为外网接口的地址并从外接口转发,同时外
  网访问内网的连接将被映射到相应的内网地址。
  Iptables上的设置可用命令iptables -t nat –nvL查看。
  保存iptables配置。
  /etc/rc.d/init.d/iptables save
  使用这条命令就可以将iptables配置写入到文件/etc/sysconfig/iptables中去了。
  重启iptables使配置生效。
  service iptables restart
   2.4.3 常用命令
ip route del default
iptables -t filter –nvL
iptables -t nat -nvL
ip route ls
ip route delete 169.254.0.0/16
service iptables save
watch iptables -nvL
   三.测试路由器的工作情况。
  在linux路由器上测试:
  第一步,测试自身网络是否工作正常,执行如下命令
  ping 172.16.1.1
  ping 192.168.1.254
  ping 10.254.254.254
  如果这些地址都能ping通,则第一步通过,否则查找原因,排除错误。
  第二步,测试与上一级网关之间是否连通
  ping 172.16.1.100
  如果通畅,则正常;否则查找错误原因。
  在192.168.1.0网络内测试,假设它的地址是192.168.1.1,
  第一步,测试自身是否工作正常, ping 192.168.1.1
  第二步,测试与网关是否连通, ping 192.168.1.254
  第三步,测试与10.254.254.99是否连通,这是10.0.0.0网段内的一台计算机 ping 10.254.254.99
  第四步,测试与外网地址是否连通 ping 172.16.1.100 如果连通了,表示路由器配置正确,否则,查找原因,并排除之。


最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
30天前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
66 1
|
12天前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
166 75
|
23天前
|
安全 Anolis
龙蜥社区落地开源生态发展合作倡议,构建开放兼容的操作系统生态
通过共同努力,三个社区基于服务器操作系统场景,在操作系统内核等关键共性技术链统一方面达成了一致。
|
19天前
|
人工智能 安全 Android开发
移动应用开发与操作系统的深度协同:构建高效、安全的移动生态####
【10月更文挑战第21天】 本文深入探讨了移动应用开发与移动操作系统之间的内在联系与相互影响,强调了两者在构建高效、安全移动生态系统中的关键作用。通过分析当前主流移动操作系统(如Android、iOS)的特性及发展趋势,结合移动应用开发的最新技术与挑战,本文旨在为开发者提供一套全面的理解框架,以促进更加协同高效的应用开发实践。 ####
51 18
|
30天前
|
安全 前端开发 Android开发
探索移动应用与系统:从开发到操作系统的深度解析
在数字化时代的浪潮中,移动应用和操作系统成为了我们日常生活的重要组成部分。本文将深入探讨移动应用的开发流程、关键技术和最佳实践,同时分析移动操作系统的核心功能、架构和安全性。通过实际案例和代码示例,我们将揭示如何构建高效、安全且用户友好的移动应用,并理解不同操作系统之间的差异及其对应用开发的影响。无论你是开发者还是对移动技术感兴趣的读者,这篇文章都将为你提供宝贵的见解和知识。
|
1月前
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
30天前
|
存储 缓存 网络协议
Linux操作系统的内核优化与性能调优####
本文深入探讨了Linux操作系统内核的优化策略与性能调优方法,旨在为系统管理员和高级用户提供一套实用的指南。通过分析内核参数调整、文件系统选择、内存管理及网络配置等关键方面,本文揭示了如何有效提升Linux系统的稳定性和运行效率。不同于常规摘要仅概述内容的做法,本摘要直接指出文章的核心价值——提供具体可行的优化措施,助力读者实现系统性能的飞跃。 ####
|
1月前
|
缓存 监控 网络协议
Linux操作系统的内核优化与实践####
本文旨在探讨Linux操作系统内核的优化策略与实际应用案例,深入分析内核参数调优、编译选项配置及实时性能监控的方法。通过具体实例讲解如何根据不同应用场景调整内核设置,以提升系统性能和稳定性,为系统管理员和技术爱好者提供实用的优化指南。 ####
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
138 8
|
2月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
556 6