如何让无公网的EC2B借助有公网的EC2A访问互联网及安装YUM包?
可以借助EC2A实现EC2B访问互联网/安装YUM包,以下是两种可行方案
方案一:SSH动态端口转发(临时快速场景)
无需在EC2A额外部署服务,适合临时执行YUM操作的场景。
从本地登录EC2A时建立动态SOCKS代理:
ssh -D 1080 -C -N ec2-user@<EC2A公网IP>参数说明:
-D指定动态代理端口,-C压缩传输数据,-N仅建立连接不执行远程命令。通过EC2A跳转登录EC2B后,配置代理访问互联网:
- 临时生效(重启后失效):
执行完直接使用export http_proxy=socks5://<EC2A私有IP>:1080 export https_proxy=socks5://<EC2A私有IP>:1080yum install <包名>或yum update即可。 - 永久生效:编辑
/etc/yum.conf,在文件末尾添加:proxy=socks5://<EC2A私有IP>:1080
- 临时生效(重启后失效):
方案二:EC2A部署Squid代理(长期稳定场景)
适合EC2B长期需要访问互联网的场景,配置一次即可持续使用。
在EC2A上安装并配置Squid:
- 安装Squid服务:
sudo yum install squid -y - 修改Squid配置文件
/etc/squid/squid.conf:
找到http_access deny all规则,在其上方添加允许EC2B所在子网访问的ACL规则(示例子网为10.0.0.0/24,请替换为实际子网):
保留原有的acl local_subnet src 10.0.0.0/24 http_access allow local_subnethttp_access deny all在配置文件最后。 - 启动并设置开机自启:
sudo systemctl start squid sudo systemctl enable squid - 确保EC2A的安全组允许EC2B的私有IP访问3128端口(Squid默认端口)。
- 安装Squid服务:
在EC2B上配置代理:
- 临时生效:
export http_proxy=http://<EC2A私有IP>:3128 export https_proxy=http://<EC2A私有IP>:3128 - 永久生效(全局代理):
创建代理配置文件并加载:
或仅给YUM配置代理:编辑echo "export http_proxy=http://<EC2A私有IP>:3128" | sudo tee /etc/profile.d/proxy.sh echo "export https_proxy=http://<EC2A私有IP>:3128" | sudo tee -a /etc/profile.d/proxy.sh source /etc/profile.d/proxy.sh/etc/yum.conf添加:proxy=http://<EC2A私有IP>:3128
- 临时生效:
注意事项
- 确认EC2A的安全组允许出站80/443流量,保证其能正常访问互联网获取YUM源。
- 使用Squid时,需根据EC2B的实际私有IP段调整ACL规则,避免开放不必要的访问权限。
- SSH隧道方式依赖本地的SSH连接,连接断开后代理会失效,仅适合临时操作。
内容的提问来源于stack exchange,提问作者Alfred
相关产品推荐
相关产品推荐

