
场景定位一台 Linux 主机已经可以访问外网另一台同网段或直连主机无法访问外网需要临时通过前者共享网络。适用场景临时排障、临时下载依赖、设备初始化、无路由器或默认网关不可用的局域网环境。适用系统常见 Linux 发行版具备iproute2、sysctl、iptables或兼容层。配置性质运行时配置不写持久化网络配置不保存防火墙规则。日期2026-07-06问题现象下游主机可以访问局域网内的上游主机但不能访问公网。典型症状包括下游主机ping 公网IPv4测试地址失败。下游主机已有默认路由但默认网关不可达或不能转发外网流量。下游主机能 SSH 到上游主机或上游主机能 SSH 到下游主机。上游主机自身可以访问公网。下游主机需要临时借用上游主机的外网出口。根因该问题通常不是单点原因而是路由、转发、地址转换共同缺失。类型失败原因下游默认路由错误下游主机的默认网关指向不可用设备或未指向可转发流量的上游主机上游未开启转发Linux 默认可能关闭 IPv4 包转发导致收到的下游流量不会继续发往外网缺少 NAT上游主机把下游私网源地址直接发往外网回程流量无法正确返回防火墙阻断上游主机的转发链或安全策略拒绝跨网卡转发DNS 不可用IP 层已通但下游主机没有可用 DNS 解析配置解决步骤以下命令中的占位符需要按实际环境替换。占位符含义上游网卡上游主机连接外网的网卡下游网卡上游主机连接下游主机所在网络的网卡上游主机下游侧IPv4上游主机在下游网络中的 IPv4 地址下游主机IPv4下游主机的 IPv4 地址下游主机网卡下游主机连接上游主机所在网络的网卡公网IPv4测试地址可用于连通性测试的公网 IPv4 地址示例拓扑以下示例使用私有 IPv4 地址仅用于说明替换关系。实际环境应使用现场网段、网卡名和地址。Internet | | default via 10.20.0.1 | [上游主机] 上游网卡 wlan0, 10.20.3.45/16 下游网卡 eth0, 192.168.50.1/24 | | 下游网段: 192.168.50.0/24 | [下游主机] 下游主机网卡 eth0, 192.168.50.2/24按该示例主要占位符替换如下占位符示例值上游网卡wlan0下游网卡eth0上游主机下游侧IPv4192.168.50.1下游主机IPv4192.168.50.2下游主机网卡eth0公网IPv4测试地址1.1.1.11. 确认上游主机的网络状态在上游主机执行ip-braddriproute确认以下信息上游网卡存在默认路由可以访问外网。下游网卡与下游主机处于同一二层或三层可达网络。上游主机下游侧IPv4可以被下游主机访问。2. 确认下游主机的网络状态在下游主机执行ip-braddriprouteping-c2-W2上游主机下游侧IPv4确认以下信息下游主机IPv4已配置。下游主机能访问上游主机下游侧IPv4。如果已有默认路由记录当前默认网关便于回退。3. 在上游主机临时开启 IPv4 转发关键该步骤只修改运行时内核参数不写入持久化配置。sudosysctl-wnet.ipv4.ip_forward1确认结果sysctlnet.ipv4.ip_forward期望输出中包含net.ipv4.ip_forward 14. 在上游主机添加临时 NAT 规则关键该规则只针对指定下游主机避免扩大共享范围。sudoiptables-tnat-APOSTROUTING\-s下游主机IPv4/32\-o上游网卡\-jMASQUERADE5. 在上游主机允许临时转发允许下游主机经上游网卡访问外网sudoiptables-AFORWARD\-i下游网卡\-o上游网卡\-s下游主机IPv4/32\-jACCEPT允许已建立连接的回程流量返回下游主机sudoiptables-AFORWARD\-i上游网卡\-o下游网卡\-d下游主机IPv4/32\-mconntrack--ctstateRELATED,ESTABLISHED\-jACCEPT6. 在下游主机临时切换默认路由关键该步骤只修改运行时路由表不修改 NetworkManager、netplan 或其他持久化网络配置。sudoiproute replace default via上游主机下游侧IPv4dev下游主机网卡检查当前默认路由iproute如果存在多条默认路由优先级由路由 metric 决定。通常无 metric 的临时路由会优先于带较大 metric 的旧默认路由。7. 必要时临时设置 DNS如果下游主机可以访问公网 IPv4但域名解析失败再处理 DNS。先验证 DNSgetent ahostsv4 example.com如果没有输出可在使用systemd-resolved的系统上临时指定 DNSsudoresolvectl dns下游主机网卡DNS服务器IPv4sudoresolvectl domain下游主机网卡~.如果系统不使用systemd-resolved应按当前发行版的 DNS 管理方式临时调整避免直接覆盖由网络管理器维护的解析文件。8. 按示例拓扑展开后的命令如果采用上文示例拓扑上游主机执行sudosysctl-wnet.ipv4.ip_forward1sudoiptables-tnat-APOSTROUTING\-s192.168.50.2/32\-owlan0\-jMASQUERADEsudoiptables-AFORWARD\-ieth0\-owlan0\-s192.168.50.2/32\-jACCEPTsudoiptables-AFORWARD\-iwlan0\-oeth0\-d192.168.50.2/32\-mconntrack--ctstateRELATED,ESTABLISHED\-jACCEPT下游主机执行sudoiproute replace default via192.168.50.1 dev eth0ping-c2-W21.1.1.1 getent ahostsv4 example.comcurl-4-I--max-time8https://example.com验证清单下游主机能访问上游主机下游侧IPv4。上游主机net.ipv4.ip_forward为1。上游主机存在针对下游主机IPv4的 NAT 规则。上游主机存在下游到上游的 FORWARD 允许规则。下游主机默认路由优先指向上游主机下游侧IPv4。下游主机ping -c 2 -W 2 公网IPv4测试地址成功。下游主机getent ahostsv4 example.com可以返回 IPv4 地址。下游主机curl -4 -I --max-time 8 https://example.com返回 HTTP 响应头。可使用以下命令检查上游主机的临时规则sudoiptables-tnat-SPOSTROUTINGsudoiptables-SFORWARD撤销方法在下游主机删除临时默认路由sudoiproute del default via上游主机下游侧IPv4dev下游主机网卡在上游主机删除临时 NAT 规则sudoiptables-tnat-DPOSTROUTING\-s下游主机IPv4/32\-o上游网卡\-jMASQUERADE在上游主机删除临时转发规则sudoiptables-DFORWARD\-i下游网卡\-o上游网卡\-s下游主机IPv4/32\-jACCEPTsudoiptables-DFORWARD\-i上游网卡\-o下游网卡\-d下游主机IPv4/32\-mconntrack--ctstateRELATED,ESTABLISHED\-jACCEPT如果上游主机原本没有开启 IPv4 转发可关闭运行时转发sudosysctl-wnet.ipv4.ip_forward0维护要点该方案是临时方案主机重启后通常失效。网络管理服务重连网卡后下游主机的运行时路由可能被覆盖。防火墙服务重载后运行时iptables规则可能被清除。上游主机外网出口变化后需要重新确认上游网卡并重建 NAT 规则。下游主机 IPv4 地址变化后需要更新 NAT 和 FORWARD 规则中的下游主机IPv4。不要运行防火墙规则保存命令否则临时规则可能被持久化。备注该方案只覆盖 IPv4。IPv6 共享通常需要路由通告、前缀委派或单独的 NAT66/NPTv6 设计不应直接套用 IPv4 NAT 步骤。如果上游主机正在使用 VPN、透明代理或虚拟网卡需要确认上游网卡是实际可出网的出口。如果系统的 FORWARD 默认策略已经是 ACCEPT显式添加 FORWARD 规则仍有价值因为它让允许范围更清晰便于撤销。如果安全策略要求最小暴露面NAT 和 FORWARD 规则应限制到单个下游主机IPv4/32。备选方案使用 NetworkManager 共享模式部分系统支持将连接配置为共享模式由 NetworkManager 自动处理地址分配、转发和 NAT。不推荐用于只需要临时排障的场景原因是它会修改连接配置容易影响后续网络行为。使用 nftables 原生规则现代发行版可能以 nftables 为主。可以用 nftables 实现同等 NAT 和转发策略。不推荐在临时排障中混用iptables和nft两套命令原因是规则位置和优先级不直观排查成本更高。应先确认系统当前防火墙栈再选择一种工具完成配置。持久化路由和 NAT可以通过网络管理器、系统网络配置和持久化防火墙服务保存该配置。不推荐用于临时共享网络原因是持久化配置会在后续重启或重连后继续生效可能引入非预期的转发面和安全风险。