좋은 아침입니다, 제 RPi 2는 두 개의 WiFi 동글(각각 고유한 IP 주소 범위를 가짐)이 있는 작동하는 액세스 포인트입니다. RPi는 LAN 케이블을 통해 모뎀에도 연결됩니다.
액세스 포인트/프록시의 가장 기본적인 서비스를 제공합니다. 두 WiFi 인터페이스 모두에서 들어오는 연결을 취하고 LAN 케이블을 통해 모뎀으로 데이터를 외부 인터넷으로 보냅니다.
지금까지는 훌륭했습니다. 이제 RPi를 QOS 관리자로 만들고 싶습니다. RPi는 데이터를 보내고 받을 뿐만 아니라 일부 특정 유형의 연결(예: 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