一、背景
环境分为 DMZ区、应用区和数据区。
只有DMZ 区的服务器能联网,应用区工程需要调用第三方接口需要访第三方的公网地址,只能通过DMZ区做一个代理去访问了。
二、 代理使用
1. 四层代理
在DMZ区服务器安装rinetd
# vim /etc/yum.repos.d/nux-misc.repo
[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el7/x86_64/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
# yum -y install rinetd --disablerepo="*" --enablerepo=nux-misc
# rpm -ql rinetd
# cat /etc/rc.d/init.d/rinetd
# cat /etc/rinetd.conf
# /usr/sbin/rinetd --help
# /usr/sbin/rinetd -v
rinetd 转发规则语法如下:
bindaddress bindport connectaddress connectport
源地址 源端口 目的地址 目的端口
# vim /etc/rinetd.conf
0.0.0.0 2195 gateway.push.apple.com 2195
0.0.0.0 2196 gateway.sandbox.push.apple.com 2196
0.0.0.0 443 api.xmpush.xiaomi.com 443
# systemctl start rinetd
# systemctl enable rinetd
# systemctl status rinetd
在应用区服务
添加hosts ,将第三方地址统一解析到 代理服务器ip
#vim /etc/hosts
xx.xx.xx.xx gateway.push.apple.com
xx.xx.xx.xx gateway.sandbox.push.apple.com
xx.xx.xx.xx api.xmpush.xiaomi.com
注: xx.xx.xx.xx 为DMZ区代理服务器ip。
2. 七层代理
在DMZ区服务器安装squid
# yum -y install epel-release
# yum -y install squid
# vim /etc/squid/squid.conf
配置参数,端口默认3128
# systemctl start squid.service
# systemctl status squid.service
# systemctl enable squid.service
在应用区服务器设置OS层代理
# vim /etc/profile
##########################################################
export HTTP_PROXY="xx.xx.xx.xx:3128"
export HTTPS_PROXY="xx.xx.xx.xx:3128"
export NO_PROXY="localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16"
##########################################################
# source /etc/profile
作为应用层代理,设置OS层代理,测试其他地址的端口连通性,似乎不行
telent www.baidu.com 443
echo > /dev/tcp/www.baidu.com/443
但是 curl www.baidu.com 是能正常返回的。
在应用区服务器设置JVM层代理
示例:
$ java \
-Dhttp.proxyHost=xx.xx.xx.xx \
-Dhttp.proxyPort=3128 \
-Dhttp.proxyUser=username \
-Dhttp.proxyPassword=password \
-Dhttp.nonProxyHosts="localhost|127.0.0.1|www.example.com" \
-jar myJar.jar
注: xx.xx.xx.xx 为DMZ区代理服务器ip。
三、参考
内网Linux服务器如何通过代理方式访问外网
https://blog.csdn.net/q121365405/article/details/122267701
Linux设置http/https proxy及忽略proxy的方法
https://www.cnblogs.com/marklove/p/10805432.html
CentOS7.x上轻量级TCP转发工具rinetd的安装配置
https://www.jianshu.com/p/2605d247b944
How do I set the proxy to be used by the JVM?
https://www.jianshu.com/p/ca03a945ecba