概述

概述

我想从笔记本电脑访问示波器。示波器只有 LAN 连接,而我的笔记本电脑已连接到我的 WiFi。我无法将示波器连接到我的 WiFi 路由器,因为我希望示波器是移动的。笔记本电脑和示波器之间可以进行直接 LAN 连接,但也不理想,因为这会降低我的笔记本电脑的移动性。

示波器是 Rigol DS1054Z,带有浏览器界面和 LXI 界面(我可能会使用python-vxi11)。以下设置有效(当我在笔记本电脑上运行的浏览器中输入示波器的 IP 时,我可以访问示波器的内部服务器),但示波器不是移动的,而是与路由器绑定:

Router---(Wifi)---Laptop
     |---(LAN)----scope

这是当我在浏览器中输入示波器的 IP 时得到的结果: 在此输入图像描述

为了使示波器可移动,我想将其连接到树莓派并为示波器提供无线接口。网络看起来像这样:

Router - (Wifi)---Laptop
              |--- [wlan0 RPi eth0] --- scope

总结一下我的总体目标:

  • 使用普通 LAN 电缆将示波器连接到树莓派
  • 配置 pi 作为 eth0 和 wlan0 接口之间的桥梁
  • 让我的 wifi 路由器 (DHCP) 为范围分配一个 IP 地址(这可能是可选的
  • 从我的笔记本电脑连接到示波器

我尝试过的:我在pi上安装了bridge-utils,并添加了/etc/network/interfaces.d/br0,其中包含以下内容:

auto br0
iface br0 inet dhcp
    pre-up ifup wlan0
    bridge_ports eth0 wlan0
    bridge_fd 5
    bridge_stp no

据我了解(我对网络的理解只是非常非常基本),这应该 glob wlan0 和 eth0 并神奇地使范围出现在网络中。

重新启动 pi 后,我可以看到 br0 确实已启动:

$ ifconfig
br0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b8:27:eb:86:3c:ee  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b8:27:eb:86:3c:ee  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2  bytes 78 (78.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2  bytes 78 (78.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.178.46  netmask 255.255.255.0  broadcast 192.168.178.255
        ether b8:27:eb:d3:69:bb  txqueuelen 1000  (Ethernet)
        RX packets 70  bytes 9163 (8.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 57  bytes 9372 (9.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我看不到范围出现在我的路由器的设备列表中。我想这还不够。首先,桥梁方法是否合适?

答案1

编辑我的答案以使其更有用。

我认为桥接器不起作用(您的设备将不知道如何使用桥接器接口)。

然而,一些谷歌搜索导致了以下结果(它们似乎都建议相同的设置):

1:确保恢复更改。

2:安装dnsmask

sudo apt-get install dnsmasq

3:通过编辑 wpa_supplicant.conf 确保 pi 上的 wifi 自动连接:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

替换 ssid 和密码以匹配您的网络:

network={
    ssid="networkname"
    psk="networkpassword"
}

4:配置“桥”

sudo nano /etc/dhcpcd.conf

确保您使用正确的接口名称,您可以通过调用 来找到您的接口名称ifconfig。假设您的路由器网络不是 192.168.220.0。

笔记:消息来源提到以太网0,同时提供一个示例无线局域网0

在此文件中,我们需要添加以下行,确保将 eth0 替换为正确的以太网接口。

interface wlan0
static ip_address=192.168.220.1/24
static routers=192.168.220.0

5:重启

sudo service dhcpcd restart

6:确保有线连接是通过无线适配器路由的

sudo nano --backup /etc/dnsmasq.conf

确保--backup我们创建原始文件的备份(dnsmasq.conf~)

interface=eth0       # Use interface eth0  
listen-address=192.168.220.1   # Specify the address to listen on  
bind-interfaces      # Bind to the interface
server=8.8.8.8       # Use Google DNS  
domain-needed        # Don't forward short names  
bogus-priv           # Drop the non-routed address spaces.  
dhcp-range=192.168.220.50,192.168.220.150,12h # IP range and lease time

7:确保流量转发:

sudo nano /etc/sysctl.conf

取消注释该行

#net.ipv4.ip_forward=1

为了得到

net.ipv4.ip_forward=1

无需重新启动即可启用更改:

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

8:添加防火墙规则将eth0流量转发到wlan0

sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE  
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT  

使更改永久化:

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

9:(重新)启动后加载规则:

sudo nano /etc/rc.local

插入之前exit 0

iptables-restore < /etc/iptables.ipv4.nat

10:启动dnsmasq:

sudo service dnsmasq start

11:重启

sudo reboot

这些步骤复制自https://pimylifeup.com/raspberry-pi-wifi-bridge/amp/

答案2

您需要 NAT 而不是桥接。我认为桥接 Wifi 站接口不起作用(正如凯里所说)。

1.

Router - (Wifi)---Laptop
             |--- [wlan0 RPi eth0] --- scope

像这样设置连接后,您需要在 Pi 和范围之间设置 NAT 网络。

要设置 NAT 网络,请允许我介绍一个脚本Linux路由器。它的设计目的是让人们更容易处理事情(dnsmasqiptables转发),因此我们不必手动完成。 (Agg的答案已经提供了手动执行的方法)

在 Pi 上运行一个命令来设置 NAT 网络:

# lnxrouter -i eth0

192.168.18.0/24该脚本将完成在 Pi 和范围之间设置 NAT 网络所需的所有操作。 Pi的eth0IP是192.168.18.1

192.168.18.x在作用域自动引导后,您可以从该脚本的输出中看到作用域的 IP 。

2.

要从笔记本电脑访问范围,您必须登录 WiFi 路由器并编辑路由表。

192.168.18.0/24通过 Pi 的IP路由网络wlan0(应该192.168.178.x根据您发布的图像)。

(如果你不能或不想登录wifi路由器,设置笔记本电脑的路由表也可以。Linux和Mac允许用户自定义路由表,Windows不确定。)

3.

如果您只需要访问示波器的“Web 界面和 LXI 界面”,您可以在 Pi 上设置反向代理,因此无需编辑路由表。

示波器上应该有一个用于 Web 的端口 80 和另一个用于 LXI 的端口。在 Pi 上设置两个打开的端口,以将流量反向代理到作用域上的端口。因此,您的笔记本电脑可以通过输入 Pi 的wlan0IP 和端口来访问范围。

如果范围支持手动设置 IP(或 IPv6 链路本地fe80::地址),则无需在 Pi 上设置 DHCP 或转发。

反向代理就像:

laptop-->--(Port A)Pi-->--(web)scope
laptop-->--(Port B)Pi-->--(LXI)scope

答案3

这个解决方案是由一位朋友建议的,并且没有太多麻烦。

概述

在此输入图像描述

树莓派设置

  • 我开始重新下载 Raspbian Stretch lite 2018-11-13
  • 启用ssh(ssh在启动分区放置一个名为的文件)
  • 设置wifi(wpa_supplicant.conf在启动分区中放置适当的wifi)
  • 为 eth0 设置静态 IP /etc/dhcpcd.conf

    interface eth0
    static ip_address=192.168.220.1/24
    static routers=192.168.178.1
    

    并重新启动dhcpcd

    sudo service dhcpcd restart
    
  • 在 中/etc/sysctl.conf,通过取消注释该行来启用 IPv4 转发

    #net.ipv4.ip_forward=1
    

    要得到

    net.ipv4.ip_forward=1
    

    申请:

    sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
    
  • 在这一步之后我也重新启动了,我不确定这是否是绝对必要的。

示波器设置

作用域在新子网中获得静态 IP。这可以使用示波器的实用程序菜单进行配置,如手册中所述。

在此输入图像描述

路由器设置

如何完成这些步骤取决于您的路由器:

  • 路由器的 DHCP 配置为始终为 RPi 提供wlan0相同的地址。在这种情况下192.168.178.46。或者将静态 IP 分配给 RPi 的wlan0.
  • 通过(RPi's ) 添加到192.168.220.0、子网掩码 的路由。255.255.255.0192.168.178.46wlan0

笔记本电脑设置

与网络无关,只要在wifi路由器的wifi中即可。

我用了https://pypi.org/project/ds1054z/采取以下

截屏:

在此输入图像描述

答案4

我没有给你完美的答案,但我可以帮助你找到答案......

有些答案暗示你想做的事情是不可能的。这是错的,这是完全有可能的。我以前用过类似底部链接的说明来做到这一点。

简而言之,您需要额外的工具来处理网络协议。
parprouted dhcp-helperavahi-daemon

我目前正在研究这个问题,所以一旦我了解了这 3 个工具的用途,我就会改进这个答案。

编辑:我发现搜索“raspberry pi Wi-Fi Internet share”或类似的结果会更好(完全省略“bridge”一词,因为从技术上讲,您并没有创建通常意义上的桥)。

Edit2:附加链接并将原始链接移至此处下方...

https://raspberrypi.stackexchange.com/questions/106149/wifi-to-ethernet-bridge

https://github.com/arpitjindal97/raspbian-recipes/blob/master/wifi-to-eth-bridge.sh

https://docs.slackware.com/howtos:network_services:wifi_to_eth_bridge_routing

https://raspberrypi.stackexchange.com/questions/88954/workaround-for-a-wifi-bridge-on-a-raspberry-pi-with-proxy-arp/88955#88955

相关内容