早上好,先生们,我的 RPi 2 是一个工作接入点,带有两个 WiFi 加密狗(每个都有自己的 IP 地址范围);RPi 也通过 LAN 电缆连接到我的调制解调器。
它提供最基本的接入点/代理服务:它接受两个 WiFi 接口上的传入连接,并通过 LAN 电缆将数据发送到我的调制解调器,再发送到外部互联网。
到目前为止一切顺利:现在我想让我的 RPi 成为一个 QOS 管理器:它不仅可以发送和接收数据,而且还会优先考虑某些特定类型的连接(例如,通过 SMTP 进行流式传输)。
我的一个程序可以做到这一点,但我只在我的笔记本电脑上测试过它,现在我将把我的程序放在我的 RPi 中。我的程序接受固定端口 (8000) 上的传入连接:在我的笔记本电脑上,我在浏览器上安装了一个插件,它将流量重定向到端口 8000,它似乎运行正常。
现在我要把它放在 RPi 上,但我不知道如何将两个 WiFi 加密狗的流量重定向到端口 8000 上的程序。
我缺乏有关路由的知识,但我认为这可以通过两个iptables
规则来实现,例如:
iptables -t nat -A PREROUTING -i wlan0 -p tcp -j REDIRECT --to-port 8000
iptables -t nat -A PREROUTING -i wlan1 -p tcp -j REDIRECT --to-port 8000
然而,这两条规则似乎并不适用:在我的 RPi 上使用这两条iptables
规则运行我的程序时没有显示任何输出,因此连接并没有真正重定向到我的程序实际上正在监听的端口 8000。
我看到了一些重定向也需要标志的例子--dport
,但我不知道这个端口是什么。
这些是我目前iptables
在 RPi 上的规则:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -j ACCEPT