ブログ

Linux・オープンソースプロジェクトのティップス紹介

2021/04/26  リナックス, Orange Pi, Raspberry Pi, ネットワーク


USB WiFiドングルRTL8188のAPモードを有効にしてルータ化したOrange Pi PCにRaspAPを導入します。ルータ化する際に設定したネットワーク環境などと整合性をとるため、まず初めにconfigフォルダの内容を変更、その後インストール作業に移行します。

導入条件

  • Armbian 21.02.3 Buster with Linux 5.10.21-sunxi
  • Orange Pi PCを以下の手順によりルータ化済のこと

 RTL8188によるOrangePiのルータ化Vol.2 Orange Pi

iwconfigによるLANインターフェイスの確認で、wlan0またはwlan1という表記ではなくwlx*******という表記になっている場合の対処方法 https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ $ sudo ln -s /dev/null /etc/udev/…

RaspAPドキュメント
https://docs.raspap.com/manual/

 


configファイルの変更

Orange Pi PCのルータ化で、ネットワークインターフェイスwlan1をアクセスポイントとして指定しているため、wlan0からwlan1、dhcp-rangeなども併せて変更します。

 

config/090_wlan0.conf ファイル名を090_wlan1.confへ変更するかどうかは任意。

# RaspAP wlan1 configuration for wired (ethernet) AP mode
interface=wlan1
domain-needed
dhcp-range=11.22.33.44,11.22.33.150,255.255.255.0,12h
dhcp-option=8.8.8.8,1.1.1.1

 

config/config.php

.....
.....
define('RASPI_WIFI_AP_INTERFACE', 'wlan1');
.....
.....

 

config/defaults.json アクセスポイントをwlan1のみで指定する場合、wlan0のセクションは必要ありません。

{
  "dhcp": {
    "wlan1": { 
      "static ip_address": [ "11.22.33.44/24" ],
      "static routers": [ "11.22.33.44" ],
      "static domain_name_server": [ "1.1.1.1 8.8.8.8" ],
      "subnetmask": [ "255.255.255.0" ]
    },
    "wlan0": {
      "static ip_address": [ "192.168.10.10/24" ],
      "static routers": [ "192.168.10.1" ],
      "static domain_name_server": [ "1.1.1.1 8.8.8.8" ],
      "subnetmask": [ "255.255.255.0" ]
    },
    "options": {
      "# RaspAP default configuration": null,
      "hostname": null,
      "clientid": null,
      "persistent": null,
      "option rapid_commit": null,
      "option domain_name_servers, domain_name, domain_search, host_name": null,
      "option classless_static_routes": null,
      "option ntp_servers": null,
      "require dhcp_server_identifier": null,
      "slaac private": null,
      "nohook lookup-hostname": null
    }
  },
  "dnsmasq": {
    "wlan1": {
      "dhcp-range": [ "11.22.33.44,11.22.33.150,255.255.255.0,12h" ]
    },
    "wlan0": {
      "dhcp-range": [ "192.168.10.50,192.168.10.150,12h" ]
    }
  }
}

 

config/dhcpcd.conf DHCPクライアントの設定。インターネットへ接続しているルータのDHCPサーバから割当てられるIPアドレスを、ルータで設定したIPアドレス範囲内で指定。

.....
.....
# RaspAP default configuration
.....
.....

# RaspAP wlan0 configuration
interface wlan0
static ip_address=192.168.0.xx/24
static routers=192.168.0.1
static domain_name_server=192.168.0.1 1.1.1.1

 


関連パッケージのインストール・ファイルコピー

既にインストール済のパッケージが幾つかあるかもしれませんが、以下インストールします。

$ sudo apt-get install dhcpcd5 lighttpd git hostapd dnsmasq iptables-persistent vnstat qrencode php7.3-cgi

 

Lighttpdのfastcgiモジュールを有効化、設定をリロードし再起動

$ sudo lighttpd-enable-mod fastcgi-php    
$ sudo service lighttpd force-reload
$ sudo systemctl restart lighttpd.service

 

RaspAPをウェブサーバディレクトリへダウンロード

$ sudo git clone https://github.com/RaspAP/raspap-webgui /var/www/html

 

Lighttpdの拡張設定ファイルを以下の手順で作成、lighttpdの設定ディレクトリへ追加

$ WEBROOT="/var/www/html"
$ CONFSRC="$WEBROOT/config/50-raspap-router.conf"
$ LTROOT=$(grep "server.document-root" /etc/lighttpd/lighttpd.conf | awk -F '=' '{print $2}' | tr -d " \"")

$ HTROOT=${WEBROOT/$LTROOT}
$ HTROOT=$(echo "$HTROOT" | sed -e 's/\/$//')
$ awk "{gsub(\"/REPLACE_ME\",\"$HTROOT\")}1" $CONFSRC > /tmp/50-raspap-router.conf
$ sudo cp /tmp/50-raspap-router.conf /etc/lighttpd/conf-available/

 

上記追加した設定ファイルを有効にし、Lighttpdを再起動

$ sudo ln -s /etc/lighttpd/conf-available/50-raspap-router.conf /etc/lighttpd/conf-enabled/50-raspap-router.conf
$ sudo systemctl restart lighttpd.service

 

サーバユーザであるwww-dataにネットワークの管理権限を付与するため、以下のファイルを指定ディレクトリにコピーします。

$ cd /var/www/html
$ sudo cp installers/raspap.sudoers /etc/sudoers.d/090_raspap

 

raspap.sudoers ウェブ管理画面で変更したくない箇所はコメントアウトして下さい。

www-data ALL=(ALL) NOPASSWD:/sbin/ifdown
www-data ALL=(ALL) NOPASSWD:/sbin/ifup
www-data ALL=(ALL) NOPASSWD:/bin/cat /etc/wpa_supplicant/wpa_supplicant.conf
www-data ALL=(ALL) NOPASSWD:/bin/cat /etc/wpa_supplicant/wpa_supplicant-wlan[0-9].conf
www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/wifidata /etc/wpa_supplicant/wpa_supplicant.conf
www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/wifidata /etc/wpa_supplicant/wpa_supplicant-wlan[0-9].conf
www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i wlan[0-9] scan_results
www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i wlan[0-9] scan
www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i wlan[0-9] reconfigure
www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i wlan[0-9] select_network [0-9]*
# www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/hostapddata /etc/hostapd/hostapd.conf
# www-data ALL=(ALL) NOPASSWD:/bin/systemctl start hostapd.service
# www-data ALL=(ALL) NOPASSWD:/bin/systemctl stop hostapd.service
# www-data ALL=(ALL) NOPASSWD:/bin/systemctl start dnsmasq.service
# www-data ALL=(ALL) NOPASSWD:/bin/systemctl stop dnsmasq.service
www-data ALL=(ALL) NOPASSWD:/bin/systemctl restart dnsmasq.service
www-data ALL=(ALL) NOPASSWD:/bin/systemctl start openvpn-client@client
www-data ALL=(ALL) NOPASSWD:/bin/systemctl enable openvpn-client@client
www-data ALL=(ALL) NOPASSWD:/bin/systemctl stop openvpn-client@client
www-data ALL=(ALL) NOPASSWD:/bin/systemctl disable openvpn-client@client
www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/ovpnclient.ovpn /etc/openvpn/client/client.conf
www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/authdata /etc/openvpn/client/login.conf
www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/dnsmasqdata /etc/dnsmasq.d/090_*.conf
www-data ALL=(ALL) NOPASSWD:/bin/rm /etc/dnsmasq.d/090_*.conf
# www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/dhcpddata /etc/dhcpcd.conf
www-data ALL=(ALL) NOPASSWD:/sbin/shutdown -h now
www-data ALL=(ALL) NOPASSWD:/sbin/reboot
www-data ALL=(ALL) NOPASSWD:/sbin/ip link set wlan[0-9] down
www-data ALL=(ALL) NOPASSWD:/sbin/ip link set wlan[0-9] up
www-data ALL=(ALL) NOPASSWD:/sbin/ip -s a f label wlan[0-9]
# www-data ALL=(ALL) NOPASSWD:/bin/cp /etc/raspap/networking/dhcpcd.conf /etc/dhcpcd.conf
www-data ALL=(ALL) NOPASSWD:/etc/raspap/hostapd/enablelog.sh
www-data ALL=(ALL) NOPASSWD:/etc/raspap/hostapd/disablelog.sh
# www-data ALL=(ALL) NOPASSWD:/etc/raspap/hostapd/servicestart.sh
www-data ALL=(ALL) NOPASSWD:/etc/raspap/lighttpd/configport.sh
www-data ALL=(ALL) NOPASSWD:/etc/raspap/openvpn/configauth.sh
www-data ALL=(ALL) NOPASSWD:/bin/chmod o+r /tmp/hostapd.log
www-data ALL=(ALL) NOPASSWD:/bin/chmod o+r /tmp/dnsmasq.log
www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/dnsmasqdata /etc/dnsmasq.d/090_adblock.conf
www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/dnsmasq_custom /etc/raspap/adblock/custom.txt
www-data ALL=(ALL) NOPASSWD:/etc/raspap/adblock/update_blocklist.sh

 

RaspAP専用ディレクトリの作成

$ sudo mkdir /etc/raspap/
$ sudo mkdir /etc/raspap/backups
$ sudo mkdir /etc/raspap/networking
$ sudo mkdir /etc/raspap/hostapd
$ sudo mkdir /etc/raspap/lighttpd

 

ユーザ認証用phpファイルのコピー

$ sudo cp raspap.php /etc/raspap 

 

サーバディレクトリのパーミッションを設定

$ sudo chown -R www-data:www-data /var/www/html
$ sudo chown -R www-data:www-data /etc/raspap

 

hostapdシェルスクリプトの移動とパーミッションの設定

$ sudo mv installers/*log.sh /etc/raspap/hostapd 
$ sudo mv installers/service*.sh /etc/raspap/hostapd
$ sudo chown -c root:www-data /etc/raspap/hostapd/*.sh 
$ sudo chmod 750 /etc/raspap/hostapd/*.sh 

 

Lighttpdシェルスクリプトのコピーとパーミッションの設定

$ sudo cp installers/configport.sh /etc/raspap/lighttpd
$ sudo chown -c root:www-data /etc/raspap/lighttpd/*.sh

 


デフォルトファイルの配置

初めに内容を変更した各種設定ファイルは、デフォルトの設定ファイルとして利用します。

$ sudo cp config/090_raspap.conf /etc/dnsmasq.d/090_raspap.conf
$ sudo cp config/090_wlan0.conf /etc/dnsmasq.d/090_wlan0.conf
$ sudo cp config/dhcpcd.conf /etc/dhcpcd.conf
$ sudo cp config/config.php /var/www/html/includes/
$ sudo cp config/defaults.json /etc/raspap/networking/

その他オプションについてはドキュメントを参照して下さい。

以下テーマ変更後の表示例です。
 

http://192.168.1.xx

 

ダッシュボード

アクセスポイント設定

WiFi接続設定

comments powered by Disqus