我在实验室工作。这个实验室里有很多台 Windows PC,我正在使用其中的一台。
还有一个代理服务器,可以让所有电脑都连接到互联网。
现在,我有一台 Red Hat 7 机器,它连接到我的电脑,这意味着它没有连接到代理服务器。
| | | |
| Internet |<--- proxy server |<--- my PC |<--- RHEL7
| | | |
假设 RHEL7 可以 ping 通我的电脑的 IP 是a.a.a.a
,我的电脑可以 ping 通代理服务器的 IP 是b.b.b.b
,代理服务器使用的端口是8080
。
现在,我需要让 RHEL7 上网。以下是我所做的:
1)我在电脑上进行如下配置:
port_forwarding(a.a.a.a, 6113, b.b.b.b, 8080)
2)我在Linux机器上进行如下配置:
export http_proxy="http://my_name:[email protected]:6113/"
export http_proxys="https://my_name:[email protected]:6113/"
export ftp_proxys="ftp://my_name:[email protected]:6113/"
现在,我可以wget www.google.fr
在我的 RHEL7 上使用它了。我的配置有效。
然后,我执行yum makecache
,结果如下:
me@localhost:/etc/yum.repos.d$ yum makecache
Loaded plugins: langpacks, product-id, search-disabled-repos
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/10): base/x86_64/group_gz | 165 kB 00:00:00
(2/10): base/x86_64/primary_db | 6.0 MB 00:00:02
(3/10): extras/x86_64/primary_db | 165 kB 00:00:00
(4/10): extras/x86_64/filelists_db | 217 kB 00:00:00
(5/10): base/x86_64/filelists_db | 7.3 MB 00:00:03
(6/10): extras/x86_64/other_db | 106 kB 00:00:00
(7/10): base/x86_64/other_db | 2.6 MB 00:00:00
(8/10): updates/x86_64/filelists_db | 4.5 MB 00:00:01
(9/10): updates/x86_64/other_db | 573 kB 00:00:00
(10/10): updates/x86_64/primary_db | 7.6 MB 00:00:03
看起来似乎yum makecache
有效。但是,当我执行时sudo yum update
,出现错误:
https://mirrors.huaweicloud.com/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.huaweicloud.com; Unknown error"
Trying other mirror.
https://mirrors.huaweicloud.com/centos/7/extras/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.huaweicloud.com; Unknown error"
我已经尝试过这里所有的镜像:http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os,但我总是收到同样的错误。
顺便说一句,输出curl -v mirrors.huaweicloud.com
:
* About to connect() to proxy 192.168.120.176 port 6113 (#0)
* Trying 192.168.120.176...
* Connected to 192.168.120.176 (192.168.120.176) port 6113 (#0)
* Proxy auth using Basic with user 'me'
> GET HTTP://mirrors.huaweicloud.com/ HTTP/1.1
> Proxy-Authorization: Basic ejAwNDM2ODgwOnI2Ni0xODE2
> User-Agent: curl/7.29.0
> Host: mirrors.huaweicloud.com
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 301 Moved Permanently
< via: proxy A
< Date: Fri, 10 Apr 2020 03:49:09 GMT
< Server: CloudWAF
< Location: https://mirrors.huaweicloud.com/
< Set-Cookie: HWWAFSESID=b0be07ce156888de4e; path=/
< Set-Cookie: HWWAFSESTIME=1586490548595; path=/
< Content-Type: text/html
< Cache-Control: public
< Content-Length: 182
< Proxy-Connection: Keep-Alive
<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>
* Connection #0 to host 192.168.120.176 left intact
答案1
我的猜测是,当您导出和时,您只为用户“我”设置了代理http_proxy
,http_proxy
因此当您yum makecache
使用该用户执行或 curl 时它会起作用。
但是当您运行时,sudo yum update
您会以 root 身份执行命令,因此您为用户“me”设置的变量不会被考虑,您需要为 root 设置它们,或者您可以在中添加以下内容yum.conf
:
proxy=http://a.a.a.a:6113/
proxy_username=my_name
proxy_password=my_passwd
如果不是这个原因,您可以尝试添加-v
到您的 yum 命令中以获取更多信息。