eth0에 연결된 장치가 wlan0 및 wlan1의 장치에 액세스하도록 허용하려고 합니다. 아래 그림과 같이. Wi-Fi 장치의 주파수가 서로 다르기 때문에 연결할 수 없습니다(지원되지 않음).
(192.170.1.32) WiFi Device 1 freq A
/
/
(wlan0 = 192.170.1.250/32)
PC (192.168.2.33) ------- (eth0 = 192.168.2.1) RPi -----
(wlan1 = 192.170.1.251/32)
\
\
(192.170.1.69) WiFi Device 2 freq B
올바른 네트워크로 연결되도록 IPTables를 설정해 보았습니다. (네트워크에 있는 모든 장치의 IP 주소가 무엇인지 미리 알고 있습니다.)
예를 들어, th0 인터페이스가 모든 UDP 패킷을 주파수 A(wlan0)의 192.170.1.69로 보내고 UDP 패킷을 주파수 B(wlan1)의 192.170.1.9로 보내도록 하려면
# Iptables
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -A PREROUTING -s 192.168.1.1 -d 192.170.1.69 -p udp -j MARK --set-mark 11
iptables -t nat -A PREROUTING -s 192.168.1.1 -d 192.170.1.79 -p udp -j MARK --set-mark 12
# IP Routes
ip route add 192.170.1.0/24 dev wlan0 table 11
ip route add 192.170.1.0/24 dev wlan1 table 12
그러나 이것은 작동하지 않습니다. 올바른 장치에 메시지를 보내도록 할 수 없습니다. 너무 간단하기 때문인 것 같습니다.
답변1
그 대답은 결국 이라는 앱이었습니다 parprouted
. 이는 장치가 물리적으로 분리되어 있어도 네트워크를 단일 논리 네트워크로 볼 수 있도록 하는 ARP 프록시입니다. 프록시 ARP는 레이어 3에서 작동합니다. 즉, 레이어 2(링크 레이어)를 처리할 필요가 없습니다. ARP 프록시 작동 방식에 대한 좋은 기사는 여기에 있습니다.http://www.tcpipguide.com/free/t_ProxyARP-2.htm
이 경우 브리지 방법이 작동하지 않습니다. 주로 WiFi는 이더넷과 동일한 프레임 모드를 사용하지 않는 것 같고 쉽게 브리지되지 않기 때문입니다.
ip route
나는 이것을 수행하는 방법을 알아내는 방법을 연구하는 데 충분한 시간을 소비하지 않았습니다 . 어떻게 구성해야 할지 잘 모르겠지만, 대상 IP 주소를 기반으로 필터링하려면 IP 테이블을 사용해야 할 수도 있을 것 같습니다.
내 네트워크 구성은 다음과 같습니다
(192.170.1.32) WiFi Device 1 freq A
/
/
(wlan0 = 192.170.1.250/24)
PC (192.170.1.251/24) ------- (eth0 = 192.170.1.251/24) RPi -----
(wlan1 = 192.170.1.251/24)
\
\
(192.170.1.69) WiFi Device 2 freq B
그리고 parprouted
사용을 시작하세요parprouted eth0 wlan0 wlan1