在实际生产环境中我们可能会遇到linux服务器只有内网而无法联网的情况,此时我们可以通过我们的笔记本电脑使服务器接入互联网。

前置条件:

Linux服务器

  • 内网ip 192.168.2.20

笔记本电脑:

  • 有线网卡设置静态ip 192.168.2.11

  • 无线网卡:连接wifi或者热点网络

网络拓扑:

操作方法

第一部分:配置笔记本电脑(网关)

  1. 开启 Internet 连接共享 (ICS)

    • 在 Windows 搜索栏中输入 “网络连接” 并打开它。

    • 找到您连接到互联网的无线网卡 WLAN2

    • 右键点击它,选择 “属性”

    • 切换到 “共享” 选项卡。

    • 勾选 “允许其他网络用户通过此计算机的 Internet 连接来连接”

    • “家庭网络连接” 的下拉菜单中,选择您用于连接服务器的有线网卡 以太网 3

    • 点击 “确定”。系统可能会提示您,以太网 3 的 IP 地址将被设置为 192.168.137.1。这是正常现象,但我们希望使用 192.168.2.11,所以需要下一步手动修改。

  2. 手动设置有线网卡的静态 IP(覆盖 ICS 的自动设置)

    • 回到 “网络连接” 窗口。

    • 右键点击您的有线网卡 以太网 3,选择 “属性”

    • 双击 “Internet 协议版本 4 (TCP/IPv4)”

    • 选择 “使用下面的 IP 地址”

      • IP 地址: 192.168.2.11 (您期望的地址)

      • 子网掩码: 255.255.255.0

      • 默认网关: (留空)

    • DNS 服务器: 可以留空,或者填写一个公共 DNS 如 114.114.114.114。因为笔记本电脑本身可以通过 WLAN 解析 DNS。

    • 点击 “确定”

  3. 配置 Windows 防火墙(允许转发)

    • 通常,开启 ICS 后 Windows 防火墙会自动添加必要的规则允许转发。如果后续测试不通,请确保防火墙没有阻止内网网卡的通信。

第二部分:配置Linux内网服务器

  1. 设置静态 IP 地址

    • 在您的服务器上(假设是 Linux),编辑网络配置文件(例如 /etc/netplan/01-netcfg.yaml/etc/sysconfig/network-scripts/ifcfg-eth1)。

    • 确保配置如下:

      • IP 地址: 192.168.2.20

      • 子网掩码: 255.255.255.0 (或 CIDR 表示法 /24)

      • 网关: 192.168.2.11 (这是最关键的一步,指向笔记本电脑的有线网卡 IP)

      • DNS: 192.168.2.11 (推荐,这样所有 DNS 请求都经由笔记本转发) 或者直接设置一个公共 DNS 如 8.8.8.8

  2. 应用配置并重启网络

    • 对于 netplan (Ubuntu):

      sudo netplan apply

    • 对于 systemd-networkd (CentOS/Rocky):

      sudo systemctl restart systemd-networkd

第二部分(拓展):内网服务器为windows系统

参考第一部分2手动配置连接网卡的静态ip地址

  • 确保配置如下:

    • IP 地址: 192.168.2.20

    • 子网掩码: 255.255.255.0 (或 CIDR 表示法 /24)

    • 网关: 192.168.2.11 (这是最关键的一步,指向笔记本电脑的有线网卡 IP)

    • DNS: 192.168.2.11 (推荐,这样所有 DNS 请求都经由笔记本转发) 或者直接设置一个公共 DNS 如 8.8.8.8

第三部分:测试验证

  1. 在服务器上测试:

    • 测试网关连通性: ping 192.168.2.11。这必须通,否则检查网线、IP设置、防火墙。

    • 测试互联网连通性: ping 8.8.8.8。如果能通,说明 NAT 转发工作正常。

    • 测试 DNS 解析: ping www.baidu.com。如果能通,说明 DNS 配置正确。如果 8.8.8.8 能通但域名不通,检查服务器的 DNS 设置。

其他情况:

如果笔记本电脑也为linux系统需要开启iptables的转发并设置相应规则

# 启用 IP 转发
sysctl -w net.ipv4.ip_forward=1

# 设置 iptables NAT 规则
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

# (注意:请将 wlan0 和 eth0 替换为您实际的无线和有线网卡名称)