状況

状況

状況

Raspbian Stretch は、wlan0 (モデル RT5370) 経由でプライベート サブネット 10.0.0.0/16 にワイヤレスで接続されています。これ以上変更しなくても、Raspbian Stretch はインターネットにアクセスでき、DNS が機能します。PS: インターネットに接続するルーターに物理的にアクセスできません。ワイヤレスのみです。

もう 1 つの RT5370 NIC を wlan1 として追加し、hostapd を使用してワイヤレス アクセス ポイントとして設定しました。

ルーターの DHCP サーバーのアドレス範囲がわからないため、wlan0 に静的アドレスを追加したくありません。

wlan1 192.168.0.1/28 (16 個のホスト アドレス) に静的 IPv4 アドレスを設定し、このネットワークの DHCP サーバーとして dnsmasq を設定しました。

問題

実のところ、かなり簡単なはずです。

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

単一のデフォルト ルートの方が適切であるように思われるにもかかわらず、なぜ 2 つのデフォルト ゲートウェイが存在するように見えるのかはわかりませんが、インターネットは機能しているので、続行します...

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 に ping できなくなり、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) wlan0 dhcp の有効期限が切れたときに変更が行われないようにするには、a) DHCP サーバー (これもアクセスできません) で DHCP 予約を設定するか、b) Raspbian Stretch の wlan0 で静的 IP アドレスを設定する必要があります。したがって、この場合、静的ルートは機能しません。

とにかく、これは私が見たり聞いたりした中で、初めて機能するルーター/ファイアウォールです。ないWANへの有線接続を使用するまたはLAN。

VPN や SOCKS プロキシを使用する代わりに、オープンな無料 WiFi ネットワークでこれを完全に使用できます (接続を保護するために iptables について十分に理解している場合)。

関連情報