그 상황

그 상황

그 상황

Raspbian Stretch는 wlan0(모델 RT5370)을 통해 개인 서브넷 10.0.0.0/16에 무선으로 연결됩니다. 추가 수정 없이 Raspbian Stretch는 인터넷에 액세스할 수 있고 DNS가 작동합니다. 추신: 인터넷에 연결되는 라우터에 물리적으로 액세스할 수는 없습니다. 무선만 가능합니다.

다른 RT5370 NIC를 wlan1로 추가하고 Hostapd를 사용하여 무선 액세스 포인트로 설정했습니다.

라우터의 DHCP 서버 주소 범위를 모르기 때문에 wlan0에 고정 주소를 추가하고 싶지 않습니다.

wlan1 192.168.0.1/28(16개의 호스트 주소)에 고정 IPv4 주소를 구성했으며 dnsmasq를 이 네트워크의 DHCP 서버로 설정했습니다.

문제

정말 간단해야합니다.

Raspbian Stretch는 1) 인터넷에 액세스하거나 2) 클라이언트를 연결하는 WAP 역할을 할 수 있습니다. 문제는 두 기능이 동시에 작동하지 않는다는 것입니다.

전파 대신 구리를 통해 인터넷 연결이 설정된다는 가이드를 본 적이 있지만 인터넷 연결 인터페이스가 유선이 아닌 무선이면 왜 차이가 나는지 모르겠습니다. 어쨌든...

내가 시도한 것

새로 재부팅하면 google.com 및 8.8.8.8을 성공적으로 ping할 수 있습니다.

확인 후 wlan0과 wlan1을 모두 볼 수 ifconfig있으며 설정이 제대로 된 것 같습니다.

의 출력은 다음과 같습니다 route.

Kernel IP routing table
Destination Gateway     Genbask         Flags Metric Ref Use Iface
default     10.0.0.36   0.0.0.0         UG    303    0     0 wlan0
default     192.168.0.1 0.0.0.0         UG    304    0     0 wlan1
10.0.0.0    0.0.0.0     255.255.0.0     U     303    0     0 wlan0
192.168.0.0 0.0.0.0     255.255.255.240 U     303    0     0 wlan1

단일 기본 경로가 더 적절해 보이지만 인터넷이 작동하므로 계속 진행하는데 왜 두 개의 기본 게이트웨이가 여기에 있는 것처럼 보이는지 모르겠습니다.

Raspbian Stretch가 인터넷에 액세스할 수 있음을 확인한 후 다음을 시도합니다.

root@computer:/# hostapd /etc/hostapd/hostapd.conf

그리고 이것을 얻으십시오 :

Configuration file: /etc/hostapd/hostapd.conf
nl80211: Could not configure driver mode
nl80211: deinit ifname=wlan1 disabled_11b_rates=0
nl80211: driver initialization failed.
wlan1: interface state UNINITIALIZED->DISABLED
wlan1: AP-DISABLED
hostapd_free_hapd_data: Interface wlan1 wasn't started

이제 흥미롭게도 내가 한 후에는 다음과 같습니다.

root@computer:/# killall wpa_supplicant
root@computer:/# hostapd /etc/hostapd/hostapd.conf &

나는 이것을 얻습니다 :

Configuration file: /etc/hostapd/hostapd.conf
Using interface wlan1 with hwaddress aa:bb:cc:11:22:33 and ssid "myssid"
wlan1: interface state UNINITIALIZED->ENABLED
wlan1: AP-ENABLED

이를 통해 클라이언트 컴퓨터를 wlan1을 통해 myssid에 성공적으로 연결할 수 있지만 이제 google.com 또는 8.8.8.8을 핑할 수 없으며 wlan0이 ifconfig에 표시되지 않는 것을 발견했으며 라우팅 테이블은 이제 다음과 같습니다.

Kernel IP routing table
Destination Gateway     Genbask         Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0     255.255.255.240 U     303    0     0 wlan1

wlan0을 백업하려면 다음을 수행합니다.

root@computer:/# service dhcpcd restart
root@computer:/# sysctl daemon-reload

이제 wlan0 및 wlan1이 ifconfig에 표시되고 Raspbian Stretch는 google.com 및 8.8.8.8을 ping할 수 있지만 wlan1에 연결된 클라이언트는 인터넷에 액세스할 수 없습니다.

이 시점에서 내 라우팅 테이블은 다음과 같습니다.

Kernel IP routing table
Destination Gateway     Genbask         Flags Metric Ref Use Iface
default     10.0.0.36   0.0.0.0         UG    303    0     0 wlan0
10.0.0.0    0.0.0.0     255.255.0.0     U     303    0     0 wlan0
192.168.0.0 0.0.0.0     255.255.255.240 U     304    0     0 wlan1

wlan1 클라이언트의 인터넷 액세스를 허용할 수만 있다면 모든 것이 끝날 수 있습니다 :)

답변1

인터넷 게이트웨이 라우터에서 wlan1(192.168.0.0/28)에 연결된 네트워크까지의 경로가 없기 때문에 결국 wlan0과 wlan1 사이에 PAT 오버로드가 있는 동적 NAT를 설정하게 되었습니다.

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

임무 완수!

인터넷 게이트웨이 라우터에 액세스할 수 있다면 Raspbian Stretch의 wlan0 주소에서 192.168.0.0/28 네트워크로의 고정 경로를 추가할 수 있지만 1) 해당 라우터에 액세스할 수 없고 2) 또한 a) DHCP 서버에 DHCP 예약(액세스 권한 없음) 또는 b) Raspbian Stretch의 wlan0에 고정 IP 주소 - wlan0 dhcp 용이성이 만료될 때 변경을 방지하려는 경우. 따라서 이 경우 정적 경로는 작동하지 않습니다.

어쨌든, 이것은 내가 보거나 들어본 최초의 작동하는 라우터/방화벽입니다.아니다WAN에 유선 연결을 사용또는LAN.

사람들은 VPN이나 ​​SOCKS 프록시를 사용하는 대신 개방형 무료 WiFi 네트워크에서 이 기능을 완전히 사용할 수 있습니다(연결을 보호하기 위해 iptables에 대해 충분히 알고 있는 경우).

관련 정보