让不能上网的机器借能上网的机器上网
程序员文章站
2022-06-02 20:16:07
...
在内网工作,有时候会出现这种情况。我的电脑A能够上网,但是我通过ssh连接到的另一台机器B却不能上网。这种情况造成的后果就是,如果我需要在机器B上安装软件,往往不能通过连网的方式安装,只能通过机器A下载好源码,然后放到机器B下编译安装。显得很慢,如果需要安装的软件很琐碎,那基本要奔溃~~
正在烦恼时,同事告诉我有很好的方法可以解决我的烦恼,于是觉得应该记录下来,以后也好回看。
首先在A机器上,用pip安装proxy.py
pip install proxy.py
然后,运行:
proxy --hostname 127.0.0.1
outputs:
2020-09-04 20:09:03,722 - pid:1499979 [I] load_plugins:534 - Loaded plugin proxy.http.proxy.HttpProxyPlugin
2020-09-04 20:09:03,723 - pid:1499979 [I] listen:61 - Listening on 127.0.0.1:8899
2020-09-04 20:09:03,801 - pid:1499979 [I] start_workers:84 - Started 48 workers
这行命令的作用,是监听本地8899端口,如果8899端口有网络请求过来,则将其转给本地的http代理。
接下来,我们需要在本机A和机器B之间建立反向连接,这样就可以将B机器的网络请求转发给机器A的8899端口,从而可以使得机器B能够通过机器A上网:
ssh -R 127.0.0.1:8899:127.0.0.1:8899 remote_machine_B
其中remote_machine_B是机器B的HostName,需要在~/.ssh/config文件中配置。不熟悉ssh使用的童鞋可以自己找些资料学习。
然后,我们利用ssh,通过机器A登录到机器B上,配置一下http和https的环境变量:
export http_proxy=http://127.0.0.1:8899
export https_proxy=http://127.0.0.1:8899
之后,我们就可以直接在机器B将网络请求转发给机器A,从而实现机器B的上网。
上一篇: 路由嵌套
下一篇: Linux服务器上网DNS设置