如何从我的 Linux 盒子与 Windows 共享互联网?

如何从我的 Linux 盒子与 Windows 共享互联网?

我有一台 Linux (Ubuntu 12.04) PC,通过 Greenpacket WiMax USB 调制解调器连接到互联网。我想与另一台运行 Windows 7 Home Premium 并通过 LAN 连接到 Linux PC 的计算机共享 Internet 连接。这可能吗?如何?是否可以相反(将互联网连接到 Windows 计算机并与 Linux 共享)?

答案1

你需要设置网络地址转换在 Linux 盒子上。当您搜索 NAT 和 iptables 时,网络上有许多指南,可能还包括您使用的发行版。这是 Debian 的操作指南,它也适用于其他发行版:http://debianclusters.org/index.php/NAT_with_IPTables

以下是一些来自德语 Ubuntu 指南:

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -o eth0 -s 192.168.0.0/16 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

将它们放在启动时执行的某个位置(/etc/rc.local,或者将“up”放在每行前面并将整个内容放入 /etc/network/interfaces 中),并将 eth0 替换为连接的网络设备通过连接到 LAN 的网络连接到 Internet 和 eth1。

如果您不想bind在 Linux 机器上进行设置,您可能还需要手动告诉 Windows 机器一些名称服务器 (DNS)。我相信您的 LAN 中不需要或已经有 DHCP 服务器。

答案2

问题问,

是否可以反过来(将 Internet 连接到 Windows 计算机并与 Linux 共享)?

以下是如何将您的 Internet 连接从 Windows 共享到 Linux。

在 Windows 上,

  • 确保已启用互联网共享。

    • 转到控制面板,找到网络连接,然后右键单击互联网适配器,然后单击“属性”。
    • 单击“高级”。
    • 单击此处的单选按钮以启用 Internet 共享。
  • 在 Windows 7 上:

    • 进入控制面板→“网络和共享中心”。 (您可能需要通过“网络和互联网”才能到达那里。)
    • 单击“更改适配器设置”。
    • 右键单击网络适配器,然后单击“属性”。如果询问,请输入管理员密码。
    • 单击“共享”选项卡并启用共享。

在 Linux 上,

具有 root (sudosu) 权限,

  1. 键入以下内容以设置默认网关:

    route add default gw x.x.x.x

    (注意:将 xxxx 替换为 Windows 主机的本地 IP 地址。您可以通过ipconfig -all在 Windows 命令提示符中键入:找到它。)

  2. 接下来输入以下内容来设置 DNS:

    echo "nameserver y.y.y.y" > /etc/resolv.conf

    (注意:将 yyyy 替换为 Windows 上的 DNS 服务器地址。您可以通过ipconfig -all在 Windows 命令提示符中键入:来找到它。)

在这种情况下,Windows 已连接到 Internet。完成所有设置后,您现在可以尝试从 Linux 使用 Internet。 Linux 和 Windows 主机应该能够同时使用 Internet。

答案3

要将 Linux 机器连接到 Windows 机器(以获取互联网),您需要一个有效的 LAN(以太网)连接 - 正如我在此处的第一篇文章中所述。因此基本上,您需要自己在两台计算机上分配静态私有 IPv4 地址。您可能还需要将连接设置为“私有”或“可信”。连接两台电脑后,进入“网络和共享中心”->“更改适配器设置”,然后选择与您的互联网连接相对应的网络接口。右键单击属性并查找与共享连接相关的选项卡。在那里您应该能够选择您的 LAN(以太网)连接,以与您的其他电脑共享。

您可能需要在“内部”LAN PC 上指定 DNS,就像我在本线程的第一篇文章中所说的那样。因此,您需要在 Windows 上的命令提示符下运行 ipconfig 来找出您正在使用的 DNS,或使用 Google 的 DNS 8.8.8.8 和/或 8.8.4.4。

答案4

有一个简单的指南https://oracle-base.com/articles/linux/use-iptables-to-implement-packet-filtering-and-configure-nat。但我发现,在Windows中,Linux PC正在使用的DNS地址也必须在Windows中给出。

我有一个 3G USB 调制解调器连接到我的 Linux PC,然后我有两台 Windows PC 可以上网。它被称为(内核)数据包转发,并且当您最终理解它时,它非常简单且快速。

您需要通过在 Linux 上运行命令“ifconfig”(在终端中)和在 Windows 上运行“ipconfig”命令(在命令提示符中)来找出网络接口名称。 Linux 上的接口名称位于最左侧,例如:enp2s0、enp3s0、enp0s18f2u6、lo。现在您设置打包转发:

  1. 首先,您需要在 Linux PC 上启用数据包转发(请参阅我从 oracle-base.com 链接的指南)。

  2. 接下来,您可以运行这些命令,如 oracle-base.com 指南所述(但是请稍等,然后继续阅读):

    sudo iptables -I 转发 -i my_lan_interface -o my_modem_interface -j 接受 sudo iptables -I 转发 -i my_modem_interface -o my_lan_interface -j 接受 sudo iptables -t nat -I POSTROUTING -o my_modem_interface -j MASQUERADE

    但我在网上找到了一个更强大的方法:

    sudo iptables -t nat -A POSTROUTING -o my_modem_interface -j MASQUERADE --random sudo iptables -A FORWARD -i my_lan_interface -o my_modem_interface -j 接受 sudo iptables -A FORWARD -i my_modem_interface -o my_lan_interface -m conntrack --ctstate 相关,已建立 -j 接受 sudo iptables -A 转发 -j 删除

    以下是对上面命令(“更强大”的示例)的解释,顺序相同:

    • 第一条命令:在 my_modem_interface 上启用伪装,以便在传出数据包上重写源地址。 --random 标志用于具有对称 NAT。

    现在我们要配置转发规则。 iptables 默认情况下会无条件转发所有流量。在这里,我们更愿意限制来自互联网的入站流量并允许所有出站流量:

    • 第二个命令:允许从 my_lan_interface 到 my_modem_interface 的流量。
    • 第三个命令:允许将流量从 my_modem_interface 返回到 my_lan_interface。
    • 第四个命令:丢弃所有其他不应转发的流量。

    当您重新启动 Linux PC 时,您将必须重新输入这些命令 - 我有一个在每次启动时运行它们的脚本。您可以通过适当的“服务”调用使这些更改永久化(再次参见上面给出的 oracle-base.com 指南),但我建议在每次启动时运行它们(在脚本中),因为您可能想要试验和更改撤消您保存的内容是另一个挑战。如果出现问题,或者您想要更改某些内容,或者您​​只是不想在当前会话中使用此功能(或根本不需要),那么只需重新启动您的电脑,它们就会消失 - 但您必须自己禁用数据包转发(在重新启动之前,在 /etc/sysctl.conf 中写入“net.ipv4.ip_forward = 0”)以完全禁用此技术。

  3. 现在您必须在 Linux PC 和其他计算机之间创建网络连接(以太网连接)。例如:

    • A) 在连接到互联网的 Linux PC(我使用 Fedora)上,使用网络连接管理器创建以太网连接,选择适当的接口(网卡名称,在我的例子中为 enp3s0),将这台 Linux PC 连接到我的局域网。请务必选择正确的防火墙区域,否则您的 LAN 将无法访问互联网。因此,由于这是您的内部 LAN 接口,请将防火墙区域设置为“受信任”,但调制解调器连接接口应设置为“公共”。接下来,在 IPv4 设置选项卡中,设置必须使用 IPv4 进行连接(IPv6 可以忽略),并选择手动地址设置。现在添加地址 192.168.2.100 - 这将是 LAN 上这台 Linux PC 的地址。网络掩码将自动设置(255.255.255.0,因为这是“C 类”(私有)地址)。应用您的设置并连接。

    • B) 在第二台 PC(使用 Linux 或 Windows,通过以太网电缆连接到上面的第一台 PC)上,也创建一个网络连接(如果是 Windows,请查看下面的详细信息),选择适当的网络接口(设备/卡)连接到第一台 PC),对第一台 PC 使用上述手动 IPv4 设置,但此处设置地址 192.168.2.101 - 这将是 LAN 上第二台 PC 的地址(这些是“私有”地址,意味着它们在您的 LAN 之外是不可见的)。

    • B1) 如果您想连接Windows(操作系统),请进入“网络和共享中心”->“更改适配器设置”,在这台Windows PC上查找与您的LAN网卡对应的网络接口,该网卡也是通过以太网电缆连接到第一台 PC。现在,选择该接口,右键单击属性。您将看到一个列表。这里取消选择“Internet Protocol Version 6”,然后双击“Internet Protocol Version 4”。现在输入地址 192.168.2.101 - 这将是该 Windows PC 在该接口(在该 [LAN/以太网] 连接上)上的地址。按下 Tab 键以便自动填写网络掩码 (255.255.255.0)。 (“网络配置文件”可以设置为“公开”。)

    • B2) 可能需要将网关地址设置为第一台 Linux PC,因此您需要输入网关地址 192.168.2.100。

    • C) 现在,您必须输入您的第一台 Linux PC 正在使用的 DNS 地址。例如,我的调制解调器使用 DNS 地址 192.168.1.1(我可以使用命令“nmcli device show | grep IP4.DNS”找到该地址,其中 interfacename 是连接到互联网的 Linux 接口的名称)。 (如果您使用 Windows 连接到互联网,请在终端/命令提示符中运行“ipconfig”,查找 DNS 地址)。就是这样。 DNS 信息对于获得互联网连接至关重要。

简而言之:

我的调制解调器地址:192.168.1.100,DNS 192.168.1.1。

LAN 上的 Linux PC 地址:192.168.2.100,通过 iptables 重定向流量启用数据包转发,如上所述,防火墙区域设置为“受信任”。

Windows PC 1 地址:192.168.2.101,DNS 设置为 192.168.1.1,网络配置文件设置为公共。 (默认网关设置为Linux PC:192.168.2.100)。

Windows PC 2 地址:192.168.2.102,DNS 设置为 192.168.1.1,网络配置文件设置为公共。 (默认网关设置为Linux PC:192.168.2.100)。

(所有计算机通过简单的以太网交换机与普通以太网电缆(也称为“跳线”或“跳线”)连接在一起,而不是交叉,因为“现代”网卡自己进行交叉,因此您可以使用交叉电缆或不要交叉电缆,甚至将它们混合在一起连接。)

还有一个指南:https://medium.com/@TarunChinmai/sharing-internet-connection-from-a-linux-machine-over-ethernet-a5cbbd775a4f,它使用 Google 的 DNS 地址。一探究竟。

相关内容