Linux 服务器 无网络环境调试
背景:¶
数据中心,做机器上架,无网络环境如何联网调试?
Macos 是否可以直接通过一根网线直接连接ubuntu服务器,然后服务器这个没有网络可以将 http_proxy 指向 Macos
其实是可以的,但要分清楚你是要让 Mac 提供一个“代理服务”,还是只要 Mac 把网络“共享”给 Ubuntu 用。两种方式稍有区别:
1. 直接让 Mac “共享”网络(NAT 转发)¶
这种方式不需要专门在 Mac 上搭建 HTTP 代理软件,Ubuntu 上也不需要设置 http_proxy。
Mac 的 “Internet Sharing”(互联网共享) 功能可以充当一个简单的 NAT 网关,把你通过 Wi-Fi(或其它接口)获取的网络共享给通过网线(Ethernet)连过来的设备。大体步骤如下:
- 物理连接
用一根网线把 Mac 和 Ubuntu 服务器直接连起来。
-
Mac 上启用“Internet Sharing”
-
打开 “系统偏好设置(设置)” → “共享(Sharing)”。
-
在左侧列表里找到 “Internet Sharing(互联网共享)”,不要立即勾选。
-
右侧 “Share your connection from(共享以下来源的连接)” 中选择你上网使用的接口(通常是 Wi-Fi)。
-
“To computers using(对通过以下端口的电脑共享)” 中选择 “Ethernet(以太网)”(或雷雳网卡,如果是转换器)。
-
勾选 “Internet Sharing”,系统会询问是否开启,点击确认。
-
Ubuntu 网络设置
-
默认情况下,Mac 开启 “Internet Sharing” 后,会作为一个 DHCP 服务端给通过 Ethernet 接口连上的设备分配 IP。如果 Ubuntu 服务器设置成自动获取 IP(DHCP),那么它会自动拿到 192.168.2.x 这类地址(Mac OS 的默认共享网段),以及默认网关就是 Mac 的 IP(通常是 192.168.2.1)。
-
这样 Ubuntu 已经可以直接上网了,无需再配置任何代理变量。
-
验证
-
在 Ubuntu 服务器上
ping 114.114.114.114
或者ping google.com
(如果能访问外网的话)看看是否能连通。 -
如果能 ping 通,就代表 NAT 共享正常。
截图示例¶
SSH 端口转发实现上网¶
# Ubuntu 执行
$ export http_proxy=127.0.0.1:7890;export https_proxy=127.0.0.1:7890
# Mac os 执行
ssh -R 7890:localhost:7890 m1.server # m1.server为 2.x网段的服务器
2. 让 Mac 真正做一个“HTTP 代理”服务器¶
这种方式下,你需要在 Mac 上跑一个代理软件(常见例如 Squid 、Tiny Proxy 或者在 Docker 中跑一些代理容器),把 Mac 作为网络代理服务器,然后在 Ubuntu 上的环境变量中指定 http_proxy
、https_proxy
等。
2.1 Mac 上安装、配置代理服务¶
假设你要安装 Squid
做 HTTP 代理(这里只是一个示例):
-
安装 Squid
-
可以通过 Homebrew 安装:
brew install squid
-
安装完成后,在
/usr/local/etc/squid.conf
或类似路径下找到配置文件,根据需要开启相应端口、配置 ACL 等。 -
启动 Squid
-
通常执行
brew services start squid
或者直接命令行squid -N -d1
等。 -
查看 Squid 监听端口
-
默认可能是 3128,也可能是配置文件里改了别的端口。
-
确保 Mac 的防火墙允许该端口对内网(Ubuntu)的访问。
-
Mac 上的网络设置
-
若要通过一根网线直接连接,还是要保证 Ubuntu 能访问到 Mac 这个 IP 和端口。
-
通常可以 不 开启系统的 “Internet Sharing”,只要保证 Mac 和 Ubuntu 互通网络即可。可以在 Mac 上配置一个手动 IP,比如 Mac 设 192.168.0.1,Ubuntu 设 192.168.0.2,这样它俩能互相 ping 通,就能用代理了。
-
如果你想 Mac 同时也为 Ubuntu 做 NAT 转发,那么可以“Internet Sharing” + “Squid” 并存,但对纯粹想走代理的场景,这个不是必须。
2.2 Ubuntu 上设置 http_proxy / https_proxy¶
在 Ubuntu 上,如果使用全局代理的方式,可以在 ~/.bashrc
或者 /etc/environment
里加上类似:
export http_proxy="http://192.168.0.1:3128"
export https_proxy="http://192.168.0.1:3128"
如果你还需要让包管理器(apt)使用代理,可以在 /etc/apt/apt.conf.d/
下新增一个配置文件,比如 99proxy
:
Acquire {
HTTP::proxy "http://192.168.0.1:3128";
HTTPS::proxy "http://192.168.0.1:3128";
}
这样 Ubuntu 访问 HTTP/HTTPS 时,会自动把请求发给 Mac 上的代理端口,然后代理再帮你转发到外网。
哪种方式更简单?¶
如果你的目标只是“让 Ubuntu 能上网、能访问外网下载软件”,直接用 Mac 的“Internet Sharing” 比较简单,无需在 Mac 上搭任何代理软件,也不用在 Ubuntu 上配任何 http_proxy
。Ubuntu 一旦拿到 IP,就能直接通过 Mac 做 NAT 出去。
如果你确实想要用 Mac 做统一的 HTTP 代理(可能你想记录流量、限制访问或者对流量做特殊处理),那就按第二种方式在 Mac 上搭建代理,然后 Ubuntu 上再设置环境变量。
注意点¶
-
网线
-
现代 Mac 和服务器的网口一般都支持 Auto-MDIX,不用特地去准备 “交叉线”,普通双绞线(直通线)就能直接连。
-
IP 配置
-
如果用 Internet Sharing,就用默认 DHCP;如果只是跑代理服务,那么 Mac、Ubuntu 各分配一个静态 IP 保证能互通即可。
-
防火墙
-
确保 Mac 端防火墙放行需要的端口。
-
路由设置
-
如果用 “Internet Sharing”,Mac 会自动帮你做 NAT;如果只想单纯跑代理,需要保证 Mac 这台机器是可以访问外网的,Ubuntu 能访问到 Mac 代理端口。
总之,答案是肯定的 :是可以直接通过一根网线连上 Ubuntu,然后要么“共享上网”(最简单),要么“部署代理 + Ubuntu 设置 http_proxy”(更灵活)。根据自身需求选择合适的方案即可。