1.背景

CentOS绑定了多个IP地址之后,还是所有流量都走主IP,因为业务原因,无法通过配置路由的方式来定向访问,考虑使用代理服务器。

2.代理服务器安装

CentOS 代理服务器安装十分简单:

yum intall tinyproxy

配置一下

vim /etc/tinyproxy/tinyproxy.conf

配置文件中有如下内容,Bind IP可以配置使用哪个IP做出口

# Bind: This allows you to specify which interface will be used for
# outgoing connections.  This is useful for multi-home'd machines where
# you want all traffic to appear outgoing from one particular interface.
# 这允许您指定 Tinyproxy 将绑定到哪个目标地址,以将其连接到Web服务器或上游代理。
Bind 192.168.0.18

修改之后,配置服务

systemctl enable tinyproy
systemctl restart tinyproy

出错了,显示错误

"Bind" cannot be used with transparent support enabled.

这个错误,是因为编译tinyproy时,使用了–enable-transparent,启用透明代理,只有重编译tinyproxy解决了。

3.编译tinyproxy

先yum remove tinyproxy,然后git clone代码

git clone https://github.com/tinyproxy/tinyproxy.git  

进入tinyproxy目录

./autogen.sh
./configure
make
make install

启用服务,系统提示找不到文件,无法enable服务,通过再次yum安装tinyproxy,并采用find命令

find / -name 'tinyproxy'

比较前后文件差别,发现需要把tinyproxy执行文件复制到/usr/sbin/tinyproxy

cp /usr/local/bin/tinyproxy /usr/sbin/tinyproxy

再次启动,一切正常

4.检验结果

通过站长工具网站查询自己的IP地址,就可以知道是否代理服务器起作用了

curl http://ip.tool.chinaz.com | grep 'dd class="fz24"'
curl -x http://127.0.0.1:8000 http://ip.tool.chinaz.com | grep 'dd class="fz24"'

输出结果显示,两个IP是不同的,配置成功

php调用代码:

$proxy = "127.0.0.1:8000";
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXY, $proxy);

5.后记

后来发现,php的curl可以指定本地Interface,上面所做的成了无用功😂

curl_setopt($curl, CURLOPT_INTERFACE,”第二个网卡IP” );