Network Manager(nmcli)を使用した依存ポータルの作成

Network Manager(nmcli)を使用した依存ポータルの作成

次の動作でWi-Fi(wlan0)をアクセスポイント/ホットスポットとして設定したいと思います。

以下はうまくいきます:

  1. デバイスはホットスポットを作成し、SSIDをブロードキャストし、httpサーバー(ノードエクスプレスサーバー)を起動します。
  2. ユーザーがホットスポットに接続する
  3. ユーザーは正しいIPに移動してサーバーを表示できます。

どんな助けが必要ですか?

  • サーバーのみを表示できるようにすべてのURLをキャプチャし、正しいIPにリダイレクトするにはどうすればよいですか?
  • ホットスポットに接続すると、IPを入力しなければサーバーだけが表示され、ホスト名は表示されません。
  • ブラウザが自動的に開き、正しいIPに移動するにはどうすればよいですか?

DNS設定を構成する必要があると思いますが、どうすればよいかわかりませんか? dnsmaqを使用する必要がありますか、それともnmcliのみを使用できますか?私はnmcliを使用していないときにdnsmasqを使用していますが、dnsmasqでnmcliを使用する方法がわかりません。

interface=wlan0      # Use the require wireless interface - usually wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
address=/#/192.168.4.1

それは価値があるので、私はRaspbianを実行するコンピューティングモジュール(Pi 3)を使用しています。

私の現在の接続の詳細:

connection.id:                          Hotspot
connection.uuid:                        0456fec2-f1e3-45f0-92d9-35cb9c0e5f64
connection.stable-id:                   --
connection.type:                        802-11-wireless
connection.interface-name:              wlan0
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   0
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     unknown
connection.lldp:                        default
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)
802-11-wireless.ssid:                   hydrogen
802-11-wireless.mode:                   ap
802-11-wireless.band:                   bg
802-11-wireless.channel:                0
802-11-wireless.bssid:                  --
802-11-wireless.rate:                   0
802-11-wireless.tx-power:               0
802-11-wireless.mac-address:            --
802-11-wireless.cloned-mac-address:     --
802-11-wireless.generate-mac-address-mask:--
802-11-wireless.mac-address-blacklist:  --
802-11-wireless.mac-address-randomization:default
802-11-wireless.mtu:                    auto
802-11-wireless.seen-bssids:            --
802-11-wireless.hidden:                 no
802-11-wireless.powersave:              0 (default)
802-11-wireless.wake-on-wlan:           0x1 (default)
ipv4.method:                            auto
ipv4.dns:                               --
ipv4.dns-search:                        --
ipv4.dns-options:                       ""
ipv4.dns-priority:                      0
ipv4.addresses:                         --
ipv4.gateway:                           --
ipv4.routes:                            --
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv4.dad-timeout:                       -1 (default)
ipv6.method:                            auto
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       ""
ipv6.dns-priority:                      0
ipv6.addresses:                         --
ipv6.gateway:                           --
ipv6.routes:                            --
ipv6.route-metric:                      -1
ipv6.route-table:                       0 (unspec)
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.addr-gen-mode:                     stable-privacy
ipv6.dhcp-duid:                         --
ipv6.dhcp-send-hostname:                yes
ipv6.dhcp-hostname:                     --
ipv6.token:                             --
proxy.method:                           none
proxy.browser-only:                     no
proxy.pac-url:                          --
proxy.pac-script:                       --

答え1

HTTPトラフィックをキャプチャしてリダイレクトするには、一部の依存ポータルソフトウェアを実行する必要があります。 NetworkManagerにはこれは含まれません。それでもNetworkManagerを使用してホットスポットを実行できます。ただし、Hostapとdnsmasqを直接実行することもできます。

通常、NetworkManager()を使用してWi-Fiアクセスポイントを作成する場合は、802-11-wireless.mode apIPv4 NAT(またはIPv6プレフィックス委任を使用)を使用してDHCPおよびDNSサーバーも実行する必要があります。 Wi-Fi「ap」とIP共有方式は独立しています。たとえば、イーサネットまたはBluetoothデバイスで「ipv4.method = shared」を設定できます。

設定されている場合、ipv4.method sharedNetworkManagerはインターフェイスでdnsmasqを実行してDHCPおよびDNSサーバーとして機能します。また、マスカレーディング(NAT)を有効にするiptablesルールを追加します。これを設定すると、ipv6.method sharedNetworkManagerはIPv6プレフィックス委任を実行します。

答え2

返信ありがとうございます。

dnsmasqプラグインを使用してこれらの生のルーティングを取得できました。

  1. 私はdns=dnsmasq入った/etc/NetworkManager/NetworkManager.conf
  2. address=/test.com/10.42.0.1/etc/NetworkManager/dnsmasq.d/redirect.confに設定しました。

ipv4.method.sharedその場合、イーサネットでDHCPおよびDNS機能を有効にするには、イーサネット設定ファイルでこれを設定するだけです。

関連情報