##APって作れるんー?
無線LAN関連の勉強をしていて興味が急に湧いたので実際に調べてやってみた備忘録です。
参考になる方はほぼ皆無だとは思うのですが、
ubuntuと無線LANカードさえあれば作れるますので、需要があれば参考にしていただけたら幸いです。
間違っているところがあれば指摘してください。
###構築環境
- ubuntu18.04
- USBドングル
- hostapd
- isc-dhcp-server
- ip-tables
###流れ
- ubuntuにUSBドングルを認識させる
- hostapdをインストールし設定する
- ip-tableの設定
- isc-dhcp-serverをインストールし設定する
###1. ubuntuにUSBドングルを認識させる
開発用に使っていた筐体には、無線LANカードが積んでなかったので、USBドングルをネットで購入しました。
使用したものはこちら
1000円ぐらいでした。
ドライバーCDも付属されていましたが、使えませんでした。
とりあえず、挿してみてubuntuで
$lsusb
とすると
odba:c811 Realtek Semiconductor Corp
Realtekのチップを積んでいる事は認識してくれていました。
なので、ドライバーをネットで探すとgithubにある事がわかりました。
ので、適当なディレクトリにて
$sudo apt install dkms git make
$git clone https://github.com/abperiasamy/rtl8812AU_8821AU_linux.git
$cd rtl8812AU_8821AU_linux
$sudo make -f Makefile.dkms install
$sudo dkms status
$reboot
再起動後、$ip aとしてwlxから始まるインターフェースが追加されていれば、ドライバーのインストールが成功しています。なければ、ドライバーが違う可能性があります。
###2.hostapdをインストールし設定する
インターフェースが認識できたので、次にアクセスポイント化するアプリケーションをインストールします。
$sudo apt install hostapd
設定ファイルのサンプルもインストールされているのでそれをもらう。
$zcat /usr/share/doc/hostapd/example/hostapd.conf.gz > /etc/hostapd/hostapd.conf
編集する
$sudo vi /etc/hostapd/hostapd.conf
以下の記述を探し、編集する
interface=追加したインターフェース名
driver=nl80211
ssid=ssid
hw_mode=g
channel=1
wpa=2
wpa_passphrase=password
ssidにssidを入れwpa_passphraseにそのパスワードを記述
パスワードは8文字以上でないとエラーになる
:wpで保存終了し、動作確認
$hostapd /etc/hostapd/hostapd.conf
ログが画面に出力され待ち受け画面になる。
お使いの端末から設定したSSID名が見ることができれば、hostapdが正しく動いてくれています。
###3.ip-tableの設定
現状は無線LANインターフェースと有線との通信ができていないので、iptableを設定します。
$ sh -c “echo 1 > /proc/sys/net/ipv4/ip_forward”
$ iptables -t nat -A POSTROUTING -o 有線LANインターフェース名 -j MASQUERADE
$ iptables -A FORWARD -i 有線LANインターフェース名 -o 無線LANインターフェース名 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ iptables -A FORWARD -i 無線LANインターフェース名 -o 有線LANインターフェース名 -j ACCEPT
$sudo apt install iptables-persistent
iptableは再起動をすると設定が白紙になるそうですが、iptables-persistentをインストールすれば設定を保存してくれるみたいです。
手動で保存するなら
$/etc/init.d/iptables-persistent save
で保存してくれます。
###4.isc-dhcp-serverをインストールし設定する
パケット転送の設定が済んだのであとは、DHCPサーバーを構築すればルーターとして機能してくれます。
$sudo apt install isc-dhcp-server
$sudo vi /etc/dhcp/dhcpd.conf
subnet 192.168.12.0 netmask 255.255.255.0 {
range 192.168.12.100 192.168.12.150;
option domain-name-servers 192.168.12.1;
option routers 192.168.12.200;
}
サブネットやアドレス帯はお使いの環境に合わせてください。
無線LANインターフェースにIPアドレスを設定します。
$ ifconfig インターフェース名 192.168.12.200 netmask 255.255.255.0
$ ip a 確認
$sudo systemctl restart isc-dhcp-server
$sudo systemctl status isc-dhcp-server エラーがないか?確認
これでhostapdを起動しパスワードを入力して、無線LANに参加できれば成功です。
お疲れ様でした。
###参考記事