从 3G 适配器 (eth1) 连接到 wlan0

从 3G 适配器 (eth1) 连接到 wlan0

我尝试在我的 Raspberry Pi(运行 Linux)上进行以下工作:我连接了一个 3G 适配器,它具有静态 IP 地址并允许传入流量,它显示为接口 eth1。我还有一个连接到需要配置的硬件设备的 WiFi 适配器。硬件设备将设置一个接入点,用于配置,就像路由器等使用的接口一样。

如何通过互联网从我的电脑访问硬件设备?

我的电脑 --(Internet)--> 3G Dongle --(eth1)--> Raspberry Pi --(wlan0)--> 硬件设备 (AP)

我尝试使用bridge-utils,但据说它无法桥接到wlan0。

答案1

您可能不需要为此进行桥接。有多种方法可以做到这一点,但最简单的方法之一是iptables'-j MASQUERADE目标。你需要:

  1. 启用 IP 转发(例如通过运行in 中sysctl -p的行)net.ipv4.ip_forward=1/etc/sysctl.conf

  2. 为转发到 eth1 接口的数据包启用伪装:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

这将伪装从您的 WLAN 到互联网的出站连接。

  1. 如评论中所述,要将入站端口 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

相关内容