我使用 Ubuntu 14。我有两个接口(eth0 和 usb0)和两个手动设置的连接。我想使用网络管理器。Eth0 是 WAN。如何创建与其他计算机的共享连接?如果我创建新连接(第三个)并使用 eth0 作为接口,则它不起作用。如果我打开现有连接(eth0)并将方法从更改为,Manual
则Shared to other computers
我的所有设置都会消失。
答案1
通过网络管理器使用 GUI 进行操作
必须安装 dnsmasq-base:
sudo apt-get install dnsmasq-base
删除 dnsmasq,因为它与 NetworkManager 冲突:
sudo apt-get remove dnsmasq
Ubuntu 8.10 及更高版本附带的 NetworkManager 0.7 版本包含重新设计的用于管理网络连接的用户界面。
新功能和 UI 中有一个选项,用于将连接设置为“与其他计算机共享”。这基本上是一种非常简单的 NAT(网络地址转换)或 Internet 连接共享,内置于 NetworkManager 中。
为了实现这一点,您必须遵循三个步骤:
在您的计算机上安装 dnsmasq。(在 Ubuntu 上,您需要安装该dnsmasq-base
软件包。(apt-get install dnsmasq-base
这是最简单的方法)
确保您的 WAN 连接(即 Internet 连接)已全部配置(例如使用 DHCP 或静态地址)并且正常工作。基本上,确保您可以打开网页。
对于您的 LAN 接口(可能是第二个网卡或无线网卡),在 IPv4 设置选项卡中选择“共享给其他计算机”。
如果一切正常,NetworkManager 应该已经在您的 LAN 接口上自动配置了子网和 DHCP 服务器,并准备好共享您的 Internet 连接。
通过终端执行此操作
在 Linux 上,使用几行 iptables 和 ip_forward 命令即可轻松实现伪装(Windows 语言中的互联网连接共享)。首先,您必须刷新并删除现有的防火墙规则。因此,请在终端中输入以下内容来刷新规则:
iptables -F
iptables -t nat -F
iptables -t mangle -F
现在删除这些链:
iptables -X
iptables -t nat -X
iptables -t mangle -X
现在是时候保存 iptables 规则了,因此输入:
service iptables save
service iptables restart
现在所有规则和链都已清除!检查 /etc/sysconfig/iptables,其中所有默认规则均设置为接受。现在打开 /etc/rc.d/rc.local 并插入以下行:
echo "1" > /proc/sys/net/ipv4/ip_forward
然后保存并关闭文件。现在假设您的互联网接口是 eth0,输入:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
service iptables save
service iptables restart
注意:检查 iptables 是否设置为在启动时启动。或者检查 iptables 服务的状态:
chkconfig –list iptables
如果级别 5 已打开,那么就可以了,否则请在级别 5 或级别 2345 启动服务。
引用:
https://jeremy.visser.name/2009/03/simple-internet-connection-sharing-with-networkmanager/
https://www.howtoforge.com/internet-connection-sharing-masquerading-on-linux
答案2
由于这个问题出现在谷歌搜索的第一行,所以我决定在这里写。
截至 2023 年,在 Ubuntu22.04 下,与其他客户端设备共享网络连接确实可以开箱即用,但有一件事除外:
sudo ufw disable
如果您不禁用防火墙,您的设备将获得本地 IP,并且您可以在主机 PC 和客户端之间进行 SSH,但客户端将无法访问公共互联网。因此,如果我们禁用防火墙,我在两台不同的 PC 上验证了,这种方法自 2023 年起有效。