Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。 一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。 十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。  記事の転載や、基板・キットの商用利用の方は、ご連絡ください。
    学生やサークルの学習目的でまとめてご購入する場合は特別なコースをご用意させていただきます。

スポンサー

« 新プロテクタ基板PRT-02とDC-ARROW基板 | トップページ | shairport-syncをRaspbianにインストールしてAirPlayレシーバーに »

2018年5月24日 (木)

Pi 3をWifi AccessPoint化(Raspbian stretch Lite 2018)

昨年7月のRaspbianでアクセスポイント化する方法では、今年の3月以降のRaspbianではうまく動作しません。

なんとも厄介な話ですが、常に新しいソフトや仕組みを取り入れて成長してきた「Linux」らしい環境の変化ともいえます。

Raspbian2018

もう少し正確にかくとAccess Pointは動作するのですが、DHCPクライアントが起動に失敗していて、結果的に有線LAN側がネットワークに繋がらなくなります。

試行錯誤の結果、まともに動作できるようになりましたので手順を書いておきます。

 

Wifi AccessPoint化は、有線LANを接続しなくてもタブレットやスマホからWifiで直接RaspberryPi 3にアクセスできるようにするのが目的です。
1:1接続ならアドホックモードもありますが、ここでは1:N接続できるようにします。そして有線LANを接続したら、そちらからもアクセスできるようにしたいのです。

Apmode01

では早速はじめましょう。 基本的には昨年の方法に沿ってやっていきます。

 

 

raspi-configで国を設定する

まずは raspi-config で、国を設定してください。そうしないとwifiがEnableされません。

ここでは割愛しますが、ここの中央あたりをみると分かりやすいかも。

4 Localisation Options

   > I4 Change Wi-fi Country

        >  JP Japan

 

eth0、wlan0の名称を使う

Raspbian stretchになってからmacアドレスを基にした固有名称で呼ぶようになっていて使いにくくなっているので、/boot/cmdline.txt の末尾に下記を追記します。

net.ifnames=0

これでeth0、wlan0として指定することが出来るようになります。

無くても大丈夫になっている??  さすがにあの仕様は嫌われたのかも。 

 

 

ソフトウェアのインストール

avahi、hostapd、dnsmasqという3つのソフトウェアを使って実現しています。 avahiはRaspbianに最初から入っているので、残り2つをインストール&設定していきます。

sshでログイン後のコマンドです。ピンク文字がコマンド。青文字はファイル編集内容です。コピペしてください。

sudo apt-get update

sudo apt-get install hostapd dnsmasq -y

とコマンドを打ってインストールします。

hostapd : アクセスポイントのソフト。

dnsmasq : ホスト名とIPアドレスを覚えるDNSサーバソフト。

今回、dnsmasqはシンプルなDHCPサーバとして使用しています。ホスト名など覚えません。 つまり本来のDNSの機能を使っていません。

 

 

DHCPクライアント設定

sudo nano /etc/dhcpcd.conf  で開いて以下を追記します。(コメントアウト「行の先頭の # 」を取って編集してもよい。)

# define static profile
profile static_eth0
static ip_address=192.168.1.50
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

# fallback to static profile on eth0
interface eth0
fallback static_eth0

denyinterfaces wlan0

interface wlan0
static ip_address=172.24.1.1/24
static routers=172.24.1.1
static domain_name_servers=172.24.1.1
static broadcast 172.24.1.255

 

dhcp割り当てに失敗したときに、fallbackで(固定)IPアドレスを指定しています。ご自身のネットワーク環境に合わせてください。これを指定しないとAPモード時にdhcpクライアントが機能しなくなります。ここがミソでした。

また、wlan0のIPアドレスもここに書きます。

以前は/etc/network/interfacesにwlan0のIPアドレスを書いていましたが /etc/dhcpcd.conf で集中管理するようにしています。新しいやり方に則ったカタチです。

ctrl+oで保存。 ctrl+x で閉じます。

 

 

hostapdの設定(AP設定)

sudo nano /etc/hostapd/hostapd.conf で新規ファイルを作って下記を書き込みます。 

interface=wlan0
driver=nl80211
ssid=
Pi3-AP
hw_mode=g
channel=
6
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=
raspberry
rsn_pairwise=CCMP

 

以上、ここまでです。 保存して閉じます。
太字の部分のSSIDやパスフレーズ(8文字以上)は任意で変更することが出来ます。というか、セキュリティ面から考えると必ず変更するべきです。

チャンネルは空いているところをandroidアプリのWifi Analyzerなどで探して指定してください。

この設定ファイルをhostapdに登録します。

sudo nano /etc/default/hostapd  で開いて下記の1行を追記します。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

 

ht_capab の [HT40] では チャンネル「1~9」、 [HT40-] ならチャンネル「5~13」 が使えます。

Wifi_2

<< 2.4GHz wifiのチャンネル分布図  こちらからの転載 >>

※Pi 3 B+の 2.4G/5G Dual AP化はこちらを参考にすれば良いかもしれません。

 

 

dnsmasqでのDHCPサーバー設定

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

sudo nano /etc/dnsmasq.conf   で下記を書き込みます。

interface=wlan0
listen-address=172.24.1.1
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=172.24.1.50,172.24.1.100,12h

ここまで、一気にコピペしてください。 保存して閉じます。

172.24.1.50 から 172.24.1.100 までの50アドレスをDHCP用として登録しています。

 

 

ソフト起動&リブート

sudo service hostapd start

sudo service dnsmasq start 

sudo reboot

一旦、再起動します。

これで繋がるはずだったのですが接続できませんでした。パスワード認証までは通るもののdhcpサーバからIPアドレスが降ってきません。

 

 

なぜかdnsmasqの起動に失敗している

systemctl status dnsmasq で状態を見てみると起動に失敗しています。

ということで、sudo nano /etc/rc.local で exit 0 の上に以下を追記します。

service dnsmasq stop
sleep 8
service dnsmasq start

dnsmasqを一旦止めて、数秒まってから再起動しています。

5秒くらいのスリープでもPi 3なら大丈夫なのですが、Pi ZERO W ではたまに失敗します。 ZERO Wを使うなら8秒にする方が安心です。

 

以上で設定完了です。

お疲れ様でした。

 

 

さらにIPv4をFORWARDING してみましょ

こうしてRaspberryPi 3をWifi APにしても、接続した端末からインターネット上に出て行くことができません。タブレットからネットへアクセスしたくなったとき既設のWifiルーターへと接続しなおすのは面倒です。

Rooting

ようは、RaspberryPi 3がWifiルーターと同様の機能をもってしまえば済む話です。

上のところまででアクセスポイントとして動作しているため、ルーティング、フォワーディングするだけWifiルーター化できます。

 

IPv4 フォワードをEnableする

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

sudo nano /etc/sysctl.conf  で開いて下記を追加 (というか該当箇所のコメントアウト # を外す)

net.ipv4.ip_forward=1

 

iptables でルーティング、フォワーディングの設定(NAT設定)

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

 

iptablesをセーブします

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

sudo nano /etc/rc.local  で exit 0 より上の行に下記を追加して再起動時にiptablesをレストアするようにします

iptables-restore < /etc/iptables.ipv4.nat

 

再起動すれば完了です。

これで、Pi 3上のサーバーにもアクセスでき、さらにインターネットにも繋げることが出来ます。

Pi 3のWifi-APからネットに繋げられるということでセキュリティー面には十分お気をつけください。少なくともパスフレーズは変更してください。 また、WEPは絶対に使わないでください。 その他、インターネット側からの攻撃などもあるかもしれませんので、ご理解いただける方のみ参考にしてください。

 

 

参考サイト

https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/

https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md

http://kassyjp.ninja-web.net/ras/jessie/bridge.htm

 

 

にほんブログ村 PC家電ブログ PCオーディオへ にほんブログ村
ブログランキングに参加中です。 めざせ1位! 
もしよろしければ「ぽちっと」お願いします。 

« 新プロテクタ基板PRT-02とDC-ARROW基板 | トップページ | shairport-syncをRaspbianにインストールしてAirPlayレシーバーに »

Raspberry Pi」カテゴリの記事

コメント


[url=http://ukzakon.ru] Переуступка долга [/url] - [url=http://ukzakon.ru]ukzakon.ru[/url]

ロシア語? よめません。

やりたいことがドンぴしゃりの内容で助かりました.

RasPi3をWIFI経由でスマフォから遠隔操作できるようになりました.

デバッグ時は有線のEthernetを使用するので,まさに
ぴったりの内容です.

ありがとうございました.

randi さん

遠隔操作系の活用ですか。 ラスベリーパイは、色んな使い方ができて面白いですよね。

お役に立てたようで良かったです。

こちらこそありがとうございます.

他にも沢山,勉強になる記事を書かれていますね.

RasPi3はロボット工作も楽しいですよ.
ぜひいらしてください.

randiさん

いいですね。ロボット工作。

はじめまして。
ad hoc通信をしたく、上記の通りにしたのですが、AP名すら表示されません。どん詰まりになってしまいました。良いお知恵を拝借できればありがたいのですが。

上記の状態からの詳細になります。

小生、ラズパイゼロWを使っております。
AP名も表示されず、ifconfigやstatusをみても、正常に見えており、どん詰まり状態から調べた結果になります。
ゼロWなので、下記の有線LAN設定を消してみたところ、WiFi上ではAP名が表示されるようになりましたが、ifconfigで「172.24.1.1」が表示されず、スマホからコネクトもされないです。
「/etc/dhcpcd.conf」の
profile static_eth0



fallback static_eth0
#までコメントアウト


denyinterfaces wlan0

interface wlan0
static ip_address=172.24.1.1/24
static routers=172.24.1.1
static domain_name_servers=172.24.1.1
static broadcast 172.24.1.255

「dhcp割り当てに失敗したときに、fallbackで(固定)IPアドレスを指定しています。ご自身のネットワーク環境に合わせてください。これを指定しないとAPモード時にdhcpクライアントが機能しなくなります。ここがミソでした。」

っと、書かれてありましたが、ゼロWのように有線LANがない場合の対象方法が分かると助かります。
ご助言お願いいたします。

Sho さん

> ifconfigやstatusをみても、正常に見えており、どん詰まり状態から調べた結果になります。

この時点でのアクセスはHDMI画面でしょうか?

全て記入した状態で、有線LANがないZERO WでもAP動作します。

有線LANがなくても、fallbackに適当に何か書いてください。


いろいろ試行錯誤していて、やっと動作した! 

という設定ができたあと、使っていないだろう項目(fallbackなど)をコメントアウトしたら、動作しなくなりました。 理由はよく分かりません。使っていないハズなんですけどね。


試しに、Z-MPDをSDカードに入れてみて、ifconfigなどの情報を見てみるというのも良いかもしれません。
http://nw-electric.way-nifty.com/blog/2018/05/z-mpd-ap-b90a.html

たかじんさん。
ご助言ありがとうござます。

端折らずに起動すると、WiFi上でAP名が表示されないです。
AP名が出ない原因を探しております。
Eth0を設定しているのをコメントアウトすると、表示されるのですが。。。
何かコンフリクトを起こしているのでしょうか?

追伸
リブートすると、SSH接続が出来なくなるので、HDMIです。
Z-MPDで試して見ますね。

ありがとうござます。

たかじんさん。

Z-MPDを解凍して試したところ、ちゃんと起動しました。
設定ファイルを見比べたところ、「wpa_pairwise=TKIP」くらいしか違いがなかったです。

自分のシステムで、Dnsmasqを停止&起動をしてみると、「Job for dnsmasq.service failed decoause the control process exited with error code. See "systemctl status dnsmasq.service" and "journalctl -xe" for details.」と出てます。

ご助言があると助かります。

Sho さん

> 設定ファイルを見比べたところ、「wpa_pairwise=TKIP」くらいしか違いがなかったです。

そこですね。 それで動かないんでしょうね。


wpa_pairwiseとrsn_pairwiseのパラメータ設定は私も少し苦労しました。
記事中の設定から変更するのであれば、
https://qiita.com/JhonnyBravo/items/5df2d9b2fcb142b6a67c
あたりが参考になるかと思います。他にももっと解りやすいサイトがあったのですが。。。 見失いました。

hostapd設定を変えたあとは、hostapdを再起動したあとにdnsmasqを再起動すれば、本来であれば反映されると思うのですが、これもうまくいきません。

手間がかかりますが、毎回OSを再起動して設定が有効かどうかをチェックしてみてください。

たかじんさん。

「wpa_pairwise=TKIP」を追加して見たところ、やはりダメでした。

真っさらな、SDカードにOSだけ入れて、ad hoc通信が稼働したら自分のアプリを入れると言う実験をしようと思います。

それでもダメだったら、Z-MPDのad hoc通信が動いているのを、稼働しているアプリをアンインストールして、自分のアプリを入れてみようと思っています。こちらのアンインストールについて質問するかも知れませんかよろしくお願いします。

たかじんさん。

・真っさらなSDカード
・ラズパイ3(テスト用に変更)
・Raspbian Stretch Lite(2018.04.18)

上記の記事通りの手続きを行ないましたが、やはりダメでした。
Z-MPDとの違いをもう一つ見つけました。

$ systemctl status hostapd

の結果が違っていますね。

・Z-MPDだと
Active: active (running) .....

・上記の手続きだと
Active: active (exited) .....

・更にエラーメッセージがありました!
.... raspberrypi hostapd[589]: Starting advanced IEEE 802.11 management: hostapderror: unexpectedly disconnected from boot status deamon
... raspberrypi hostapd[589]: failed!

この二つのエラーメッセージが気になります。Z-MPDの当時の設定と、今回の記事の違いなのか、hostapdの仕様変更なのかが小生だと区別つきません。

お手数ですが、ご助言をお願いします。

Sho さん

なるほど。 仕様が変わったのかもしれませんね。

http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian_lite/images/raspbian_lite-2018-03-14/

を使っても、apt-getで取得されるソフトウェアの方がバージョンUPしていると同じ結果かもしれません。

ひとつ言えるのは、hostapdでエラーが出ていることが分かったので、そこを解決していくのが近道かと思います。

まあ、こういうバージョンによる設定の違い、仕様の違いを乗り越えて行くのがLinuxの面白いところであり、面倒なところですね。

海外サイトも含めて検索するか、ひたすら設定項目をシラミ潰し的にトライしていくか、です。

たかじんさん。

やはり、Ver.2018.03.14でも変わらなかったです。
hostapd関連で海外サイトをみて、何とか例のエラーメッセージを消せる事が出来ましたが、問題が発生しました。

・hostapd、dnsmasqのプロセスが立ち上がってる状態から
⇒自動取得だと、一瞬繋がったが切れてしまう(AP名がその後消える)
⇒IP固定だと、一瞬繋がったが切れてしまう(AP名がその後消える)

・hostapdのみプロセスが立ち上がってる状態から
⇒自動取得だと、繋がらない(当然の如く)
⇒IP固定だと、一瞬繋がったが切れてしまう(AP名がその後消える)

・$ sudo hostapd /etc/hostapd/hostapd.conf
⇒上記のコマンドでも事象は同じ結果になった

⇒AP名が見えてるのが、5〜15secくらいでした。

やはり、hostapdが原因のような感じですかね。この問題は追って、自分の研究課題として追い追いと調査をします。その後、分かった事があればご報告します。


最終手段として、「Z-MPD」のイメージファイルだとad hoc通信が稼働しているので、こちらのプロセスを停止し、アンインストールして、自分のアプリを入れる方向にします。
そこで、ご相談なのですが、Z-MPDで稼働しているアプリの種類とそれらのアンイストール方法もわかればお教えて頂けませんでしょうか?

お手数をおかけします。


追伸
Sabreberry32、ケース、専用アクリル板等を購入したまま、暫く組み上げてないです。

Sho さん

先ほどダウンロードした2018-04-18-raspbian-stretch-lite に
上の記事のままの設定をしてみたら、APが見えて、接続できましたよ。ついでにIPv4 FORWARDINGまでやってみました。


どこかコピペミスがあるのではないでしょうか?

見えにくい「スペース」に気をつけてください。全角スペースがまじっていたら削除して下さい。

一番あやしいのは /etc/hostapd/hostapd.conf ですかね。。。

一度、半角、全角スペースが判別できるテキストエディタにコピーしたあとに再びコピペしてみるというのも良いかもしれません。

検証に使ったのはPi 3B+です。

http://fast-uploader.com/file/7084628567664/

こちらにSDカードイメージを置いておきます。上の記事をそのままコピペしただけです。

独自に設定変更したり、書いている内容を端折ったりする前に、まずは正しくコピーするスキルを身に付ける事が大切かと思いました。

HDMI接続で画面を出してキーボードで入力するとコピペ出来ませんから、ssh接続して設定をするのがおススメです。

Z-MPDは、色んなサービスを削除したり止めたりしているので、他のことをするベースには向いていないと思います。
全てを憶えている訳ではありませんが、例えばHDMI画面からはログインすら出来ません。

たかじんさん。
お手数をおかけしています。

原因が判明しました。単純なことでした。

/etc/wpa_supplicant/wpa_supplicant.conf

このファイルのWiFiのSSID&PASSを全て(上3行を除く)削除したら自分のシステムでも行きました。ラズパイにapt-get等するために、ネットワーク(WiFi)に繋いで、上記のインスト後にネットワーク設定をしていたため、親機(Host)ではなく、子機(Client)になろうとしてAP名が数秒で消えてしまっていたようです。

お騒がせいたしました。それと、親切にご対応していただいてありがとうござました。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/587107/66749164

この記事へのトラックバック一覧です: Pi 3をWifi AccessPoint化(Raspbian stretch Lite 2018):

« 新プロテクタ基板PRT-02とDC-ARROW基板 | トップページ | shairport-syncをRaspbianにインストールしてAirPlayレシーバーに »

サイト内検索

Sponsors link

2018年8月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ