LoginSignup
3
7

More than 5 years have passed since last update.

無線LAN アンテナ付のLapTop マシンで無線LAN アクセスポイントを構築する

Posted at

概要

無線LAN アンテナが内蔵しているLap Top にLinux(Fedora 25) をインストールし、無線LAN AP 化してみます。
自宅サーバとしてLap Top にLinux を入れて既に運用している人はそれを再利用することで、無線LAN 機能付きルータを買わなくても手持ちのスマホやRaspberry Pi をWifi 接続させることができるようになります。

構成

今回構築する無線LAN AP の構成としては次のようになります。
無線LAN を利用する端末は192.168.10.0/24 のネットワークに属し、外のネットワークにアクセスするときは無線LAN AP のIP アドレス192.168.1.254 でNAT するようにします。
今回使用する無線LAN AP のハードはLaptop PC を使用し、内蔵されているアンテナを利用して無線LAN 側のネットワークの電波を飛ばすようにします。

構成
    WAN
     |
   +-+------+
   | GW     |
   +-+------+
     |
     | 有線LAN
     |        192.168.1.254/24
   +-+------+ (192.168.10.0/24 からのパケットを192.168.1.254 のIPでNAT)
 +-|enp0s25 |-----------+
 | +--------+           |
 | 無線LAN AP           |
 | Fedora25 (Linux)     |
 | +--------+           |
 +-|wlp4s0  |+----------+
   +-+------+ 192.168.10.1/24
     .
     . 無線
     .
 +-------------------------+
 | スマホ・Laptop 等の端末 |
 +-------------------------+
  (dhcp で動的に192.168.10.0/25 内のIP アドレスを割り当て)

無線LAN デバイスの確認

今回使用したFedora Server Edition では、ドライバがインストールされていないため、インストール直後の状態では無線LAN アダプタを認識していませんでした。
認識させるのに必要なドライバを特定するために、まず自分が使っているマシンの無線LAN アダプタの型番を確認します。

無線LANアダプタの確認
# lspci | grep -i wireless
04:00.0 Network controller: Intel Corporation Wireless 7265 (rev 3b)

# lspci -vv -s 04:00.0
......
 latency: 71680ns
        Capabilities: [154 v1] L1 PM Substates
                L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
                          PortCommonModeRestoreTime=30us PortTPowerOnTime=60us
                L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+
                           T_CommonMode=0us LTR1.2_Threshold=163840ns
                L1SubCtl2: T_PwrOn=60us
        Kernel driver in use: iwlwifi
        Kernel modules: iwlwifi

上記の出力結果よりドライバはiwlwifi を使用することがわかります。

無線LAN ドライバのインストール

まずは該当のWifi ドライバがリポジトリ上にあるか検索して確認します。

無線LANドライバの検索
# dnf search wireless
......
iwl7260-firmware.noarch : Firmware for Intel(R) Wireless WiFi Link 7260 Series Adapters
......

# dnf info iwl7260-firmware.noarch                                                                                                                                                                                                                                  .1
Last metadata expiration check: 3:20:22 ago on Sun Mar 19 08:06:56 2017.
Installed Packages
Name        : iwl7260-firmware
Arch        : noarch
Epoch       : 1
Version     : 25.30.13.0
Release     : 69.fc25
Size        : 31 M
Repo        : @System
From repo   : updates
Summary     : Firmware for Intel(R) Wireless WiFi Link 7260 Series Adapters
URL         : http://www.kernel.org/
License     : Redistributable, no modification permitted
Description : This package contains the firmware required by the Intel wireless drivers
            : for Linux.  Usage of the firmware is subject to the terms and conditions
            : contained inside the provided LICENSE file. Please read it carefully.

確認すると、先程特定したドライバと名前は完全一致しませんが、こちらのドライバで問題なさそうです(よくわからなかったら、一通りドライバを入れてみるのもあり)。
ドライバの確認が取れたらそれをインストールします。

wirelessツールのインストール
# dnf install iwl7260-firmware

完了したらOS を再起動させます。

# shutdown -r now

マシンが再起動したら、Wifi アダプタが認識されているか試しに起動して確認してみましょう。
今回検証した環境では、デフォルトで無線LAN デバイス類が起動しないように無効化されていたので、rfkill コマンドでそれを解除してから起動するようにしています。

# ip a
......
3: wlp4s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 60:57:18:43:fc:3d brd ff:ff:ff:ff:ff:ff
......

# rfkill unblock wlan
# ip link set wlp4s0 up
# ip addr add 192.168.10.1/24 dev wlp4s0
# ifconfig
......
wlp4s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.10.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 36:e8:49:bf:a1:f2  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
......

無線LAN AP 環境の構築

デバイス周りの準備ができたところで、次にhostapddhcpd の設定を行っていきます。

hostapdとdhcpdのインストール
# dnf install hostapd dhcp

hostapd の設定を行っていきます。
設定ファイルの内容は今回は次のように設定しました。

/etc/hostapd/hostapd.conf
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel

# Some usable default settings...
macaddr_acl=0
#deny_mac_file=/etc/mac.deny
#macaddr_acl=1
#accept_mac_file=/etc/hostapd/mac.accept
auth_algs=1
ignore_broadcast_ssid=0

wpa=2
wpa_passphrase=MyWiFiPassword
wpa_key_mgmt=WPA-PSK

# Most modern wireless drivers in the kernel need driver=nl80211
driver=nl80211

# Customize these for your local configuration...
interface=wlp4s0
#bridge=br0

hw_mode=g
channel=1
ssid=air

wpa_pairwise=CCMP

logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2

設定内容を一部抜粋して説明します。

  • macaddr_acl=0
    MAC アドレスによる接続拒否設定を行います。
    0 に設定するとdeny_mac_file に指定したファイルに記載されたMAC アドレスのデバイスのみ接続を拒否し、それ以外のデバイスは接続を許可するようになります。
    1 に設定するとaccept_mac_file に指定したファイルに記載されたMAC アドレスのデバイスのみ接続を許可し、それ以外のデバイスは接続を拒否するようになります。
    deny_mac_file, accept_mac_file ファイルの書式はどちらもMAC アドレスを改行区切りで記述します。

  • auth_algs=1
    1 に設定すると、WPA2 認証を行います

  • wpa=2
    WPA2 のみ許可します

  • wpa_passphrase=MyWiFiPassword
    認証パスワードを指定します

  • interface=wlp4s0
    無線AP として使用する無線LAN インタフェースを指定します

  • hw_mode=g
    無線LAN の規格としてあらゆるデバイスで無難に使用できるg を採用します

  • ssid=air
    SSID を設定します

  • wpa_pairwise=CCMP
    暗号化方式としてCCMP(AES 暗号)を使用します

dhcpd の設定

無線AP に接続してくるデバイスに、動的にIP アドレスを割り振るDHCP の設定を行います。

/etc/dhcp/dhcpd.conf
subnet 192.168.10.0 netmask 255.255.255.0 {
    option routers                  192.168.10.1;
    option subnet-mask              255.255.255.0;
    option domain-name              "myhome.local";
    option domain-name-servers      8.8.8.8;
    range dynamic-bootp             192.168.10.11 192.168.10.200;
    default-lease-time              86400;
    max-lease-time                  259200;
}

ip forward の設定

無線AP に接続したデバイスがインターネット側にパケットが転送され、レスポンスを受け取れるように、NAT とIP forward の設定を行います。

ipforward
# sysctl -w net.ipv4.ip_forward=1
# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/net.ipv4.ip_forward.conf

現在物理インタフェースenp0s25に設定されているFirewall zone を確認します。

現在のzoneの取得
# firewall-cmd --get-active-zone
FedoraServer
  interfaces: enp0s25

現在設定されているゾーンはFedoraServer であることを確認できました。
今回はそのゾーンに対して物理ネットワークインタフェースenp0s25 とワイヤレスネットワークインタフェースwlp4s0 間のマスカレード設定をしていきます。

マスカレード設定の追加
# firewall-cmd --zone=FedoraServer --add-masquerade --permanent
# firewall-cmd --reload
# firewall-cmd --direct --permanent --add-rule ipv4 nat POSTROUTING 0 -o wlp4s0 -j MASQUERADE
# firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i wlp4s0 -o wlp4s0 -j ACCEPT
# firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i br0 -o wlp4s0 -m state --state RELATED,ESTABLISHED -j ACCEPT

補足として、上記のfirewalld のルールを削除する場合、次のようにコマンドを実行します。

マスカレード設定削除例
# firewall-cmd --direct --permanent --remove-rule ipv4 nat POSTROUTING 0 -o wlp4s0 -j MASQUERADE
# firewall-cmd --direct --permanent --remove-rule ipv4 filter FORWARD 0 -i wlp4s0 -o wlp4s0 -j ACCEPT
# firewall-cmd --direct --permanent --remove-rule ipv4 filter FORWARD 0 -i wlp4s0 -o wlp4s0 -m state --state RELATED,ESTABLISHED -j ACCEPT

設定が完了したら、hostapd とdhcpd を起動します。

hostapdとdhcpdの起動
# systemctl start hostapd
# systemctl start dhcpd

エラー無く起動させたらスマホ等のWifi 接続可能な機器で接続テストをしてみましょう。
インターネットなど問題なく接続出来れば成功です。

参考

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7