我尝试在我的 Raspberry Pi(运行 Linux)上进行以下工作:我连接了一个 3G 适配器,它具有静态 IP 地址并允许传入流量,它显示为接口 eth1。我还有一个连接到需要配置的硬件设备的 WiFi 适配器。硬件设备将设置一个接入点,用于配置,就像路由器等使用的接口一样。
如何通过互联网从我的电脑访问硬件设备?
我的电脑 --(Internet)--> 3G Dongle --(eth1)--> Raspberry Pi --(wlan0)--> 硬件设备 (AP)
我尝试使用bridge-utils,但据说它无法桥接到wlan0。
答案1
您可能不需要为此进行桥接。有多种方法可以做到这一点,但最简单的方法之一是iptables
'-j MASQUERADE
目标。你需要:
启用 IP 转发(例如通过运行in 中
sysctl -p
的行)net.ipv4.ip_forward=1
/etc/sysctl.conf
为转发到 eth1 接口的数据包启用伪装:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
这将伪装从您的 WLAN 到互联网的出站连接。
- 如评论中所述,要将入站端口 80 和端口 443(http 和 https)连接从 Internet 转发到 IP 地址 10.0.1.184 上的 Web 服务器,您需要在 PREROUTING 表中添加 DNAT 规则:
iptables -t nat -A PREROUTING -p tcp -i eth1 -m multiport \
--dports 80,443 -j DNAT --to 10.0.1.184
(这可以在一行上。我已将其与\
此处分开,以避免此站点上出现水平滚动条)
如果您的防火墙规则(或默认拒绝策略)会阻止数据包转发,则您的 FORWARD 表中可能还需要一条 ACCEPT 规则。当然,这里并不严格需要阻止访问您的 WLAN 的防火墙规则,因为 10.0.0.0/8 是一个专用网络,不会在互联网上路由。
iptables -A FORWARD -p tcp -i eth1 -o wlan0 -d 10.0.1.184 -m multiport
--dports 80,443 -j ACCEPT