You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让局域网通过Ubuntu服务器使用Android USB共享网络?

嘿,我来一步步帮你搞定这个需求!咱们分阶段操作,每一步都很清晰,跟着做就行~

第一步:确认USB Tethering连接正常

先把手机用USB线连到Ubuntu服务器上,在手机端开启USB共享网络(Android 8.1里一般在「设置-网络和互联网-热点和共享」里找)。

回到Ubuntu的命令行,用下面的命令检查是否识别到了USB网络接口:

ip link show

你应该能看到一个类似usb0的新接口(不同手机可能命名略有不同)。接着给这个接口获取IP地址:

dhclient usb0

用下面的命令确认是否成功拿到IP:

ip addr show usb0

如果输出里有类似inet 192.168.42.100/24这样的内容,说明连接没问题,记下来这个IP的网关(一般是同网段的第一个地址,比如192.168.42.1)。

第二步:开启Ubuntu的IP转发功能

要让Ubuntu当网关转发流量,必须先打开IP转发开关。临时生效可以用:

echo 1 > /proc/sys/net/ipv4/ip_forward

但重启后会失效,所以得永久配置:编辑/etc/sysctl.conf文件,找到net.ipv4.ip_forward=1这一行,把前面的注释符号#删掉,然后执行下面的命令让配置生效:

sysctl -p
第三步:把Ubuntu的默认路由切换到手机USB接口

首先看看当前的默认网关(也就是原来的路由器):

ip route show default

输出大概是default via 192.168.1.1 dev eth0这样的。现在要把默认路由改成手机USB接口的网关:

# 先删除原来的默认路由
ip route del default
# 添加新的默认路由,替换成你刚才记的usb0网关IP
ip route add default via 192.168.42.1 dev usb0

如果想让这个路由配置永久生效(重启后不丢失),可以创建一个systemd网络配置文件。比如新建/etc/systemd/network/usb0.network,内容如下:

[Match]
Name=usb0

[Network]
DHCP=yes
Gateway=192.168.42.1  # 替换成你的usb0实际网关IP

然后重启systemd-networkd服务:

systemctl restart systemd-networkd
第四步:配置Ubuntu的局域网接口为静态IP

因为要让局域网设备把它当网关,Ubuntu的局域网接口(比如eth0)最好设成静态IP。同样用systemd配置,新建/etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
Address=192.168.1.10/24  # 设一个和原来路由器同网段的静态IP,比如192.168.1.10
DHCP=no

重启networkd服务让配置生效:

systemctl restart systemd-networkd
第五步:配置NAT地址伪装,让流量能正常返回

手机的网络是私网,Ubuntu需要把局域网的流量做地址伪装,才能让手机识别并转发出去。用iptables设置:

iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE

要让这个规则永久保存,先安装iptables-persistent:

apt-get update && apt-get install iptables-persistent

安装过程中会提示是否保存当前规则,选「Yes」就行。之后重启Ubuntu,规则也不会丢失。

第六步:让局域网设备指向这个新网关

现在有两种方式让局域网设备用Ubuntu当网关:

  • 手动配置:给每台设备的网络设置里,把默认网关改成Ubuntu的静态IP(比如192.168.1.10),DNS可以设成手机提供的或者公共DNS(比如8.8.8.8)。
  • 自动分配(更方便):在Ubuntu上装DHCP服务器dnsmasq,让它自动给局域网设备分配网关和IP。安装命令:
apt-get install dnsmasq

编辑/etc/dnsmasq.conf,添加或修改以下内容:

interface=eth0  # 指定监听局域网接口
dhcp-range=192.168.1.50,192.168.1.200,255.255.255.0,24h  # DHCP分配的IP范围和租期
dhcp-option=3,192.168.1.10  # 指定网关为Ubuntu的静态IP
dhcp-option=6,8.8.8.8,8.8.4.4  # 指定DNS服务器

重启dnsmasq服务:

systemctl restart dnsmasq

记得要关闭原来路由器的DHCP功能,避免冲突。

验证是否生效

找一台局域网设备,执行traceroute 8.8.8.8(Windows用tracert 8.8.8.8),如果第一跳是Ubuntu的静态IP,后续跳转到手机的网络,就说明整个配置成功了!

内容的提问来源于stack exchange,提问作者Sandros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:55:50