通过以太网线“管道”Wi-Fi 信号

通过以太网线“管道”Wi-Fi 信号

目前,我工作的大楼内的以太网端口已关闭,但 Wi-Fi 可用。我有一台支持 Wi-Fi 的笔记本电脑 (乌班图14.04LTS (Trusty Tahr)) 和一个不支持 Wi-Fi 的工作站 (德班8(Jessie)) 仅带有以太网插头。

是否可以通过以太网电缆连接两者并能够在工作站上获得网络连接?

答案1

是的,你可以做到这一点,而且并不那么难。我有一台带有无线卡和以太网端口的笔记本电脑。我通过“交叉”以太网线将运行 Arch Linux 的 RapberryPi 插入其中。这是您可能需要的一件特殊的事情 - 并非所有以太网卡都可以进行机器到机器的直接连接。

另一个棘手的部分是 IP 寻址。最好能说明这一点。这是我的小设置脚本。同样,enp9s0 是笔记本电脑的以太网端口,wlp12s0 是笔记本电脑的无线设备。

#!/bin/bash
/usr/bin/ip link set dev enp9s0 up
/usr/bin/ip addr add 172.16.1.1/24 dev enp9s0
sleep 10

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
iptables -A FORWARD -o enp9s0 -i wlp12s0 -s 172.16.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

dhcpd -cf /etc/dhcpd.enp9s0.conf enp9s0

该脚本为以太网卡设置静态 IP 地址 172.16.1.1,然后通过加载内核模块来设置 NAT。它打开 IP 路由(在笔记本电脑上),然后执行一些iptables半魔法,将数据包从无线卡路由到以太网,反之亦然。

dhcpd在以太网端口上运行以给出 IP 地址,因为这是 Raspberry Pi 想要的,但您可以在工作站上使用静态地址,以及静态路由、DNS 服务器和 NTP 服务器。

该文件/etc/dhcpd.enp9s0.conf看起来像这样,以防万一您沿着这条路线走:

option domain-name "subnet";
option domain-name-servers 10.0.0.3;
option routers 172.16.1.1;
option ntp-servers 10.0.0.3;
default-lease-time 14440;
ddns-update-style none;
deny bootp;
shared-network intranet {
        subnet 172.16.1.0 netmask 255.255.255.0 {
                option subnet-mask 255.255.255.0;
                pool { range 172.16.1.50 172.16.1.200; }
        }
}

IP 地址的选择非常关键。我使用 172.16.1.0/24 作为从笔记本电脑引出的以太网电缆。笔记本电脑上的无线卡最终为 192.161.1.0/24 。您需要查看笔记本电脑无线网络的 IP 地址,并为以太网卡选择其他子网。此外,您需要选择“bogon”或“不可路由”网络之一。在我的示例中,172.16.1.0/24 来自官方不可路由的 IP 地址范围,192.168.1.0/24 也是如此,dhcpd.enp9s0.conf为 DNS 服务器和 NTP 服务器提供的 10.0.0.3 地址也是如此。您必须动动脑筋找出适合您的设置。

答案2

是否可以?绝对地。您所需要做的就是配置 IP 转发、路由或其他一些(简单)方法,将数据包从笔记本电脑上的以太网端口移动到笔记本电脑上的 WiFi,反之亦然。这是不是一个好主意?可能不会——您的网络管理员可能会对您感到有点不满。

答案3

根据维基百科,如果以太网端口之一是千兆位,普通电缆就可以工作,不需要交叉,我两侧都有千兆位,普通电缆就可以工作。

这个问题是在 2016 年提出的,所以我假设网络管理器在两台 Linux 机器上运行,您可以使用它的 GUI 来设置 ip-s,如果没有,您可能进行了自定义设置并且知道如何从命令提示符设置 ip,所以我省略了这些细节。

连接电缆后,您将在 GUI 中获得与笔记本电脑和工作站上的以太网相关的网络接口名称。

假设您不关心定期将工作站(和/或笔记本电脑通过以太网)连接到其他网络设备,您可以在两个以太网接口上设置静态 IP。

设置与 wi-fi 不同的静态 IP 子网,例如,如果 wi-fi 为 192.168.1.0/16,则设置为 192.168.2.1 和 192.168.2.2,子网掩码为 255.255.255.0,因为只有 IP 的最后一个“数字”不同, 工作站上的 DNS 应设置为与笔记本电脑上的 Wi-Fi 相同的 DNS IP,以便能够在工作站上使用 DNS(按名称打开站点,而不仅仅是 IP)。

您需要在笔记本电脑上启用IP转发:

sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

由于笔记本电脑上的网络管理员很可能认为以太网的质量比 Wi-Fi 更好,因此默认情况下它会尝试将所有内容发送到它,并且在设置以太网后您将失去互联网连接。要重新使用 wi-fi,在笔记本电脑上,您需要在与以太网连接相关的文件的 [ipv4] 部分(您在以太网网络管理器 GUI 中看到的名称)位置/etc/NetworkManager/添加行

never-default=true

(如果您的 GUI 有类似“仅用于此连接上的资源”的以太网复选框 - 在我的 GUI 上,它位于连接属性的 ip4 部分,您可以使用它)。

最后,假设您的 IP 表规则默认保留接受所有内容,您来自工作站的数据包将发送到互联网,但不会找到返回路径,仅返回到笔记本电脑,直到您通过一个命令在笔记本电脑上设置 NAT 规则(其中 eth0 应该是名称)您的 wi-fi 连接的名称,您可以通过 找到名称sudo ifconfig):

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

如果此后不起作用,请尝试重新启动网络管理器:

sudo service network-manager restart

你应该已经准备好了。

相关内容