一、用户需求
一个用户提出本地DC机房中的服务器需要访问互联网认证资源,但是DC的安全策略限制无法直接接入互联网,希望电信可以通过天翼云服务器实现间接访问互联网,本地服务器与与天翼云服务器之间使用云专线连接。
二、组网拓扑
拓扑说明:本地服务器地址为10.37.1.1与天翼云vpc专网服务器10.37.6.50可以通过云专线打通实现ip访问,10.37.6.50可以通过安装配置程序实现用户10.37.1.1访问指定互联网网站的业务需求。
三、实现方案一nginx的正向proxy功能
1、优点
性能高,速度快,
2、缺点
不专业,不能实现whitelist功能
3、步骤
yum install gcc gcc-c++ autoconf automake -y
yum install pcre pcre-devel -y
yum install openssl openssl-devel -y
yum install patch -y
yum install git -y
yum install net-tools -y
mkdir -p /downloads
cd /downloads
git clone https://github.com/chobits/ngx_http_proxy_connect_module.git
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -xzvf nginx-1.18.0.tar.gz
cd nginx-1.18.0/
patch -p1 < /downloads/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_1018.patch
./configure --add-module=/downloads/ngx_http_proxy_connect_module
make && make install
nginx安装编译完毕后开始修改nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
在http配置段落中加入下面内容,将8081端口做http转发,8082端口做https转发
server {
resolver 114.114.114.114;
listen 8081;
location / {
proxy_pass http://$http_host$request_uri;
proxy_set_header HOST $http_host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_next_upstream error timeout invalid_header http_502;
}
}
server {
listen 8082;
# dns resolver used by forward proxying
resolver 114.114.114.114;
# forward proxy for CONNECT request
proxy_connect;
proxy_connect_allow 443 563;
proxy_connect_connect_timeout 10s;
proxy_connect_read_timeout 10s;
proxy_connect_send_timeout 10s;
# forward proxy for non-CONNECT request
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
}
}
配置修改完成后,启动nginx即可
测试方法:
curl --proxy 10.37.6.50:8081 http://www.baidu.com
curl --proxy 10.37.6.50:8082 https://www.baidu.com
四、实现方案二--专业软件squid实现
1、优点
安装配置简单,可以实现whitelist功能
2、缺点
没发现
3、安装配置
yum install squid
systemctl enable squid
systemctl start squid
vi /etc/squid/squid.conf
在配置文件中加入下面的两行内容
acl whitelist dstdomain "/etc/squid/whitelist.txt"
http_access allow whitelist
然后配置/etc/squid/whitelist.txt文件,在文件中加入允许访问的网站即可
vi /etc/squid/whitelist.txt
www.baidu.com
4、测试
curl --proxy 10.37.6.50:8081 https://www.baidu.com
测试白名单
curl --proxy 10.37.6.50:8081 https://news.163.com