程序需要从对方接口获取大量数据,但是对方有ip访问速率限制,所以需要启动多个进程去拉取数据,同时将不同进程访问外网的源ip设置为不同地址。
服务器上有3个ip,需要分别从3个ip去主动访问接口。
这里通过iptables中的mangle表,对不同的用户数据包打标记的功能实现。
首先添加2个用户,user1、user2,通过/etc/passwd查看用户的uid。
用户 - uid user1 - 10002 user2 - 10003
# 对 user1 的包打1002的标记,和uid一致即可。方便区分。 iptables -t mangle -A OUTPUT -m owner --uid-owner 1002 -j MARK --set-mark 1002 iptables -t nat -A POSTROUTING -m mark --mark 1002 -j SNAT --to-source 103.x.x.227 # 对 user2 的包打10003的标记 iptables -t mangle -A OUTPUT -m owner --uid-owner 1003 -j MARK --set-mark 1003 iptables -t nat -A POSTROUTING -m mark --mark 1003 -j SNAT --to-source 103.x.x.252
这样当用不同的账号去运行程序,源ip就会不同。
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/5386.html