![使用 USB 转以太网适配器从运行 Ubuntu Server 22.04 的 Pi 共享互联网](https://linux22.com/image/948987/%E4%BD%BF%E7%94%A8%20USB%20%E8%BD%AC%E4%BB%A5%E5%A4%AA%E7%BD%91%E9%80%82%E9%85%8D%E5%99%A8%E4%BB%8E%E8%BF%90%E8%A1%8C%20Ubuntu%20Server%2022.04%20%E7%9A%84%20Pi%20%E5%85%B1%E4%BA%AB%E4%BA%92%E8%81%94%E7%BD%91.png)
我在 Raspberry Pi 4 上运行 Ubuntu Server 22.04。
ubuntu@ubuntu:~$ uname -a
Linux ubuntu 5.15.0-1014-raspi #16-Ubuntu SMP PREEMPT Thu Aug 25 09:50:55 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
我坐的地方 wifi 信号不强。Pi 通过以太网连接到路由器。我想通过连接到 Pi 的 USB 转以太网适配器将此 Pi 的互联网连接共享到附近的笔记本电脑(运行 Ubuntu Desktop 22.04)。
当我连接适配器(StarTech - USB 3.0 至千兆以太网 NIC 网络适配器)时,这是我在 # sudo dmesg 中得到的结果
[15345.569038] usb 2-1: new SuperSpeed USB device number 3 using xhci_hcd
[15345.595859] usb 2-1: New USB device found, idVendor=0b95, idProduct=1790, bcdDevice= 1.00
[15345.595888] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[15345.595902] usb 2-1: Product: AX88179
[15345.595914] usb 2-1: Manufacturer: ASIX Elec. Corp.
[15345.595925] usb 2-1: SerialNumber: 0000200B80B34
[15345.972329] ax88179_178a 2-1:1.0 eth1: register 'ax88179_178a' at usb-0000:01:00.0-1, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:bb:59:04:b4:00
[15345.979160] usbcore: registered new interface driver ax88179_178a
[15346.018198] ax88179_178a 2-1:1.0 enx00200b80b34: renamed from eth1
适配器未显示在 ifconfig 中。
当我执行# ip a
此操作时,我得到的是:
4: enx00200b80b34: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:bb:59:04:b4:00 brd ff:ff:ff:ff:ff:ff
我有几个问题:
- 为什么 Ubuntu 会将网络接口从 eth1 重命名?我知道我可以将其改回 eth1,但我需要这样做吗?
- 我只想将 Pi 的互联网连接共享给笔记本电脑。我该怎么做?我需要使用 netplan 吗?Ubuntu 中没有适用于 Raspberry Pi 的 Grub。
- 我需要启动网络接口吗?
- 我有必要搞乱
net.ipv4.ip_forward=1
它吗/etc/sysctl.conf
? - 我走在正确的道路上吗?
注意:
为了保护隐私,我更改了上面的 mac 地址。
答案1
我让它工作了。结果发现你运行的 Linux 发行版无关紧要。
首先,我关闭了 Ubuntu Server 22.04 中的“可预测网络接口名称”。其实我并不需要,但我就是想这么做!因为我在 Pi 4 上运行它,所以我必须通过在行net.ifnames=0
首添加以下内容来做到这一点/boot/firmware/cmdline.txt
我的 Ubuntu Pi 使用 Pis 以太网适配器连接到路由器(通过电力线适配器)。我现在将 USB 转以太网适配器连接到 Pi 上的备用 USB 3 端口,并使用普通以太网电缆将其连接到我的笔记本电脑以太网适配器。它不需要使用交叉电缆。
在我的例子中,Pis 板载以太网现在eth0并且适配器eth1。
然后我按照这个archlinux 维基。
为 eth1 分配静态 IPv4 地址:
ubuntu@ubuntu:~$ sudo ip link set up dev eth1
ubuntu@ubuntu:~$ sudo ip addr add 192.168.123.100/24 dev eth1
在 Ubuntu Pi 中启用数据包转发:
ubuntu@ubuntu:~$ sudo sysctl net.ipv4.ip_forward=1
在 Ubuntu Pi 中启用 NAT(网络地址转换)
ubuntu@ubuntu:~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ubuntu@ubuntu:~$ sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ubuntu@ubuntu:~$ sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
通过 eth1 为笔记本电脑(客户端)的以太网接口提供静态 IP 地址和默认路由
• 我能够使用客户端 Linux 发行版的“系统设置”执行这些步骤。
• 我为笔记本电脑的以太网接口指定了一个 IP(192.168.123.15),该 IP 与 Ubuntu Pi 上 eth1 的以太网接口(192.168.123.100)位于同一子网中。
• 然后我告诉笔记本电脑的以太网接口使用 Ubuntu Pi eth1 接口 IP 地址(192.168.123.100)作为其默认网关。
• 我还分配了 DNS 服务器(8.8.8.8 ,Google DNS 为 8.8.4.4)
• 现在 USB 转以太网适配器应该会亮起,您应该能够关闭笔记本电脑上的 Wifi 并继续访问网络/互联网!
• 注意:如果您重新启动 Pi,这一切都将丢失,但您可以运行脚本在启动时配置 iptables 规则。