无交换机或路由器时,如何通过Linux共享iPhone网络给RJ45连接的Windows
实现Windows通过Linux共享iPhone网络的方法
1. 确认Linux网络接口
先找出iPhone共享网络对应的接口名,执行命令:
ip addr show
通常接口名为usb0或类似enp0s20u1的格式,记为$USB_IF;同时确认直连Windows的接口(比如eth0),记为$LAN_IF。
2. 开启Linux IP转发
- 临时生效(重启后失效):
echo 1 > /proc/sys/net/ipv4/ip_forward
- 永久生效:
编辑/etc/sysctl.conf,将net.ipv4.ip_forward=0修改为net.ipv4.ip_forward=1,然后执行:
sysctl -p
3. 配置NAT规则
通过iptables设置地址转换,让局域网流量通过USB接口转发:
iptables -t nat -A POSTROUTING -o $USB_IF -j MASQUERADE iptables -A FORWARD -i $LAN_IF -o $USB_IF -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i $USB_IF -o $LAN_IF -j ACCEPT
保存规则(依发行版不同):
- Debian/Ubuntu系:
iptables-save > /etc/iptables/rules.v4 - RHEL/CentOS系:
service iptables save
4. 调整网络配置
Linux端:
- 直连Windows的接口保持静态IP:
192.168.0.1/24,无需设置网关(USB接口自动获取IP时已生成默认路由) - 用
ip route show确认USB接口存在默认路由(格式类似default via x.x.x.x dev $USB_IF)
Windows端:
- 静态IP保持
192.168.0.2/24 - 网关设置为
192.168.0.1 - DNS服务器设置为Linux
/etc/resolv.conf中显示的nameserver值(比如8.8.8.8)
5. 测试连通性
在Windows命令行执行:
ping 8.8.8.8 ping google.com
能正常ping通则配置生效。
排查要点
- 若ping不通IP:检查IP转发是否开启、
iptables规则是否正确 - 若能ping通IP但无法解析域名:核对Windows的DNS设置
- 先确认Linux自身可正常访问互联网(执行
ping google.com测试)
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

