今天在工作中,遇到这样的一个问题:不知道是谁将服务器上连接互联网的网线拔了。导致服务器无法直接连接到互联网。但是连接到服务器的客户端电脑(也是 Linux 系统)是能够正常联网的。所以,想到利用代理的方式,让服务器透过客户端电脑连接互联网。
客户端的操作
首先,使用以下命令安装 squid,我们将借助它进行代理:
apt install squid
然后,进行配置。编辑 /etc/squid/squid.conf
,首先,找到 http_access deny all
将其修改为 http_access allow all
以允许所有用户利用其进行代理。然后找到 http_port 3128
将其修改为 http_port 192.168.1.128:3128
,其中的 192.168.1.128
是客户端的 IP
地址(准确说是和服务器连接的那个网口的 IP 地址)。
配置完毕后,通过以下命令启动 squid 代理:
squid -k parse # 检查配置文件是否正确
squid -z # 建立缓存目录
service squid start # 启动服务
到这里,客户端的配置就已经结束了,可以通过 netstat -nltp
命令查看服务是否正确运行:
$ netstat -nltp
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 10086/(squid)
如果看到类似以上的输出,则代表服务正常执行。
服务器端操作
使用以下命令启用代理:
export http_proxy=http://192.168.1.128:3128
也可以将这句话添加到环境变量中。
执行完毕,就可以使用命令 curl www.baidu.com
来测试是否能够连接到网络。如果在输出中能够看到类似 “百度一下,你就知道” 的字样,则证明已经成功连接网络。
此方法可以让大部分命令都透过网络进行连接。但是有一些命令可能不会读取系统的环境变量,对于这些命令,需要查阅它们的使用手册,确认具体的操作办法。