假设同一个房间里有两台彼此靠近的 Linux 笔记本电脑 A 和 B。两者都可以连接到家庭 WiFi LAN,然后连接到互联网。
A or B <-> home LAN router <-> ISP <-> the Internet
电脑A可以通过电脑B间接上网,而电脑B保持连接家庭WiFi,从而可以上网吗?实现这一目标的步骤和命令是什么? (抱歉,我对 Linux 网络知之甚少,如果我能在这里获得一些指导,我会阅读更多相关内容。)
A <-> B <-> home LAN router <-> ISP <-> the Internet
A 可以连接到家庭 WiFi 的事实是否无关紧要,如果我们坚持A通过B连接互联网?
是在B和A之间创建一个LAN,B作为该LAN的路由器,而B保持与家庭LAN的连接吗?
计算机 B(或 A)是否必须有两个网络接口?
B 和 A 之间的新 LAN 是如何创建的?
从物理上来说,是通过以太网电缆直接连接它们的以太网端口吗?新的 LAN 可以是无线的吗?
Linux 方面,创建 LAN 的步骤和命令是什么?
如何让 B 中继往返于 A 的互联网流量?
答案1
TL;DR:使用 Linux 用户桌面环境的内置连接共享工具。有不同的桌面环境(Gnome,KDE,...),因此指令略有不同,但想法和底层架构是相同的。
先决条件:您需要确保dnsmasq
安装了适用于您的发行版的软件包。如您所知,不同的发行版是不同的,因此我无法告诉您发行版的具体步骤,因为您没有提及。对于像您这样有经验的用户来说,这应该相当容易!
通过有线连接共享互联网
单击网络图标;转到“编辑连接...”或类似的(如果左键单击时没有出现此类字段,请尝试右键单击)。
在连接概述中,找到“添加”或“+”按钮,然后添加新的以太网连接。给它一个容易识别的名称,例如“共享互联网”。
转到“IPv6 设置”选项卡。作为“方法”,选择“共享到其他计算机”或类似的。
转到“IPv4 设置”选项卡并执行相同操作。
完毕。通过电缆插入另一台计算机。
通过无线连接共享互联网
大多数 wifi 卡不支持同时作为接入点和客户端,因此要实现此功能,您需要一个单独的网络接口,专门用于与其他计算机共享互联网。另请注意,最好不要使用相同的 Wifi 通道,否则您的计算机将“堵塞”其自己到路由器的上行链路。
单击网络图标,然后单击“创建新的无线网络...”或类似按钮。系统会询问您要如何称呼此网络(发明一个名称)、加密方法(WPA2 即可)和密码(使其长度为 8 个字符或更长)。
一分钟后,您将能够使用相同的密码对另一台计算机进行身份验证。
故事很长
这些工具的作用:
- 设置网络接口(在 wifi 情况下要复杂得多,但最终,它只是在 WLAN 中准备安全层并使 wifi 卡发出信标,以便您的其他计算机可以连接到它)
- 将专用网络中的地址分配给该网络接口
- 启动一个守护进程,为连接的计算机动态分配网络地址(使用 DHCP)(这是
dnsmasq
使用的地方) - 设置 nftables IP 数据包工具来获取来自另一台计算机的 IP 数据包,重写其标头,使它们看起来好像来自这台计算机(即 NAT,网络地址转换),反之亦然以进行回复。
这是不是这种网络运作的唯一方式。事实上,如果您想要仅 IPv6 访问,则整个“地址分配”和“网络地址转换”都是多余的,您的计算机可以简单地委托一个前缀(您的 ISP 为您的路由器提供整个 IPv6 地址子网。例如,我有一个完整的 2⁵⁶ 地址,我的 ISP 为我的路由器提供了这些地址,并且该路由器可以自由地将其子范围分配给其内部的计算机,然后将其委托给其他计算机。是容易多了。然而,很少有人想要纯 IPv6 连接。由于全球 IPv4 地址价格昂贵,您的整个网络只能从 ISP 获得一个地址,并且您需要统一该地址后的所有 IPv4 设备。因此,NAT 通常是唯一可以在不同连接上可靠工作的东西,因此它是这些连接共享向导提供的唯一东西。