内网服务器访问外网
前提条件
目前有一台内网服务器A(内网10.10.100.114),一台能访问外网的台式机B(172.17.9.56),两台电脑都是Ubuntu 18.04系统。现在A服务器是无法访问外网的,需要使用代理的方法让A通过有外网的B访问外网。
# 以下参数根据自己机器确定
服务器A 内网 10.10.100.114 用户名root
PC B 外网 172.17.9.56 用户名ethtest
预设置的代理端口号为:55661
一、配置A的代理
该步骤比较简单,直接配置环境变量即可。可以在/etc/profile下配置,这边采用在/etc/profile.d文件夹下配置环境变量。
1.1 新建代理文件
cd /etc/profile.d/
vi proxy.sh
1.2 在proxy.sh
里面添加以下内容:
#IP是要连接的代理主机B,端口是进行代理的端口。下列环境变量代表A通过172.17.9.56的端口55661进行代理,访问外网
export http_proxy=http://172.17.9.56:55661
#如果要设置https代理,应该添加如下配置,暂未尝试过
export https_proxy=http://172.17.9.56:55661
#设置不代理的IP或者网址,如下配置,这些请求不会被代理,不支持模糊匹配
export no_proxy="127.0.0.1, localhost, 10.10.100.114, 172.17.9.56"
1.3 然后source /etc/profile
,再使用指令echo $http_proxy
,如果能打印出相关代理信息说明操作成功。
$echo $http_proxy
http://172.17.9.56:55661
二、在台式机B上安装代理程序
此方式持久有效
2.1 安装配置squid
#安装squid
sudo apt install -y squid
#cd到配置文件目录下
cd /etc/squid/
#备份原始配置文件
cp squid.conf squid.conf_bak
#修改配置文件
vi squid.conf
squid.conf
配置文件修改内容如下:
# 将http_access deny all注释掉,并修改为http_access allow all, 如下:
#http_access deny all
http_access allow all
# 修改端口为代理的端口
http_port 55661
2.2 启动
#停掉服务
sudo service squid stop
#检查语法是否错误
sudo squid -k parse
#初始化缓存空间
sudo squid -z
#启动squid
sudo service squid start
#检查端口是否开启成功
netstat -an | grep 55661
2.3 测试
使用wget baidu.com
或curl www.baidu.com
测试内网服务器能否访问外网
wget baidu.com
本方式参考CSDN博客
三、git代理设置
命令行设置
git config --global http.proxy http://172.17.9.56:55661
git config --global https.proxy http://172.17.9.56:55661
四、docker代理设置
不为docker设置的代理的话,运行时往往会提示解析失败,比如:
错误1:
在写Dockerfile时遇到returned a non-zero code: 100,报这个错误是因为在install之前没有update
错误2:
Err:1 http://security.ubuntu.com/ubuntu xenial-security InRelease
Temporary failure resolving 'security.ubuntu.com'
Err:2 http://archive.ubuntu.com/ubuntu xenial InRelease
Temporary failure resolving 'archive.ubuntu.com'
Err:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease
Temporary failure resolving 'archive.ubuntu.com'
Err:4 http://archive.ubuntu.com/ubuntu xenial-backports InRelease
Temporary failure resolving 'archive.ubuntu.com'
本方式要根据docker的版本号设置,这点比较坑,参考CSDN博客
本文实验环境,docker版本为19.03.6,所以创建~/.docker/config.json
,并配置如下:
{
"proxies":
{
"default":
{
"httpProxy": "http://172.17.9.56:55661",
"httpsProxy": "http://172.17.9.56:55661",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
五、(可选) 反向代理方式
此方式单次有效,也可使内网通过代理访问外网
1 在机器B中打开终端T1,输入ssh root@10.10.100.114
,连接机器A
2 然后继续在终端T1中,输入ssh -D 55661 ethtest@172.17.9.56
,连接机器B
3 然后在机器B中打开终端T2,输入export {http,https}_proxy='socks5h://127.0.0.1:55661'
六、其他Tips
KVM的Ubuntu 18.04重启网络服务,需要执行service network-manager restart
,别的方式会提示
$ systemctl restart network
Failed to restart network.service: Unit network.service not found.
相关文章
- supervisor使用教程
一、安装 1:easy_install 安装: easy_install supervisor 2:pip 安装: pip install supervisor 3:Debian / Ubuntu
- gitlab的ssh key不生效的问题
在用 gitlab 的管理代码时发现一个问题:如果用 http 协议,每次 push 的时候都需要输入用户名和密码,如果 用 ssh 协议,先要生成公钥: ssh-keygen -t rsa -C
- UOJ安装指南
这是一个UOJ的docker版本。在安装之前,请确认Docker已经安装在您的操作系统中。这个docker的映像是64位的版本,在32位的系统上安装可能会出现错误。 安装 请先下载 JDK7u76
- untu14.04下创建用户并赋予执行sudo命令的权限
untu14.04下创建用户并赋予执行sudo命令的权限 创建用户:adduser +用户名(该命令在home下生成用户目录并创建用户) 1. 切换到root用户下 2. /etc/sud
- 如何查看当前apache的工作模式prefork worker还是event模式?
查看apache工作模式 $ apachectl -V (注:apachectl可理解为apache control,其实是一段bash脚本) Server version: Apache/2.4.
随机推荐
- supervisor使用教程
一、安装 1:easy_install 安装: easy_install supervisor 2:pip 安装: pip install supervisor 3:Debian / Ubuntu
- gitlab的ssh key不生效的问题
在用 gitlab 的管理代码时发现一个问题:如果用 http 协议,每次 push 的时候都需要输入用户名和密码,如果 用 ssh 协议,先要生成公钥: ssh-keygen -t rsa -C
- UOJ安装指南
这是一个UOJ的docker版本。在安装之前,请确认Docker已经安装在您的操作系统中。这个docker的映像是64位的版本,在32位的系统上安装可能会出现错误。 安装 请先下载 JDK7u76
- untu14.04下创建用户并赋予执行sudo命令的权限
untu14.04下创建用户并赋予执行sudo命令的权限 创建用户:adduser +用户名(该命令在home下生成用户目录并创建用户) 1. 切换到root用户下 2. /etc/sud
- 如何查看当前apache的工作模式prefork worker还是event模式?
查看apache工作模式 $ apachectl -V (注:apachectl可理解为apache control,其实是一段bash脚本) Server version: Apache/2.4.