声明:本文为原创作品,因为编写的时间比较久远所以不记得是否在别处发表过了。如有在其它地方发现有此文,也一定是本人发表,否则定是剽窃。

本文主要目的不是让大家使用linux来搭建路由器使用,而是为大家提供一个从linux环境下看网络的视角。通过系统中对数据包更加细致的操纵,从而能了解到一个数据包在系统内核情况下的状态。理论上经过linux系统的所有数据包都能进行操作,实现负载均衡,重定向,IP伪装等都是可能的。本文只是一个学习工具的方法,不承担读者使用文中提及的知识来犯罪的责任。请各位遵纪守法,正确使用。

附件有一些脚本和本文的原文内容。

此文比较粗略,请没有基础或者有强迫症的读者回避。作者不承担详细解答并帮助读者学习的义务。


Linux路由器设置

  • linux路由器的简单配置

如果只是需要一台路由功能的主机提供网络共享让客户机可以上网,设置非常简单。整个过程只需要几个步骤。

1、  安装好一台linux服务器以后配置好两个网卡的IP地址或者PPPOE的拨号方式确保两个网卡都有IP地址。一个连接公网,一个连接内网。在配置连接公网网卡的时候写入GATEWAY=XXX.XXX.XXX.XXX。连接内网的网卡切忌填写GATEWAY

2、  启用linux的包转发功能。具体方法为修改/etc/sysctl.conf文件中net.ipv4.ip_forward 项为 1。如:net.ipv4.ip_forward = 1然后保存使用sysctl  –p命令是命令生效。这样的好处是系统重启以后配置也能生效。

3、  因为是私网地址,在公网上没有明确的路由信息所以必须进行IP地址伪装才能有路由信息到公网。使用linux的防火墙iptables能做到这一点,当然iptables不是只有这个功能以后再说。具体操作方式为iptables -t nat -A POSTROUTING -o eth0  -j MASQUERADE

4、  如果是PPPOE拨号方式,请为每个ppp链接添加一条nat伪装。保证链接的外网地址一直性。如:iptables -tnat -A POSTROUTING -o ppp0 -j MASQUERADE

做完以上步骤,一台具有路由功能的linux主机就能正常使用了。内网主机设置IP地址与linux主机一个网段,然后网关指向linux主机的IP地址。这样就可以上网了。

 

  • ADSL拨号的网络共享方式

静态的IP地址方式很简单,就是配置好ISP给的IP地址和网关等信息就行了。在平时的应用中ADSL的接入方式在linux主机上还是比较少见。所以在这里略提一下。要进行pppoe拨号需要安装rp-pppoe这个linux包。安装完以后运行pppoe-setup命令进行配置,根据提示进行操作就行了。

linux默认只能有一个pppoe拨号,要实现多个pppoe帐号同时使用需要对配置文件进行更改。

修改/etc/ppp/pap-secrets文件,"ppp1"  *       "ppp1"每个帐号和密码一行。第一个是帐号,第二个为密码。多少个帐号就多少行。

修改/etc/ppp/chap-secrets文件,格式和上面一样。

复制ifcfg-ppp0文件命名为ifcfg-ppp1,修改两个配置文件的PIDFILE参数。PIDFILE=/var/run/pppoe-adsl0.pid每个配置文件的PIDFILE名字不能重复。否则就会拨号部成功。这样能实现同一个网卡拨多个ADSL帐号。在网上找了很多方式都不行,最后发现既然如此简单。

  • linux分类标记mangle应用

如果需要对数据包进行QOS,策略路由,多ISP线路负载均衡等。都需要mangle功能对数据包进行分类,为后续的处理提供依据。否则一切将是空。

分类标记路由需要在/etc/sysconfig/network文件中添加NOZEROCONF=no选项。否则无法使用。

为保证使用效果,简单介绍mangle表的结构。Mangle表总共有5条链,我们称为数据包进入时所经过的链路。5条链分别是:

PREROUTING: 路由前,常用于标记策略和端口进行路由

INPUT:进入路由器的数据

FORWARD:通过路由转发,用于修改TTLTCP-MSS和流量控制规则。

OUTPUT:数据输出

POSTROUTING:路由后

 

对数据包进行分类标记:

1iptables -A PREROUTING -tmangle -i eth1 -m state --state RELATED,ESTABLISHED -j CONNMARK --restore-ma