欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

开启Linux系统路由转发功能 实现多网段电脑共享上网

程序员文章站 2023-11-22 17:41:46
目前,Linux的主要应用在服务器领域,但是它的许多功能还没有被充分挖掘出来,比如,我们通过简单设置,就可以让Linux变成一台出色的路由器。本文介绍如何利用Linux 系统的路由功能,... 14-07-13...


  目前,linux的主要应用在服务器领域,但是它的许多功能还没有被充分挖掘出来,比如,我们通过简单设置,就可以让linux变成一台出色的路由器。本文介绍如何利用linux 系统的路由功能,实现多网段电脑共享上网方法。

  一、linux 系统开启ip转发功能

  linux 系统要达到路由器功能,首先得打开linux 系统内核中的ip转发功能。我们可以通过以下命令来查看是否开启。less /proc/sys/net/ipv4/ip_forward该文件内容为0,表示禁止数据包转发,1表示允许,将其修改为1。可使用命令echo "1" > /proc/sys/net/ipv4/ip_forward来启用ip转发路由功能。

  但这种方式不能长期有效,只能保证当次有效,如果执行重启系统操作,那么又得重新执行命令。因此,为了保证系统路由功能永久有效,用vi编辑器打开vi /etc/sysctl.conf配置文件,将net.ipv4.ip_forward = 0修改为1,保存后退出。这样,每次重启系统都不用重新设置内核ip转发了。

开启Linux系统路由转发功能 实现多网段电脑共享上网

  二、linux 系统实现路由功能,共享上网

  在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-source 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地址。

  由于我们设置的局域网中没有使用dhcp服务器,在实现上网的过程中,所有的计算机都需要有用户手工设置ip地址。

  总结

  利用linux系统的路由功能来实现共享上网,实现方法比较简单,最重要的是这种实现方法不仅可以减少ip资源的占用,而且linux对硬件的要求比较低,不像windows系统那样对硬件有很高的要求。