Linux做一个功能完备的路由器
本文主要介绍如何用Linux做一个功能完备的路由器,这里将主要介绍静态路由器和动态路由器的配置,但不包括IP伪装或者说公用一个IP地址访问外面网络等问题。其已经不属于本主题讨论的范围,请参考其他如防火墙的配置等的内容。
LRP(Linux Router Project)已经成立了有好几年的时间了。这个计划的目的是利用Linux操作系统将老旧的个人电脑如486当成网络的路由器使用。利用Linux低成本建立的路由器可能引起企业界广泛的注意。正如StoneFly Technology的系统整合工程师Bret Berger所说的,对无法负担两千(美元)思科(Cisco)路由器的使用者来说,利用486加上几张以太网卡,当成路由器使用,是另一个选择。而对于一些小型企业、小型ISP ,甚至是政府机构,这是一个很好的解决方案。事实上目前国内高校很多场合正是利用了这一解决方案。
由于LRP计划已经把Linux的源代码精简化,LRP软件可以少于2MB ,同时也可以将LRP软件放入一张软盘内。也就是说在没有硬盘的情况下,LPR也可以利用软盘,载入电脑中使用。Virtual Design Group的软件工程师Michael Kornegay则表示,他们已经将Linux路由器软件安装在一架老旧的x86个人电脑上,再加上两张以太网卡,没有使用硬盘的设备,只是使用软盘启动,便当成阳春型的路由器与防火墙使用。
我们在这一章里不是教大家如何制作小于2MB的LRP软件包,而是告诉大家如何利用Linux来获得一个性能良好、价格低廉的路由器。利用Linux构建路由器使用的成本虽然便宜,可是在性能与效率上与真正的路由器相比,却还是有一段距离。对于玩家们或是一些要求不高的使用者来说,这是一个不错的选择。
什么是路由器?
简单的说:路由器的功能就是寻路――给IP包寻找正确的路径以通往目的地。下面是比较详细的介绍:
原理与作用
路由器(Router)用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器来完成。因此,路由器具有判断网络地址和选择路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备。它不关心各子网使用的硬件设备,但要求运行与网络层协议相一致的软件。
一般说来,异种网络互联与多个子网互联都应采用路由器来完成。路由器的主要工作就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目
相关文档:
今天终于拿到moto官方SDK,是for A1200的,包括toolchian和EZX库及头文件,该SDK也适用于moto E6. 按照安装指导文档安装好SDK并执行脚本设置好环境变量后,首先是build一个最简单的sample程序hello,以验证SDK是否安装正确。运行qmake却出现如下错误:
~/workspace/devtools/moto-sdk/sample/gui/hello$ qmake hello.pro&n ......
1) 使用的库不同。windows下图形开发一般用微软的MFC或.net库,而Linux下则常用qt库。C/C++通用库(c库,STL库)的接口相同,但内部实现不同。
2) 编译器不同。windows下用的是微软编译器VC或.net,而Linux下则用gcc。
3) 开发环境不同。windows的编译器自动生成makefile,而Linux则需要手动编写makefil ......
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define err(msg) perror(msg)
static void mkdirs(const char *dir)
{
char tmp[1024];
char *p;
&nbs ......
/* Offtimer.c.For auto halt. */
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#define DELAY 60/* Time of sleeping */
int main()
{
time_t now;
struct tm *p;
while(1)
{
now = time(NULL);
&n ......