Linux-セカンダリUSB Wi-Fiドングルでインターネットアクセスをブリッジせずにホットスポットを作成する


1

状況:
Raspberry Pi 3(シングルボードミニPC)、Debianベースのディストリビューション(Raspbian)、2枚のwi-fiカード、1枚の内部(wlan0)、他の外部(wlan1)、ホームルーターからの内部受信インターネット

私が欲しいもの:
他のwi-fiカード(wlan1-sb外部カード)は、私の場合はインターネットアクセスを必要としない特定のデバイス(ESP8266デバイス)とRaspberry Piの間に接続を確立し、アクセスポイントを作成します/ホットスポット

しかし、どうすればそれを実現できますか?

wlan1内でインターネットアクセスなしのホットスポットを構成するにはどうすればよいですか?


2
使用するだけhostapdですか?ルーティングまたはブリッジインターネットアクセスのセットアップは、実際には余分な作業です。
ダニエルB

@DanielB dhcpサーバーも使用すべきですか?
DiogoSaraiva

1
もちろん、それは要件によって異なります。これらのモジュールにDHCPクライアントが搭載されているかどうかはわかりません。
ダニエルB

通常のネットワークからIoTデバイスにアクセスする必要がありますか?または、Piで実行されているソフトウェアがアクセスできる場合は十分ですか?
ダニエルB

回答:


1

解決策は少し長いです。

  1. 使用hostapdのホットスポットを作成するためにWLAN1を。インターネット上でこれを行う方法に関するガイドがあり、好きなものを見つけることができます。Daniel Bの提案に従って、bridge = br0ステートメントを省略できます。

  2. これで、インターフェースにIPアドレスを与えて、それを立ち上げることができます:

    ip addr add 192.168.1.111/24 dev wlan1
    ip link set dev wlan1 up
    

    ここで、192.168.1.111はルーターのDHCPプールのアドレスですが、同じサブネット内にあります。

  3. ここで、ホットスポットのクライアントのIPアドレスの範囲を決定する必要があります。これが必要であるではないので、DHCP-理由の、しかしためのルーティング(次の項目を参照してください)。メインルーターで使用されないメインLANの小さなサブネットを選択します。ルータは、範囲内のIPアドレスを配布する場合たとえば、192.168.1.2-192.168.1.100、あなたのようなものを使用する192.168.1.112/28範囲内のすべてのアドレスが含まれ、192.168.1.112-192.168.127を

  4. ここで、すべての重要なルートを追加します

    ip route add 192.168.1.112/28 dev wlan1
    

    これにより、カーネルは、ルールがすでにある標準インターフェイスwlan0ではなく、正しいインターフェイスを介してwifiクライアントにパケットを送信するように指示されます。

    ip route add 192.168.1.0/24 dev wlan0
    

    これはDHCPから取得されます。繰り返しますが、それは重要です。最初のルートはより具体的であるため、2番目のルートより優先されます。これにより、カーネルはwlan1インターフェイスを使用してwifiクライアントに到達する方法を認識できます。

  5. ここで、192.168.1.112 / 28の範囲のアドレスを配布するために、インターフェイスwlan1で動作するようにdnsmasqをセットアップする必要があります。次の/etc/dnsmasq.confファイルを使用します。

    domain-needed
    bogus-priv
    dhcp-authoritative
    interface=wlan1
    server=8.8.8.8
    server=8.8.4.4
    expand-hosts
    domain=YourLanName.lan
    dhcp-range=192.168.1.112,192.168.1.127,12h
    dhcp-option=3,192.168.1.1
    dhcp-host=4C:E6:76:00:11:22,PC_NAME,192.168.1.119,12h
    

    これは一目瞭然です。次のツー・最後の行は、指示のdnsmasqをゲートウェイとして渡すことがないているマシンのIP のdnsmasqが実行されているが、のIPアドレス、真のあなたのLANのルータ/ゲートウェイ。Wi-Fiクライアントがインターネットにアクセスできないようにする場合は、最後から2番目の行をスキップできます。dnsmasqを起動し、

     systemctl start dnsmasq
    

    私はあなたがsystemdにいると仮定します、そうでなければ上記は

    service dnsmasq start
    

    最後の行は、予約済み(=静的)アドレスを配布する方法を示しています。あなたのwifiクライアントの1つと192.168.1.112/28範囲外のIPアドレスに割り当てたい場合は、それを行うことができます、そのアドレスがどこにあるかをカーネルに指示することを忘れないでください:例えば、

    ip route add 192.168.1.200/32 dev wlan1
    
  6. インターフェースを介したIPv4トラフィックを許可することを忘れないでください。

    echo 1 > /proc/sys/net/ipv4/ip_forward
    

    そして、トラフィックをマスカレードするには、

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

    この最後のコマンドは、wlan0インターフェイスを出るすべてのトラフィックがRPIから発信されたように見えることを保証します。これは、クライアントがクエリに対する応答を取得することを意味します。どのリターンパケットがRPIに属し、どのクライアントに属するかを追跡することについて心配する必要はありません。カーネルは自動的にそれを行います。

  7. 最後に、wlan0wlan1の間のIPトラフィックのみを許可しました(これはIPv4転送の意味です)。これにより、ARPなどのレイヤー2プロトコルが除外されます。この不足を補うために、proxy-arpを使用できます。

    echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp
    echo 1 > /proc/sys/net/ipv4/conf/wlan1/proxy_arp
    

1
追加のインターフェイスとブリッジは必要ないと確信しています。APネットワークは、システムに対する通常のネットワークアダプターとして単純に表示されます。また、ブリッジを使用している場合でも、メンバーが1つしかない場合でも、システムへのネットワークアダプターとして表示されます。
ダニエルB

ふむ 私は7年以上、hostapd(OpenWrt上)をブリッジなしで使用しています。確かに、一部の非標準WiFiドライバーでは追加のセットアップが必要になる場合がありますが、リモートの最新のものでも「そのまま」動作するはずです。
ダニエルB

@DanielBはい、あなたのコメントに従って投稿を修正しました。
MariusMatutiae
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.