设为首页收藏本站

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 78|回复: 0

Linux 单台服务器多IP出口出网 均衡负载 爬虫CDN多IP回源的方法 nth模块 iptables数据流向图

[复制链接]

签到天数: 2246 天

[LV.Master]伴坛终老

 成长值: 20970
发表于 2018/2/5 03:15 | 显示全部楼层 |阅读模式 |Google Chrome 64.0.3282.119|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
环境:服务器配有:主ip:192.168.1.195与192.168.1.196/197/198/199 四个额外扩展ip

希望:实现对外发送请求时,对方看到我的出口ip每次都是不一样的,共五个ip同时使用轮训负载作为出口IP

方案:iptables的nth模块
注意设置好出网端口和网卡eth0,例如cdn一般使用80端口,主IP不知道如何排除195使用,仅用扩展IP,下面教程会同时使用五个IP一起轮训负载。
  1. /sbin/iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 25 -o eth0 -m statistic --mode nth --every 4 --packet 0 -j SNAT --to-source 192.168.1.196
  2. /sbin/iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 25 -o eth0 -m statistic --mode nth --every 4 --packet 1 -j SNAT --to-source 192.168.1.197
  3. /sbin/iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 25 -o eth0 -m statistic --mode nth --every 4 --packet 2 -j SNAT --to-source 192.168.1.198
  4. /sbin/iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 25 -o eth0 -m statistic --mode nth --every 4 --packet 3 -j SNAT --to-source 192.168.1.199
复制代码


如果使用80端口出向负载的话,可以用这个命令来尝试
  1. curl myip.ipip.net
复制代码


效果图
QQ图片20180205032921.png

参考:netfilter的数据包流向图
nfk-traversal.png

参考:iptables的数据包流向图
213457974.gif

这个就是有个毛病
主ip一起出去了。。
可能影响,被引起流量攻击,引起DNS无法解析,45S超时,被运营商黑洞导致部分程序响应失败等问题。

如果提示,代表你的vps为openvz虚拟化,是不支持的,可以先尝试联系工单客服打开,沟通不行的话,需要更换xen或者kvm等更高级虚拟化vps服务器。
iptables v1.4.7: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
之后在尝试命令,OJBK,可以用了
我这台openvz是两个IP地址的,直接命令一键回源端口80和443端口都自动走均很负载,every改成2即可,主IP是.12,写一条.13足够
  1. /sbin/iptables -t nat -I POSTROUTING -m state --state NEW -p tcp -m multiport --dport 80,443 -o venet0 -m statistic --mode nth --every 2 --packet 0 -j SNAT --to-source 192.157.201.13
复制代码

要下次开机后永久生效记得保存下
  1. service iptables save
复制代码


打印已经保存的nat规则
  1. cat /etc/sysconfig/iptables | grep 'A POSTROUTING'
复制代码



openvz服务器购买注册地址:https://www.budgetvm.com/account/aff.php?aff=1184


部分参考:http://www.run-debug.com/?p=508

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 用百度帐号登录新浪微博账号登陆

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2018/2/26 09:20 , Processed in 0.271113 second(s), 45 queries , Gzip On, Apc On.

Powered by itzmx!

© 2011-2018 sakura

快速回复 返回顶部 返回列表