将LINUX变成路由器

2009-06-04 22:38:45

版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
    LINUX系统是一个强大的网络操作系统,本身就是一个出色的路由器,只要经过非常少的几步设置,就会使用LINUX系统本身成为一台出色的路由器。
  要想使LINUX系统达到这种目的,首先得查看LINUX系统的内核中是否打开了IP转发功能,可以通过下列命令来查看:
  # cat /proc/sys/net/ip_forward
如果用此命令返回的结果是0,那么就表明LINUX内核没有启用IP转发功能。就可以通过下示命令来启用:
  # echo 1 > /proc/sys/net/ip_forward
但这种方式只能保证当次有效,如果你不小心或应某种需要重启了系统,那么又得重新输入上述这个命令一次。因此,为了保证每次系统都能自动设置,你就可以用VI编辑器打开/etc/sysctl.conf配置文件,在此配置文件中加如下容:
  ipv_ipforward=1
保存退出后,这样,每次重启系统都不用重新设置内核IP转发了。
在打开内核IP转发功能后,我们就该为我们所假设的网络添加路由功能了。
在LINUX系统下实现路由功能,两种方法来实现,一种是通过IPTABLES工具的NAT转发功能,一种是使用IPROUTER2工具集中的IP ROUTE命令子集来实现。这两种方法各有优缺点,使用哪种方法,主要看你所在的网络使用哪种方法连接互联网。IPTABLES工具适合动态IP地址以及固定公网IP地址方式,同时,还提供了网络地址转换功能,此功能不仅能使使用私有IP地址的内网PC连接上互联网,而且还提供外网能过DNAT功能访问处于内网中的各种网络服务,以用隐藏内容IP网络段,增加了安全性。IP ROUTE工具同样适应与IPTABELS相同的两种上网方式,但不能提供NAT功能。
  不过,有许多特殊的网络路由功能,是通过这两个工具共同合作的才能实现的,例如,将要讲到的策略路由、负载均衡、多WAN出口路由等。因此,笔者在此分别列出这个工具实现路由功能的命令内容,其后,在介绍如何通过这两个工具合作,完成更加高级的功能。
  1、IPTABLES工具的NAT方式开启LINUX路由功能,其通过动态拔号方式连接互联网的命令如下所示:
  # iptables –t nat –A POSTROUTING –d 192.168.1.0/24 –s 0/0 –o ppp0 –j MASQUERD
其中,ppp0是你拔号网络接口别名,在此之前,你得先设置好与拔号相关的内容,这可以通过直接编辑/etc/sysconfig/network_scripts/ifcfg_ppp0配置文件来达到目的。
  通过固定公网IP地址方式连接互联的实现方法如下:
  # iptables –t nat –A POSTROUTING –s 192.168.1.0/24 -j SNAT –to 202.103.224.58
其中,这个固定公网IP地址是由当地ISP分配给你的,在这也是由笔者自行假设的,具体的IP地址得根据你所在ISP所在地来决定。
2、通过IP ROUTE工具来实现LINUX系统的路由功能
  通过动态拔号上网方式连接互联网的命令如下所示产:
  # ip route add via ppp0 dev eth0
  通过固定公网IP连接互联网的命令如下所示:
  # ip route add via 202.103.224.58 dev eth0
经过以上两种方法中的任何一种的设置,我们的LINUX系统就具有路由功能了。这样,所处在局域网内部的PC都能够通过这台LINUX路由器共享上网了,便前题条件是要设置这些局域网中的PC的IP地址为此IP地址段中的任何一个,但不能相同,192.168.1.2-192.168.1.254,同时,设置它们的网关地址全部为192.168.1.1,这是LINUX路由器中连接局域网网卡的IP地址。因为,在这里全部使用固定IP地址,没有使用DHCP服务器,因此,这此IP地址都必需由用户自行指定的。

将LINUX变成路由器的更多相关文章

  1. DHCP服务原理与搭建(Linux系统+路由器,二选一方案)

    大家都知道上网的最基本前提是要在终端上设置IP.子网掩码.网关.DNS等地址信息,在家里或者在办公室很多时候打开电脑后发现就可以上网,并没有手动设置IP.掩码.DNS地址也能上网,这是什么原因呢?其实 ...

  2. Linux作为路由器(一)

    前言:Linux主机可以作为路由器使用,利用路由转发功能实现不同网络内的主机能够相互通信,利用iptables的SNAT功能来实现企业内网主机访问互联网,下面做个小的实验. 实验环境:VM (1)路由 ...

  3. Linux下使用Quagga(Zebra)搭建路由器记录(转)

    写在前面 从22号中午开始琢磨zebra/quagga的用法,一直到晚上11点多都没有什么头绪.各种Google,百度,几近崩溃.由于网上关于zebra/quagga的配置方法都是在真实的若干台电脑上 ...

  4. 用Zebra打造Linux下小型路由器

    用Zebra打造Linux下小型路由器 现在的Internet网络相当庞大,不可能在不同的网络之间建立直接的连接,所以这时就必须用路由器为不同网络之间的通信提供路径选择.Linux下搭建路由器价格非常 ...

  5. linux默认网关的设置

    linux装系统设IP,这应该是系统管理员的基本功,可是不同的网络结构有不同的ip设法,您知道吗? 1.一块网卡的情况   这个没啥好说的,估计地球人都知道:address,netmask,gatew ...

  6. Linux转发性能评估与优化-转发瓶颈分析与解决方式(补遗)

    补遗 关于网络接收的软中断负载均衡,已经有了成熟的方案,可是该方案并不特别适合数据包转发,它对server的小包处理非常好.这就是RPS.我针对RPS做了一个patch.提升了其转发效率. 下面是我转 ...

  7. Linux转发性能评估与优化(转发瓶颈分析与解决方式)

    线速问题 非常多人对这个线速概念存在误解. 觉得所谓线速能力就是路由器/交换机就像一根网线一样. 而这,是不可能的.应该考虑到的一个概念就是延迟. 数据包进入路由器或者交换机,存在一个核心延迟操作,这 ...

  8. LInux Zebra

    本文章摘自linux公社 https://www.linuxidc.com/Linux/2015-07/120224p1.htm   写在前面 从22号中午开始琢磨zebra/quagga的用法,一直 ...

  9. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

随机推荐

  1. Facebook抛弃了HTML5,微信却捧火了它

    苹果普及了HTML5技术,Facebook押注HTML5上,却受到不小的打击,导致在后来一段时间里,唱衰HTML5的言论成为媒体的一种幸灾乐祸的态度,人人避而不谈.微信通过公众号的形式,以游戏.营销重 ...

  2. bzoj2395[Balkan 2011]Timeismoney最小乘积生成树

    所谓最小乘积生成树,即对于一个无向连通图的每一条边均有两个权值xi,yi,在图中找一颗生成树,使得Σxi*Σyi取最小值. 直接处理问题较为棘手,但每条边的权值可以描述为一个二元组(xi,yi),这也 ...

  3. Regionals 2013 :: North America - Southeast USA

    Regionals 2013 :: North America - Southeast USA It Takes a Village As a Sociologist, you are studyin ...

  4. Fedora 19 配置参考

    1. 安装完Fedora 19之后,第一件事不是升级系统,而是添加源. 下载我配置好的源,非常全面,适用Fedora 19 x86_64.点我下载 打开终端,切换到repo.zip所在目录:mv re ...

  5. 【Qt】Qt之自定义界面(添加自定义标题栏)【转】

    简述 通过上节内容,我们实现了自定义窗体的移动,但是我们缺少一个标题栏来显示窗体的图标.标题,以及控制窗体最小化.最大化.关闭的按钮. 自定义标题栏后,所有的控件我们都可以定制,比如:在标题栏中添加换 ...

  6. RGB颜色二值化

    原理:RGB颜色根据计算'灰度'的公式,可以转化为黑白2种颜色,实现二值化. 业务场景的应用:可以根据背景颜色,取一个黑色或白色的颜色,作为背景色上的文案字体颜色 具体代码: function get ...

  7. WPF 在画布中布局N行N列的实现方法

    最近写一个WPF项目,中间有一个实现在画布中排列的问题(整齐摆列几行几列的算法).本人逻辑有点差啊,废了老大功夫才实现,也没啥就牛逼的,就是拿出来分享一下,给需要的同学节省点时间,如果有用的话别忘赞一 ...

  8. hdu 5769 Substring 后缀数组 + KMP

    http://acm.hdu.edu.cn/showproblem.php?pid=5769 题意:在S串中找出X串出现的不同子串的数目? 其中1 <= |S| < $10^5$ 官方题解 ...

  9. Zendframework 模块加载事件触发顺序。

    模块加载时事件触发的时间顺序: 0.loadModules(ModuleEvent::EVENT_LOAD_MODULES) 1.  loadModule.resolve(ModuleEvent::E ...

  10. opencv学习笔记(04)——ROI

    ROI的用法:1.直接相加:2.掩码法 #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgpro ...