我想从笔记本电脑访问示波器。示波器只有 LAN 连接,而我的笔记本电脑已连接到我的 WiFi。我无法将示波器连接到我的 WiFi 路由器,因为我希望示波器是移动的。笔记本电脑和示波器之间可以进行直接 LAN 连接,但也不理想,因为这会降低我的笔记本电脑的移动性。
示波器是 Rigol DS1054Z,带有浏览器界面和 LXI 界面(我可能会使用python-vxi11)。以下设置有效(当我在笔记本电脑上运行的浏览器中输入示波器的 IP 时,我可以访问示波器的内部服务器),但示波器不是移动的,而是与路由器绑定:
Router---(Wifi)---Laptop
|---(LAN)----scope
为了使示波器可移动,我想将其连接到树莓派并为示波器提供无线接口。网络看起来像这样:
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
答案2
您需要 NAT 而不是桥接。我认为桥接 Wifi 站接口不起作用(正如凯里所说)。
1.
Router - (Wifi)---Laptop
|--- [wlan0 RPi eth0] --- scope
像这样设置连接后,您需要在 Pi 和范围之间设置 NAT 网络。
要设置 NAT 网络,请允许我介绍一个脚本Linux路由器。它的设计目的是让人们更容易处理事情(dnsmasq
、iptables
转发),因此我们不必手动完成。 (Agg的答案已经提供了手动执行的方法)
在 Pi 上运行一个命令来设置 NAT 网络:
# lnxrouter -i eth0
192.168.18.0/24
该脚本将完成在 Pi 和范围之间设置 NAT 网络所需的所有操作。 Pi的eth0
IP是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 的wlan0
IP 和端口来访问范围。
如果范围支持手动设置 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.0
192.168.178.46
wlan0
笔记本电脑设置
与网络无关,只要在wifi路由器的wifi中即可。
我用了https://pypi.org/project/ds1054z/采取以下
截屏:
答案4
我没有给你完美的答案,但我可以帮助你找到答案......
有些答案暗示你想做的事情是不可能的。这是错的,这是完全有可能的。我以前用过类似底部链接的说明来做到这一点。
简而言之,您需要额外的工具来处理网络协议。
parprouted
dhcp-helper
和avahi-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