Arch LinuxのLaptopをWi-Fiアクセスポイントにした話
ども、BobbyQuineです。今回は題名の通り普段遣いのLaptopをWi-Fiのアクセスポイントにしてみました。
2018/1/7:最初に書いた設定では一度接続できたあと何故かできなくなったので色々弄ってそれについて更新します。
この記事を真似するときは自己責任で。
参考にしたページ
LinuxPCをWiFiアクセスポイントにする - Qiita
systemd/systemdのserviceタイプ一覧を表示する方法 - Linuxと過ごす
実行した動機
まず、これまでのネットワークは下のようになっていました。
お家の無線ルーター
|
|---------------------- CF-S9(メインで使っているLaptop)
|---------------------- sshサーバーなデスクトップPC
|---------------------- その他スマホなど。
実はこの「お家の無線ルーター」には2つほど欠点があって
1. 管理者の設定により03:00になると自動的に電源がoffになる。
2. 電子レンジがジャミングになって電子レンジを使っているときはネットワークが使えなくなる。
つまり03:00からと電子レンジを使っている最中はデスクトップPCにアクセスできなくなるのだ。まぁsshは良いとして、ネットワークスピーカーとして活用している最中に電子レンジ使うと動画は進んでるのに音が出なくなってうわーってなるのでなんとかしたい。なので
お家のルーター
|
|------------------ CF-S9 ----------------デスクトップPC
|------------------ その他
としてしまおうというお話。
hostapdのインストール、設定
今回はFC-S9に内蔵されているモジュールは自宅無線ルーターにつなぐのに使い、アクセスポイントのためにはこいつを選んだ。CF-S9、PCIカード入るのマジ有能。
$ sudo pacman -S hostapd
$ ip link
で指したPCIデバイスのインターフェース名を確認。このとき、内蔵のがwlp10s0、PCIカードのがwlp12s0であった。
$ sudo vim /etc/hostapd/hostapd.conf
ここの内容に変更があります。
以下内容-----------------------------------------------------------------------------------------------------------------
interface=wlp12s0
driver=nl80211
ssid=YOURSSID
hw_mode=g
channel=7
wpa=2
wpa_passphrase=YOURPASSWORD
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
以上-----------------------------------------------------------------------------------------------------------------------
再度設定したやつ:以下内容--------------------------------------------------------------------------------------
ssid=YOURSSID
wpa_passphrase=YOURPASSWORD
interface=wlp12s0
auth_algs=3
channel=7
driver=nl80211
hw_mode=g
logger_stdout=-1
logger_stdout_level=2
max_num_sta=5
rsn_pairwise=CCMP
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
以上-----------------------------------------------------------------------------------------------------------------------
$ sudo vi /etc/default/hostapd
以下内容-----------------------------------------------------------------------------------------------------------------
DAEMON_CONF="/etc/hostapd/hostapd.conf"
以上-----------------------------------------------------------------------------------------------------------------------
dhcpのインストール
sudo vim /etc/dhcpd.conf
以下内容-----------------------------------------------------------------------------------------------------------------
default-lease-time 600;
max-lease-time 7200;
INTERFACES="wlp12s0";
option domain-name "";
log-facility local7;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.10 10.0.0.20;
option routers 10.0.0.1;
option domain-name-servers 8.8.8.8;
}
以上-----------------------------------------------------------------------------------------------------------------------
IPフォワーディング
これ、2つともやらなあかんのかもしれないしどっちかで良いのかもしれないし。
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
$ sudo sysctl net.ipv4.ip_forward=1
起動
iptablesにNATチェイン追加。これでwlp10s0とwlp12s0を開通させるイメージ。
$ sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/255.255.255.0 -o wlp10s0 -j MASQUERADE
2018/1/7追記:コレだけではどうにも開通してなかったので
$ iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$ iptables -A FORWARD -i wlp12s0 -o wlp10s0 -j ACCEPT
$ sudo ifconfig wlp12s0 10.0.0.1 netmask 255.255.255.0 up
dhcpとhostapdの起動
$ systemctl start dhcpd4.service
$ systemctl start hostapd.service
このときdhcpの方がなんて指定すればよいのかわからなくて困った。
そのときに使ったコマンドもメモっとく
$ systemctl list-unit-files -t service
切るとき
$ systemctl stop hostapd.service
$ systemctl stop dhcpd4.service
$ sudo ifconfig wlp12s0 down
$ sudo iptables -t nat -D POSTROUTING -s 10.0.0.0/255.255.255.0 -o wlp10s0 -j MASQUERADE
以上、ほぼ参考にしたページの1つ目。(コレだけではどうにもならなかったのでArch Wikiの設定をほぼ丸コピ。ただbridge項目は無くした)ただ、私のArch環境では「そんなコマンドねぇよ」って怒られたのが何箇所かあったので自分のArch流にして備忘録代わりに書いてみた。Shellスクリプト化して自動化もできそうだけどまだやって見てないからとりあえずこの辺で。あと何故かデスクトップPCをこいつにつなぐとUSBスピーカーから音が出ないのはなぜなのか??もう一回設定見直してみる。
雑記 : ロシア語関係の友人たちと焼き肉行った。めっちゃうまかったわ。また行きたい。