快捷搜索:   nginx

LINUX下双网双线服务器的架设全过程

目的:现在很多中小型网络有两条或者多条相同的不同的ISP的网络出口线路
而如何将这两条线路合理的利用起来 是很多人非常关心的
西安秀网吧资讯会为大家提供更多更好的学习资料和知
此文用通俗易懂的方法的讲解了如何初步达到此目的本方案不需要大量的投资
也不需要改变现有网络结构 并且可扩展性好! 环境:用基于LINUX路由功能由2.2内核开始,
Linux便开始支持高级路由技术,提供策略路由,流量控制等多项高级路由功能,
配合Netfilter包过滤软件,可实现许多专业路由器和防火墙才能实现的高级功能
本方案采用RedHat 9.0 系统基础 系统自带 和 IPROUTER2 软件,
申明:本方案为了表达一个通俗易懂的称述很多地方采用大白话方式进行说明,
这对技术来说是不严谨的态度,并且在文中可能出现很多错误,欢迎指正
希望有更多人能使用此方案而达到自己的目的 用在论坛上联系,
写的很乱还请大家见谅!
约定:对于具体#作,都是基于Shell下的,就是所谓终端,控制台
我将用横线阁开,可以看成实际的#作,后面的针对解释均采用汉字通俗解
但不能作为实际#作!
一、 硬件选择和实施:
1。本人在实际#作中选择了 C3 1G CPU INTEL 815ET芯片组主板(集成显卡) 128M SDRAM 三张 均是RTL 8139 10/100M 自适应 3G大小心的一块老硬盘 RedHat 9.0系统盘 光驱 键盘鼠标 显示器|
为安装使用 过后拆掉,在各个实际环境里 选择方案不一定要相同,但是本人建议 CPU 不低于233M 内存不低于64M 网卡尽量不用8029等10M 设备,如果有条件可以选择不同的主流网卡 其他 主是要求稳定
2。安装系统 根据硬盘大小以及个人情况 可任意方式安装提示以及建议:
A : 如果分区不是很清楚 可以用 光盘上的PQ 将硬盘分区第一次接触的,采用 将6G以下的空间分成EXT3格式的分区然后接着一256M左右的SWP交换分区
B。 网卡先别一次性装上,可先将要用于内网的网卡,先插上,以后系统安装成功以后再依次插上其他网卡以免混淆!在安装的时候 可以完全默认的方式 并且 尽量采用 英文安装,不装XWINDOWS 也就是可以一路 NEXT下去!!!

3。建立用户 除了系统自带的 root 超级管理员帐户以外请建立1-2个普通用户! 更具体的安装#作请搜寻网络上其他的文章!或者联系我,有非常详细的称述!

二、 单机的配置 这一步很重要 包括设置好网卡如果是ADSL的PPOE的拨号方式 还必须设置ADSL上网 并且弄清楚在硬件上的每一块网卡和系统里面的网卡的对应关系!
参考模型 eth0———接内网 RD9.0 LINUX eth1———接外网线路 1 eth2———接外网线路
2 注意 : 在LINUX中表示的以态网卡的方式是ethX X代表的是第几个设备,对于排序 请根据系统的自设定然后人为找到对应的网卡,可以采用每张网卡接一条线进行 Ping 的方式确定!

在下面这种情况下 将 eth0 (内网)设置为 IP: 192.168.0.1 Netmask:255.255.255.0 Gateway网关:无 eth1 (线路一) 假如 IP : 218.6.2.211 Netmask:255.255.255.0 Gateway网关:218.6.2.1 eth2(线路二)假如 IP :10.0.0.2 Netmask:255.255.255.0 Gateway: 10.0.0.1 实际#作方式: ———————————————————– ifconfig eth0 192.168.0.1 netmask 255.255.255.0 ifconfig eth1 218.6.2.1 netmask 255.255.255.0 ifconfig eth2 10.0.0.1 netmask 255.255.255.0 ———————————————————– 格式为: ifconfig 设备名 IP地址 netmask 子网掩码 直接输入 ifconfig 不带任何参数的话 系统将显示当前网络接口信息
至于更详细的#作方法请参考其他资料! 这样 就初步设置好了
各个网络接口的 IP地址等! 但是 这样的设置可能在重起系统以后就会失效
那么最直接的方法是 修改 文件!
(在LINUX下很多地方可以直接修改文件的方式实现,特别是没有X的时候,显得特别重要,也最有效!
—— vi /etc/sysconfig/network-scripts/ifcfg-eth0
进入VIM编辑界面 按 “i” 进入编辑模式 大致修改为以下内容
请注意 当一块网卡被系统正常检测 只需要改变“=”后面的内容: DEVICE = eth0 ———》设备名,
一般系统自动赋予 ONBOOT = yes ———》是否开机激活 默认 “yes”
BROADCAST =192.168.0.255 ———》
广播地址 NETWORK = 192.168.0.0 ———》
网络地址 NETMASK = 255.255.255.0 ———》
子网掩码 IPADDR = 192.168.0.1 ———》
IP地址 提示 BROADCAST =192.168.0.255
和NETWORK = 192.168.0.0 可以根据IP地址来
当掩码是 24位 (255.255.255.0) 时 BROADCAST是IP地址最后一位变255 NETWORK是 IP地址最后一位变0
修改成功以后 按 “ESC”键 然后 Shift+; 号键,出现“:”提示符 在 “:”提示符下面 输入 “w” 并回车 就将设置保存了,然后输入 “q”退出编辑界面
注意:如果你的eth0也是 用于内网
那么请将 GATEWAAY= 项删除 其他两张网卡,则必须要!!!
如果你装了X 那么可以在图形界面下,才用更合适的工具软件进行修改! ————————————————– vim /etc/sysconfig/network-scripts/ifcfg-eth1 ————————————————- 上面命令进入设置 eth1 ———————————————— vim /etc/sysconfig/network-scripts/ifcfg-eth2 —————————–
上面命令进入设置 eth2 设置 DNS 一般情况下
如果当系统检测到网卡并且要求你设置的时候 你就可以将DNS 加入但是如果你想修改的话,最直接的方法为编辑DNS文件 ——————————
vim /etc/resolv.conf ——————————— 加入DNS IP地址 格式为 nameserver 202.98.96.68 nameserver 61.139.2.69 等
具体DNS IP即可 当以上设置都正常进行以后
重起系统, 检测设置 ——————————————– ping 192.168.0.1 ping 10.0.0.2 ping 218.6.2.211 ——————————————
检测正确性 (用Ctrl+C结束) 然后 ,将外网卡正确接入网络至少你确定能上网!
不管他是用的哪条线路!!!!!!!! 如果一切正常那么就表示系统的配置基本正确。
三、多路复用 接下来, 我们就可以用系统本身的功能以及软件进行路由规则设置

前面已经提到 2.2以上内核已经带有很多的高级功能
而RedHat 9.0采用采用的是2.4.20的内核版本 是公认的比较稳定的,
当然 你可以选择重新编译升级内核的方式 升级到2.6.X 版本的内核,体验更新的功能,
但是这不是本文所要考虑的内容。

在我们将多路复用之前 最好是先打上两个补丁 A 因为路由缓存的机制,
所以在某一时间断连接到某一点上的线路是不变的,而必须等到失效才能重新选择,(
对于RedHat9.0的系统内核 需要打这之PATH
下载地址为: 这之PATCH 解决了在系统内核中equailze参数不生效的问题 将这两个PATCH 下载到本地 比如 直接放在 /root目录下那么这样做,
将PATCH补进内核: ——————————————————– /usr/src/linux-2.4.20-8/patch -p1 ——————————————————— ————————————————- /usr/src/linux-2.4.20-8/patch -p1 ————————————————– 执行完以后我们就基本上需要的软件都准备齐全了
路由规则: 首先 我们使用 ip route show 命令来显示当前默然的路由规则: ———————————————— ip route show ————————————————- 可以看见 如: 0 lookup local 32766 main 32767 default 这是原有系统的路由规则!
那么 现在我们使用自己的规则替代或者说将自己的规则的优先级提高于原有规则,
接着 我们创建路由表, 注意 创建的路由表的根据是上面的网络接口,
所以请根据我上列举的具体设置来理解 新建命名为 10 和 20的规则
分别针对两个外网线路 规则“10” ———————————————————- ip rule add pref 10 from 218.6.2.211 table 10 ———————————————————- 规则“20” ———————————————————- ip rule add pref 20 from 10.0.0.2 table 20 ———————————————————- 设置main表 ——————————————————— ip route add 218.6.2.0 dev eth1 src 218.6.2.211 ip route add 10.0.0.0 dev eth2 src 10.0.0.2 ———————————————————设置完成
上面的只需要根据不同的IP地址以及对应的硬件设备 修改其部分内容即可题外: 在LINUX路由表中可以使用0-255来代表不同的规则而且每个规则都可以用别名来表示,

如果大家对此感兴趣 可以查看修改一个文件里面的内容来达到目的:原文件给出了几个例子包括 lookup、 main、 default
需要自己添加的 按照这样的格式修改: 在空行处插入 : 规则号 规则名称 10 OUT1 保存即可 路由选择的优先级,是数值越小代表权越大,所以一个路由选择将先查看 0 规则,既 环路然后查看下一个规则
在本例子中,当一个数据在路由选择的时候,过了0规则 然后就是 10 规则接着 20 规则 一直往下!直到匹配为止 通过以上设置,我们就可以控制住通过某一条线路(ISP)的数据包的返回信息也从原线路返回。这将对运行在路由上的所有的进程起作用!!!并且实现了最基 本的流量分割,很简单吧!然后就是做负载均衡了!可以将不同的请求根据自定设置发往不同的线路!
我们已经安装好了补丁 并且设置好的各种规则, 对于负载均衡,
可以使用这条语句来实现: ————————————————————————————————- ip route replace default \nexthop via 218.6.2.1 dev eth1 weight via 10.0.0.1 dev eth2 weight 1 ————————————————————————————————- 50
这样 我们就改变了缺省的路由为多路路由!!!!并且我们可以通过改变 weight 参数的值来指定 一条线路的优先权大于 另有条线路这在两条线路质量不相同的时候是种不错的选择 -.M 5sUvsc
如: —————ip route replace default \nexthop via 218.6.2.1 dev eth1 weight \ via 10.0.0.1 dev eth2 weight —————————————————————-
注意:特别应该指出的是,因为上面的均衡是根据路由进行的,而路由是根据CACHE选择的,所以这样的均衡不是100%的准确,在实际使用中最多能达的70%的效率,对于经常访问的某一远程站点,会一直使用同一条线路

求通过不同的线路发送,已经快于原先单条线路了。同时,就现阶段而言,没有ISP的配合是不可能达到100%的精确的!!!! 现在 负载均衡已经基本设置完成了,你就可以将外网两条线路接上对应的网卡,特别注意必须是对应的网卡!
仍然用 ping 命令来检测 两条线路是否能在同时 ping 通! ping 线路1ISP出口网关 ping 线路2ISP出口网关 这是一种很好的方法,各线路的从内网出去以后最先经过的是ISP的网关,并且在正常情况下都是允许 ping 探测的!!
如果都能同, 那么 你已经正确的完成设置了!!!!你的这台单机已经可以使用两条线路同时上网了,系统在你进行网络连接的时候,根据每条线路的轻重区别来为你将连接请求合理 的分发到两条线路上!! 四、带动内网机器上网 IP伪装(NAT)、端口转发配置好单机的多重路由功能以后,如何让他冲当内网的网络出口,带动其他机器上网呢,
这将是此节的重点,并且,这部分内容单独来将,已经是将一个LINUX#作系统配置成路由器的具体步骤了!首先,我们应该确定系统已经安装了IPTABLES 在大多数基于2.2内核的LINUX#作系统中,已经默认安装了次软件!
通过下面的命令就可以实现 IP伪装
注: 里面几个具体数据将安装本实例问准,我会在后面提到!
A、定义IPTABLES位置(不是必须): ———————————– IPTABLES=”/usr/##in/iptables” —————————–
B、清除原有防火墙规则设置: ———————————– IPTABLES -P INPUT ACCEPT IPTABLES -P FORWARD ACCEPT IPTABLES -P OUTPUT ACCEPT ——————————-

C、清除NAT规则设置 ————————————— IPTABLES -t nat -P PREROUTING ACCEPT IPTABLES -t nat -P POSTROUTING ACCEPT IPTABLES -t nat -P OUTPUT ACCEPT IPTABLES -t mangle -P PREROUTING ACCEPT IPTABLES -t mangle -P OUTPUT ACCEPT——————————-
D、清除在防火墙和NAT中不是默认的连接 ————————————- IPTABLES -F IPTABLES -t nat -F IPTABLES -t mangle -F IPTABLES -X IPTABLES -t nat -X IPTABLES -t mangle -X ————————————
E、载入模块 (必须): ———————————— /##in/depmod -a /##in/modprobe ip_tables /##in/modprobe ip_conntrack /##in/modprobe iptable_filter /##in/modprobe iptable_nat /##in/modprobe ipt_limit /##in/modprobe ipt_state /##in/modprobe ip_conntrack_ftp ————————————-+
F、打开转发功能(必须) ——————————————– echo”1〃 /proc/sys/net/ipv4/ip_forward ——————————————–

G、设置转发规则: ———————————————————————– iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.0/24 -j MASQUERADE ———————————————————————– A B C D为可选
但是请注意 如果你的IPTABLES不在 /usr/##in/ 这个目录 那么你最好是选择这几项
并且 该成自己所在的目录 如果你选择了使用B C D 那么 你必须 选择A 就是必须给“IPTABLES” 这个常量赋值,
因为在 LINUX 默认中 全部大写的 IPTABLES 不是一个合法的iptables 命令当然,如果你的系统已经定义了 iptables 的路径
那么, 将上面的 IPTABLES 换成小写的 iptables 也行! E F G则是必须要的, 当上面的规则成功设置以后, 将你的内网网卡连上交换机等,修改其他机器的IP地址为 192.168.0.X 掩码为 255.255.255.0 (X为2-254之间)生效后,就能通过你刚才打造的LINUX路由器上网了!!!
但是这些设备在重起后就会失效,如何解决了
将这些命令写入脚本 让他开机启动 即可达到保存的效果!具体
将各命令写入一文本文件, 并形象的取名 比如,将IPTABLES设置保存到当前工作目录里面的一个文件 并取名为 nat —————- vi nat —————- #复制内容 IPTABLES=”/usr/##in/iptables” IPTABLES -P INPUT ACCEPT IPTABLES -P FORWARD ACCEPT IPTABLES -P OUTPUT ACCEPT IPTABLES -t nat -P PREROUTING ACCEPT IPTABLES -t nat -P POSTROUTING ACCEPT IPTABLES -t nat -P OUTPUT ACCEPT IPTABLES -t mangle -P PREROUTING ACCEPT IPTABLES -t mangle -P OUTPUT ACCEPTIPTABLES -F IPTABLES -t nat -F IPTABLES -t mangle -F IPTABLES -X IPTABLES -t nat -X IPTABLES -t mangle -X /##in/depmod -a /##in/modprobe ip_tables /##in/modprobe ip_conntrack /##in/modprobe iptable_filter /##in/modprobe iptable_nat /##in/modprobe ipt_limit /##in/modprobe ipt_state /##in/modprobe ip_conntrack_ftp echo “1〃 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.0/24 -j MASQUERADE

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论