为什么(why)
- 说来惭愧,学计算机从本科算起来到现在已经有7年时间,如果打游戏也算对计算机学习的话,那就要从小学三年级开始了。最近,临近硕士毕业的时候,竟然对网络中的基本概念和基本认识没有理解,不知道其中的原理。
- 最近,写硕士论文的时候,因为使用到了Teredo隧道知识,用到了Miredo软件搭建服务,因而又涉及到了网络路由的相关知识,但是我发现,名词都看的懂,但是就不是不明白背后是怎么运行。发现本科学习的计算机网络真是还给了老师。所以自己就最基本的网络路由的知识拾起点皮毛。
做什么(what)
- 说来就是很简单的一件事,就是一台主机A,通过一个路由,ping通另一个网段的主机B。具体的看下图。
- 主机A 的ip地址为192.168.1.1
- 主机B的IP地址为192.168.2.2
- 中间路由器的与A相连的IP地址为192.168.1.2,与B相连的IP地址为192.168.2.1
- 就是主机A可以ping通主机B的简单路由过程。
- 如果把ipv4地址,换成ipv6地址会怎么样那?也就是下面的类似相同实验,使用ipv6地址的实验。具体网络拓扑图如下图所示。
- 主机A的IP地址为2001:10::1
- 主机B的IP地址为2001:20::2
- 中间路由器与A相连的IP地址为2001:10::2,与B相连的IP地址为2001:20::1
怎么做(how)
- 基本的准备工作
- 找到实验室三台空闲的机器(也可以使用虚拟机搭建,和物理机没有区别)
- 其中一台机器有两块网卡(这个模拟路由器,也可以在虚拟机上模拟两块网卡)
操作步骤
配置静态IP(ubuntu配置方法),将3台机器按照上图的网络拓扑,设置静态IP
修改/etc/network/interfaces文件,添加下面的信息
eth0 1234iface eth0 inet staticaddress 192.168.1.1netmask 255.255.255.0gateway 192.168.1.1
重新启动机器或者使用命令重启网卡模块
restart ```(ubuntu没起作用) 12345678- 配置路由器上的ipv4数据包转发功能,linux系统默认是不开启数据包转发功能的- 修改/etc/sysctl.conf文件中的net.ipv4.ip_forward=0的值修改为1- 配置路由表- 此时从机器A,ping路由器IP192.168.1.2是可以ping通的,他们是同网段,并且是直接相连的- 但是此时ping 192.168.2.1或者192.168.2.2是ping不通的。他们不是同一网段的,所以ping不通- 此时我们需要将192.168.2.0网段的路由加到路由表中去,起始可以有两种做法- 第一种做法,添加192.168.2.0网段路由表项到路由表中- ``` sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2- 所有是192.168.2.0网段,掩码为255.255.255.0的数据包都发送到192.168.1.2的网关
- 第二种做法,添加默认网关
sudo route add default gw 192.168.1.2
- 如果数据包在路由表中没有符合的表项,都从网关192.168.1.2转发出去
- 然后类似的规则配置机器B
- 不同的操作系统默认路由配置不同(Centos会自己配置默认路由)
- 这样就可以在机器A ping 通机器B了(注意如果B不配置路由的情况,ping包没有返回响应)
- ipv6地址配置和ipv4配置类似。注意ipv6静态地址配置和路由表添加
总结
- 注意三个地方,A的路由表,B的路由表和路由器的转发
- 网上关于Teredo隧道服务器安装文档较少,后面Teredo搭建成功了写一下安装过程吧。