概要
無線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 アダプタの型番を確認します。
# 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 ドライバがリポジトリ上にあるか検索して確認します。
# 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.
確認すると、先程特定したドライバと名前は完全一致しませんが、こちらのドライバで問題なさそうです(よくわからなかったら、一通りドライバを入れてみるのもあり)。
ドライバの確認が取れたらそれをインストールします。
# 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 環境の構築
デバイス周りの準備ができたところで、次にhostapd
とdhcpd
の設定を行っていきます。
# dnf install hostapd dhcp
hostapd の設定を行っていきます。
設定ファイルの内容は今回は次のように設定しました。
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 の設定を行います。
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 の設定を行います。
# sysctl -w net.ipv4.ip_forward=1
# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/net.ipv4.ip_forward.conf
現在物理インタフェースenp0s25
に設定されているFirewall 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 を起動します。
# systemctl start hostapd
# systemctl start dhcpd
エラー無く起動させたらスマホ等のWifi 接続可能な機器で接続テストをしてみましょう。
インターネットなど問題なく接続出来れば成功です。
参考
-
ubuntu 14.04 を無線LANアクセスポイントにする
-
Debian / Ubuntu Linux: Setup Wireless Access Point (WAP) with Hostapd
-
How to display interface in tcpdump output flow?
-
Hostapd で2.4GHz帯と5GHz帯を同時に利用する。 [Hostapd で無線LAN AP構築]
-
Hostapd(gentoo linux)
-
無線LAN・Wi-Fiの規格と速度
-
IPマスカレードの設定