情況

情況

情況

Raspbian Stretch 透過 wlan0(型號 RT5370)無線連接到私有子網路 10.0.0.0/16。無需進一步修改,Raspbian Stretch 即可存取 Internet 並且 DNS 正在運作。 PS:我無法實際存取連接到互聯網的路由器 - 只能透過無線方式。

我新增了另一個 RT5370 NIC 作為 wlan1 並使用 hostapd 將其設定為無線存取點。

因為我不知道路由器的DHCP伺服器位址範圍,所以我不想在wlan0新增靜態位址。

我已在 wlan1 192.168.0.1/28(16 個主機位址)上設定了靜態 IPv4 位址,並將 dnsmasq 設定為該網路的 DHCP 伺服器。

問題

這真的應該很簡單。

Raspbian Stretch 可以 1) 存取網際網路或 2) 充當 WAP 連線客戶端。問題是這兩個功能不能同時運作。

我看過一些指南,其中互聯網連接是透過銅線而不是無線電波建立的,但我不明白為什麼如果網路連線介面是無線而不是有線會有什麼區別。無論如何...

我嘗試過的

重新啟動後,我可以成功 ping 通 google.com 和 8.8.8.8。

檢查後我可以看到 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,但現在我無法 ping google.com 或 8.8.8.8,並且我注意到 ifconfig 中沒有顯示 wlan0,並且我的路由表現在如下所示:

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

現在 ifconfig 中顯示了 wlan0 和 wlan1,Raspbian Stretch 可以 ping 通 google.com 和 8.8.8.8,但連接到 wlan1 的用戶端無法存取 Internet。

此時我的路由表如下:

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

因為沒有從 Internet 閘道路由器到連接到 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或者區域網路。

人們完全可以在開放的免費 WiFi 網路上使用它,而不是使用 VPN 或 SOCKS 代理程式(如果您對 iptables 有足夠的了解來保護您的連線。)

相關內容