本文说明如何轻松设置NetworkManager提供的连接共享模式,此外,它还说明了如何为高级用户配置一些更高级的功能。NetworkManager是Fedora和许多其他发行版上使用的网络配置守护程序,它提供了在Linux机器上配置网络接口和其他网络相关方面的一致方法。除了许多其他功能之外,它还提供了Internet连接共享功能,该功能在不同情况下非常有用。例如,假设您在没有Wi-Fi的地方,并且想与朋友共享笔记本电脑的移动数据连接,或者也许您有一台笔记本电脑的Wi-Fi损坏,并希望通过以太网电缆将其连接到另一台笔记本电脑,这样,第一台笔记本电脑就可以访问Internet,甚至可以下载新的Wi-Fi驱动程序。在这种情况下,与其他设备共享Internet连接很有用,在智能手机上,此功能称为“网络共享”,可通过Wi-Fi,蓝牙或USB电缆共享蜂窝连接。
连接共享如何工作 连接共享背后的基本思想是,存在一个具有Internet访问权限的上游接口和一个需要连通性的下游接口,这些接口可以具有不同的类型,例如Wi-Fi和以太网。 如果上游接口连接到LAN,则可以将我们的计算机配置为桥接器,网桥是以太网交换机的软件版本。这样,您可以将LAN“扩展”到下游网络,但是,该解决方案并不总是能在所有界面类型上都能很好地发挥作用,此外,它仅在上游网络使用专用地址时有效。 一种更通用的方法是将私有IPv4子网分配给下游网络,并打开两个接口之间的路由。在这种情况下,也需要NAT(网络地址转换)。NAT的目的是修改来自下游网络的数据包的来源,以使它们看起来好像来自您的计算机。 手动配置下游网络中的所有设备将很不方便,因此,您需要一个DHCP服务器来自动分配地址并配置主机以路由所有流量通过您的计算机,此外,如果通过Wi-Fi进行共享,则必须将无线网络适配器配置为访问点。 有许多教程以不同的难度解释了如何实现此目标,NetworkManager掩盖了所有这些复杂性,并提供了一种共享模式,使该配置变得快速、便捷。
配置连接共享 NetworkManager的配置范例基于连接(或连接配置文件)的概念,连接是要在网络接口上应用的一组设置。 本文介绍如何使用nmcli、NetworkManager命令行实用程序和GTK连接编辑器创建和修改此类连接。可以使用其他工具,例如nmtui(基于文本的用户界面)、GNOME控制中心或KDE网络小程序。 共享Internet访问的合理先决条件是首先使其可用,这意味着已经有一个活动的NetworkManager连接,如果您正在阅读本文,则可能已经可以连接Internet。 本文的其余部分假定您已经配置了Wi-Fi连接配置文件,并且必须通过以太网接口enp1s0共享连接。 要启用共享,请为接口enp1s0创建一个连接,并将ipv4.method属性设置为shared,而不是通常的auto: $ nmcli connection add type ethernet ifname enp1s0 ipv4.method shared con-name local 参考:Linux上使用ifconfig、ip、netstat、nmcli命令查找可用的网络接口。 共享的IPv4方法可以完成多项任务: 1]、启用接口的IP转发。 2]、添加防火墙规则并启用伪装。 3]、将dnsmasq作为DHCP和DNS服务器启动。 除非另行配置,否则NetworkManager连接配置文件将自动激活,您添加的新连接在设备状态下应该已经处于活动状态: $ nmcli device
如果不是这种情况,请使用nmcli connection up local手动激活配置文件。
更改共享的IP范围 现在查看NetworkManager如何配置下游接口enp1s0: $ ip -o addr show enp1s0 8: enp1s0 inet 10.42.0.1/24 brd 10.42.0.255 ... 10.42.0.1/24是NetworkManager为共享模式下的设备设置的默认地址,此范围内的地址也通过DHCP分配给其他计算机,如果范围与您环境中的其他专用网络冲突,请通过修改ipv4.addresses属性来更改范围: $ nmcli connection modify local ipv4.addresses 192.168.42.1/24 记住在进行任何更改以应用新值后再次激活连接配置文件: $ nmcli connection up local $ ip -o addr show enp1s0 8: enp1s0 inet 192.168.42.1/24 brd 192.168.42.255 ... 如果您更喜欢使用图形工具来编辑连接,请安装nm-connection-editor软件包,启动程序并打开连接进行编辑,然后在“IPv4设置”选项卡中选择“共享到其他计算机”方法,最后,如果要使用特定的IP子网,请单击“添加”并插入地址和网络掩码。
添加自定义dnsmasq选项 如果要进一步扩展dnsmasq配置,可以在/etc/NetworkManager/dnsmasq-shared.d/中添加新的配置摘要,例如以下配置: dhcp-option=option:ntp-server,192.168.42.1 dhcp-host=52:54:00:a4:65:c8,192.168.42.170 告诉dnsmasq通过DHCP通告NTP服务器,另外,它为具有特定MAC的客户端分配静态IP。 dnsmasq手册页中还有许多其他有用的选项,但是,请记住,其中一些可能会与其余配置冲突,因此,仅当您知道自己在做什么时,才使用自定义选项。
其他有用的技巧 如果要通过Wi-Fi设置共享,则可以在Access Point模式下创建连接,手动配置安全性,然后启用连接共享,实际上,有一种更快的方法,即热点模式: $ nmcli device wifi hotspot [ifname $dev] [password $pw] 这完成了创建具有连接共享功能的访问点所需的一切,接口和密码选项是可选的,如果未指定,则nmcli选择第一个可用的Wi-Fi设备并生成随机密码,使用“nmcli device wifi show-password”命令显示活动热点的信息,输出包括密码和可通过电话扫描的基于文本的QR码:
关于IPv6的呢? 到目前为止,本文讨论了共享IPv4连接。NetworkManager还支持通过DHCP前缀委托共享IPv6连接,使用前缀委派,计算机可以从DHCP服务器请求其他IPv6前缀,这些公共可路由地址通过路由器广告分配给本地网络,再次,NetworkManager通过共享IPv6模式使所有这些操作变得更加容易: $ nmcli connection modify local ipv6.method shared 请注意,IPv6共享需要Internet服务提供商的支持,后者应通过DHCP发出前缀委托,如果ISP不提供委托,则IPv6共享将无法正常工作,在这种情况下,NM将在日志中报告没有可用的前缀: policy: ipv6-pd: none of 0 prefixes of wlp1s0 can be shared on enp1s0 另外,请注意,上述Wi-Fi hotspot命令仅启用IPv4共享,如果您还想使用IPv6共享,则必须手动编辑连接。
结论 经过以上设置,下次您需要共享Internet连接时,NetworkManager将使您变得很容易。
相关主题 |