BobbyQuineのブログ(備忘録)

Linux関係の備忘録、その他タバコ、Vape関連なんかも。

Arch LinuxのLaptopをWi-Fiアクセスポイントにした話

ども、BobbyQuineです。今回は題名の通り普段遣いのLaptopをWi-Fiのアクセスポイントにしてみました。

 

2018/1/7:最初に書いた設定では一度接続できたあと何故かできなくなったので色々弄ってそれについて更新します。

 

この記事を真似するときは自己責任で。

 

参考にしたページ

LinuxPCをWiFiアクセスポイントにする - Qiita

ソフトウェアアクセスポイント - ArchWiki

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カード入るのマジ有能。

f:id:BobbyQuine:20180206233905j:plain

 

$ 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 pacman -S 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スピーカーから音が出ないのはなぜなのか??もう一回設定見直してみる。

雑記 : ロシア語関係の友人たちと焼き肉行った。めっちゃうまかったわ。また行きたい。