搭建小系统

来源:互联网 发布:排序算法复杂度比较 编辑:程序博客网 时间:2024/05/21 20:24

一、目的

搭建拓扑,进行转发通信等操作,拓扑图如下图所示。

 

其中,中间四台节点主要是负责数据的转发,里面加载rip协议进行路由的控制。

二、配置网口

首先需要ping通这六台机器,先要对各个节点的网口进行配置,如图所示,采用上述标记的网址进行配置,配置方法如下。

1.      可以进入/etc/sysconfig/network-scripts/的目录下,查看目录下的文件,其中例如ifcfg-ge0、ifcfg-ge1、ifcfg-ge2……都是系统对网口的配置文件。打开其中一个进行查看。

其中里面含有网口的物理地址,IP地址。还有一些其他的属性,这里就不做详细的介绍了。这种配置的方法是开机自启动,方便。

2.      直接在命令行进行配置。ifconfigge0 192.168.1.1/24 up.但是比较麻烦这种方法。

3.      写shell脚本,对网口进行启动。将需要的启动的网口的命令写在文件里面,修改文件的属性权限,执行该脚本即可。

在任何一个目录下创建一个文本。

vimport

进入port文本中,将需要的启动网卡命令写在里面,退出保存。接着就是通过chmodu+x port这个命令,改变文件的操作权限,就是将所有者的执行权限打开,再通过./port这个命令运行该脚本,再查看网口信息,网口已经配好了刚才写在脚本里面的命令。这种方法一劳永逸,而且可以不破坏系统文件的内容,推荐!!!!

三、配置rip协议

第一步网口的配置已经完成,下一步需要能够各个节点之间需要相互通信,可以采用配置静态路由,但是太麻烦,所以我们采用是配置动态路由协议,这里面用rip协议,从quagga的官网上下载quagga文件,quagga文件里面是一些路由协议——rip、ospf、bgp等等。实现的原理都是相同的,所以我们采用rip协议。

实现的方法是:

1.      将下载的quagga-0.99.24.1.tar.gz拷贝到自建的目录下,在该目录下解压文件,

tarzxvf quagga-0.99.24.1.tar.gz

2.      进入解压后的文件中

cd quagga-0.99.24.1

3.      生成Makefile文件。

./configure --enable-ipv6 --enable-zebra--enable-ripd --enable-ripngd --enable-ospfd --enable-ospf6d --enable-bgpd--enable-vtysh --enable-isisd --enable-user="root"--enable-group="root" --enable-vty-group="root"

后面的enable是可选的,必选的项目是为--enable-zebra--enable-vtysh --enable-user="root" --enable-group="root"--enable-vty-group="root"

4.      编译安装

make

make install

5.      以上步骤就是完成了安装,首先复制配置文件。

6.      在运行zebra

./zebra & (&是后台运行的意思)

7.     运行ripd

cd ../ripd

./ripd &

8.     进入vtysh中,配置路由信息。

cd ../vtysh

./vtysh

之后运用shift+?的组合,查看需要输入的命令。

 

 

 

这样之后,将所有的节点都配置好,就可以开启转发操作,如果开始不可以,查看节点是否开启转发。

查看方法:

        cat /proc/sys/net/ipv4/ip_forward

如果显示为0,则没有开启转发。

开启方法:

        echo 1 >/proc/sys/net/ipv4/ip_forward

这样之后,就可以保证所有的节点可以两两互通。

四、用一台机器通过套接字进行控制

用到system()函数,一台服务器,一台客户端,服务器向客户端发送命令,客户端就会执行服务器的指令。

System()函数介绍:

system(执行shell命令)

fork,execve,waitpid,popen
表头文件
        #i nclude<stdlib.h>
定义函数
        intsystem(const char * string);
函数说明
       system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD信号会被暂时搁置,SIGINT和SIGQUIT信号则会被忽略。
返回值
=-1:出现错误 
=0:调用成功但是没有出现子进程 
>0:成功退出的子进程的id

0 0
原创粉丝点击