HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
English Translate 中文翻訳
LINK
BACK
 

[NEW] 2016/09/02

Raspberry Pi 3に内蔵の WiFiを使った無線LANアクセスポイント化 hostapd + isc-dhcp-server編 Raspberry Pi 3に内蔵の WiFiを使った無線LANアクセスポイント化 hostapd + isc-dhcp-server編

(ラズパイを無線LANアクセスポイントにする方法(詐欺サイト+アダルトサイトブロック機能付き))

Tags: [Raspberry Pi], [電子工作], [セキュリティ]






● Raspberry Pi 3 Model B

 Raspberry Pi3 Model B RPI2 RPI3

 大人気の CPUボードの Raspberry Piに WiFiと Bluetoothが搭載されたモデルが新発売となりました。
 以前から Raspberry Pi 2を買おうかどうか迷っていましたが、Raspberry Pi 3 Model Bの発売を機に購入を決意してラズベリアンになる事にしました。

 ※ ラズパイの OS Raspbianはバージョンが上がる毎に過去の版と OSの内部の作りが変わり、過去に書かれた製作記事(例えば Raspbian Wheezyの時代の記事)がそのままではエラーが出たりして動かない事が有ります。
 ※ 当方のホームページのラズパイ記事は全て Raspberry Pi 3 Model Bと Raspbian Jessieの組み合わせで動作確認をしております。
(ただし、将来的に新しい Raspbian OSが出た場合に、当方の Raspbian Jessieを基にした内容がそのままでは動かない可能性が有ります。)


● Raspberry Pi3を無線LANアクセスポイントとして設定する方法 hostapd + isc-dhcp-server編

 Raspberry Pi3の WiFi無線 LANを無線LANアクセスポイントとして設定して、ラズパイに WiFi機器を接続して有線 LANを使用出来る様にします。

 前回はルーター側の DHCP機能を使い Raspberry Pi3側は単なる有線と無線のブリッジとしてのセットアップでした。

[NEW] 2016/04/20
Raspberry Pi 3 Model Bの WiFiを無線LANアクセスポイント化 hostapd + bridge-utils編
Raspberry Pi 3 Model Bの WiFiを無線LANアクセスポイント化 hostapd + bridge-utils編

  ラズパイ3に内蔵の WiFiを無線LANアクセスポイントにして通信環境を設定する方法

 今回は isc-dhcp-serverを使用して有線側と無線側を切り離し、無線LANアクセスポイント側に DHCP機能を持たせます。DNSに Norton ConnectSafeを使用する事で詐欺サイト+アダルトサイトブロックとしても機能するようにします。

 下記の設定方法は最新の Raspberry Pi3の RASPBIAN JESSIE OSに対応しています。(動作確認済み 2016/08)
RASPBIAN JESSIE download
 Full desktop image based on Debian Jessie
 Version:May 2016
 Release date:2016-05-27
 Kernel version:4.4

 スループットは、
 ・ラズパイ無しのブロードバンドルーターと有線で直結: 60.0Mbps
 ・ラズパイ経由 hw_mode=g 2.4GHz: 14.8Mbps
 ・ラズパイ経由 hw_mode=b 2.4GHz: 14.8Mbps
 ※ hw_mode=a、hw_mode=adを指定すると hostapdが動きませんでした。

 ラズパイ3の無線チップは Broadcom BCM43438 IEEE 802.11 b/g/nだが nは非対応。
 ・IEEE 802.11b (最大11Mbps)
 ・IEEE 802.11g (最大54Mbps)
 ・IEEE 802.11n (最大600Mbps)

Raspberry Pi only supports the 2.4 GHz WiFi network.
 WLANは、標準の802.11b、gおよび後方に応じてテストされています。5GHz帯は使用されません。
 WLAN wurde nach den Standards 802.11b, g und n getestet. Das 5-GHz-Band wird leider nicht genutzt, sondern nur das überfüllte 2,4-GHz-Band.

・Raspberry Pi3を無線LANアクセスポイントとして設定する方法
Raspberry Pi3を無線LANアクセスポイントとして設定する方法



IPアドレス備考
市販のブロードバンドルーター192.168.1.1DHCPサーバ機能有り
(割り当て 192.168.1.30 ~)
ラズパイの有線 LAN側市販のブロードバンドルーターから DHCPで割り当て
ラズパイの無線 LAN側192.168.123.234(固定 IP設定)DHCPサーバ機能有り
(割り当て範囲 192.168.123.100 ~ 192.168.123.120)
セキュリティ DNS設定による保護機能
 ※ 無線 LAN側の IPアドレスをその他の IPアドレス郡と区別が付く様に 192.168.123.234と言う変わった設定にしています。


● DHCPサーバとして isc-dhcp-serverを使用する方法

●コマンド入力やエディタでの編集作業が面倒な場合の一括実行用のコマンドラインコピペ用
 とりあえずコマンドラインのコピペで手軽に動かしたい人向け。
 各コマンドの解説ページは別途作成予定。

### この行を実行して、
sudo apt-get -y install hostapd isc-dhcp-server


### 以下は最後までコピペで連続で一括実行出来る
### interfacesの編集
sudo sed -i -e "s/^iface wlan0 inet manual/iface wlan0 inet static/" /etc/network/interfaces
sudo sed -i -e "16s/^    wpa-conf/#    wpa-conf/" /etc/network/interfaces
sudo sed -i -e "17s/^$/    address 192.168.123.234\n    netmask 255.255.255.0\n    network 192.168.123.0\n    broadcast 192.168.123.255\n/" /etc/network/interfaces


### /etc/dhcpcd.confの編集
sudo bash -c "echo denyinterfaces wlan0 >> /etc/dhcpcd.conf"
tail /etc/dhcpcd.conf

sudo service dhcpcd restart
sudo ifdown wlan0; sudo ifup wlan0

### wlan0の IPアドレス設定の確認
ip addr | grep "wlan0" | grep "inet"

### /etc/dhcp/dhcpd.confの編集
sudo sed -i -e "s/^option domain-name/#option domain-name/" /etc/dhcp/dhcpd.conf
sudo sed -i -e "s/^#authoritative/authoritative/" /etc/dhcp/dhcpd.conf

sudo bash -c "echo subnet 192.168.123.0 netmask 255.255.255.0 { >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     range 192.168.123.100 192.168.123.120\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     option routers 192.168.123.234\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     option broadcast-address 192.168.123.255\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     option domain-name \"local_pi_dns\"\; >> /etc/dhcp/dhcpd.conf"
# DNSとして安全の為に Norton ConnectSafeの DNS policy C(Security + Pornography + Other)を設定している
sudo bash -c "echo     option domain-name-servers 199.85.126.30, 199.85.127.30\; >> /etc/dhcp/dhcpd.conf"
# Google DNSを使う場合は上記をコメント化して下記のコメントを取って実行する。
# sudo bash -c "echo     option domain-name-servers 8.8.8.8, 8.8.4.4\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     default-lease-time 600\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     max-lease-time 7200\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo } >> /etc/dhcp/dhcpd.conf"

cat /etc/dhcp/dhcpd.conf | grep "option domain-name"
cat /etc/dhcp/dhcpd.conf | grep "authoritative;"
tail /etc/dhcp/dhcpd.conf

### /etc/default/isc-dhcp-serverの編集
sudo sed -i -e "s/^INTERFACES=\"\"/INTERFACES=\"wlan0\"/" /etc/default/isc-dhcp-server


### hostapd.confの設定
sudo bash -c "zcat /usr/share/doc/hostapd/examples/hostapd.conf.gz > /etc/hostapd/hostapd.conf"
cp /etc/hostapd/hostapd.conf ~/hostapd.conf
sed -i -e "s/# driver=hostap/driver=nl80211/g" ~/hostapd.conf
sed -i -e "s/ssid=test/ssid=WIFISSID/g" ~/hostapd.conf
sed -i -e "s/#wpa=1/wpa=2/g" ~/hostapd.conf
sed -i -e "s/#wpa_passphrase=secret passphrase/wpa_passphrase=PASSWORD/g" ~/hostapd.conf
cat ~/hostapd.conf
sudo mv /etc/hostapd/hostapd.conf /etc/hostapd/hostapd.conf.bak
sudo cp ~/hostapd.conf /etc/hostapd/hostapd.conf

cp /etc/default/hostapd ~/hostapd
sed -i -e "s/#DAEMON_CONF=\"\"/DAEMON_CONF=\"\/etc\/hostapd\/hostapd.conf\"/g" ~/hostapd
cat ~/hostapd
sudo mv /etc/default/hostapd /etc/default/hostapd.bak
sudo cp ~/hostapd /etc/default/hostapd


### /etc/sysctl.confの設定
sudo sed -i -e "s/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/" /etc/sysctl.conf
cat /etc/sysctl.conf | grep ip_forward

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

### iptablesの設定
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

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

### /etc/rc.localの編集
sudo sed -i -e "s/^exit 0/\niptables-restore < \/etc\/iptables.ipv4.nat\n\nexit 0/" /etc/rc.local

### この手順では isc-dhcp-serverサービスが自動起動が正常に行なわれる

### Disable IPv6
sudo bash -c "echo \# Disable IPv6 >> /etc/sysctl.conf"
sudo bash -c "echo net.ipv6.conf.all.disable_ipv6 = 1 >> /etc/sysctl.conf"

### Raspberry Piを再起動
sudo reboot

### これで Raspberry Piが WiFiアクセスポイントになります。


● DNSサーバの設定でちょっとイイ話

 上記の DNSサーバの設定では Nortonが提供する Norton ConnectSafeの DNS policy C(Security + Pornography + Other)を使用して、セキュリティ+アダルト+その他の危険なサイトをブロックしていますが、それ以外にも特徴的な公開 DNSサーバが有ります。

[NEW] 2016/09/02
セキュリティ対応の公開 DNSを利用して Webサイトやネットワークの安全性を高める方法
セキュリティ対応の公開 DNSを利用して Webサイトやネットワークの安全性を高める方法

  ウイルス感染や不正な詐欺サイト、アダルトサイトへのアクセスを未然に防ぐ事が出来る


● DHCPサーバとして dnsmasqを使用する設定方法。

 isc-dhcp-serverの他に DHCPサーバとして dnsmasqを使用する方法も有ります。dnsmasqは DNS機能も持っており、自前でブロックするホストを設定出来るので dnsmasqの方が自由度が高くて良いと思います。

[NEW] 2016/08/30
Raspberry Pi 3の WiFiを広告ブロック機能付きの無線LANアクセスポイント化 hostapd + dnsmasq編
Raspberry Pi 3の WiFiを広告ブロック機能付きの無線LANアクセスポイント化 hostapd + dnsmasq編

  ラズパイ3に内蔵の WiFiをアドブロック機能付きの高機能ルータにする方法(広告+詐欺+アダルトブロック機能付き)


● 下記の手順は問題が有りますが、参考の為に残しています。

 下記の手順(wlan0の IPアドレスの指定方法が上記の手順とは異なる)では isc-dhcp-serverサービスが自動起動に失敗する問題が有ります。

 何の事は無く、 /etc/network/interfacesで静的に IPアドレスを設定すれば問題が発生しない。

### この行を実行して、
sudo apt-get -y install hostapd isc-dhcp-server


### 以下は最後までコピペで連続で一括実行出来る
### interfacesの編集
sudo sed -i -e "16s/^    wpa-conf/#    wpa-conf/" /etc/network/interfaces
cat /etc/network/interfaces

### /etc/dhcpcd.confの編集
sudo bash -c "echo interface wlan0 >> /etc/dhcpcd.conf"
sudo bash -c "echo static ip_address=192.168.123.234/24 >> /etc/dhcpcd.conf"
sudo bash -c "echo static routers=192.168.123.234 >> /etc/dhcpcd.conf"
tail /etc/dhcpcd.conf


### /etc/dhcp/dhcpd.confの編集
sudo sed -i -e "s/^option domain-name/#option domain-name/" /etc/dhcp/dhcpd.conf
sudo sed -i -e "s/^#authoritative/authoritative/" /etc/dhcp/dhcpd.conf

sudo bash -c "echo subnet 192.168.123.0 netmask 255.255.255.0 { >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     range 192.168.123.100 192.168.123.120\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     option routers 192.168.123.234\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     option broadcast-address 192.168.123.255\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     option domain-name \"local_pi_dns\"\; >> /etc/dhcp/dhcpd.conf"
# DNSとして安全の為に Norton ConnectSafeの DNS policy C(Security + Pornography + Other)を設定している
sudo bash -c "echo     option domain-name-servers 199.85.126.30, 199.85.127.30\; >> /etc/dhcp/dhcpd.conf"
# Google DNSを使う場合は上記をコメント化して下記のコメントを取って実行する。
# sudo bash -c "echo     option domain-name-servers 8.8.8.8, 8.8.4.4\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     default-lease-time 600\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo     max-lease-time 7200\; >> /etc/dhcp/dhcpd.conf"
sudo bash -c "echo } >> /etc/dhcp/dhcpd.conf"

cat /etc/dhcp/dhcpd.conf | grep "option domain-name"
cat /etc/dhcp/dhcpd.conf | grep "authoritative;"
tail /etc/dhcp/dhcpd.conf

### /etc/default/isc-dhcp-serverの編集
sudo sed -i -e "s/^INTERFACES=\"\"/INTERFACES=\"wlan0\"/" /etc/default/isc-dhcp-server


### hostapd.confの設定
sudo bash -c "zcat /usr/share/doc/hostapd/examples/hostapd.conf.gz > /etc/hostapd/hostapd.conf"
cp /etc/hostapd/hostapd.conf ~/hostapd.conf
sed -i -e "s/# driver=hostap/driver=nl80211/g" ~/hostapd.conf
sed -i -e "s/ssid=test/ssid=WIFISSID/g" ~/hostapd.conf
sed -i -e "s/#wpa=1/wpa=2/g" ~/hostapd.conf
sed -i -e "s/#wpa_passphrase=secret passphrase/wpa_passphrase=PASSWORD/g" ~/hostapd.conf
cat ~/hostapd.conf
sudo mv /etc/hostapd/hostapd.conf /etc/hostapd/hostapd.conf.bak
sudo cp ~/hostapd.conf /etc/hostapd/hostapd.conf

cp /etc/default/hostapd ~/hostapd
sed -i -e "s/#DAEMON_CONF=\"\"/DAEMON_CONF=\"\/etc\/hostapd\/hostapd.conf\"/g" ~/hostapd
cat ~/hostapd
sudo mv /etc/default/hostapd /etc/default/hostapd.bak
sudo cp ~/hostapd /etc/default/hostapd


### /etc/sysctl.confの設定
sudo sed -i -e "s/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/" /etc/sysctl.conf
cat /etc/sysctl.conf | grep ip_forward

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

### iptablesの設定
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

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

### /etc/rc.localの編集
sudo sed -i -e "s/^exit 0/\niptables-restore < \/etc\/iptables.ipv4.nat\n\nexit 0/" /etc/rc.local

### isc-dhcp-serverサービスが自動起動に失敗するので
### isc-dhcp-serverの自動起動を無効にして
sudo systemctl disable isc-dhcp-server
### /etc/rc.localに 10秒待って isc-dhcp-serverの起動処理を書く
sudo sed -i -e "s/^exit 0/\nsleep 10; service isc-dhcp-server start\n\nexit 0/" /etc/rc.local

### Disable IPv6
sudo bash -c "echo \# Disable IPv6 >> /etc/sysctl.conf"
sudo bash -c "echo net.ipv6.conf.all.disable_ipv6 = 1 >> /etc/sysctl.conf"

### Raspberry Piを再起動
sudo reboot

### これで Raspberry Piが WiFiアクセスポイントになります。


● isc-dhcp-serverが自動起動に失敗する場合の対処方法(確認済み)

 isc-dhcp-serverが自動起動に失敗する原因は isc-dhcp-serverが起動する時点で wlan0の IPアドレスが確定していないから。

 wlan0の IPアドレスの設定方法を下記に変更する。

sudo nano /etc/network/interfaces
 の wlan0設定に IPアドレスを設定する
auto wlan0
iface wlan0 inet static
address 192.168.123.234
netmask 255.255.255.0


# sudo sed -i -e "s/^allow-hotplug wlan0/auto wlan0/" /etc/network/interfaces
sudo sed -i -e "s/^iface wlan0 inet manual/iface wlan0 inet static/" /etc/network/interfaces
sudo sed -i -e "16s/^ wpa-conf/# wpa-conf/" /etc/network/interfaces
sudo sed -i -e "17s/^$/ address 192.168.123.234\n netmask 255.255.255.0\n/" /etc/network/interfaces


 isc-dhcp-serverサービスの自動起動を有効にする
sudo systemctl enable isc-dhcp-server

 /etc/rc.localの isc-dhcp-serverサービス起動設定を無効にする
sudo sed -i -e "s/^sleep 10/#sleep 10/" /etc/rc.local
cat /etc/rc.local

 再起動する
sudo reboot

 再起動後に isc-dhcp-serverのサービス状態を確認する
systemctl status isc-dhcp-server.service

● isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server)
Active: active (running) since Sun 2016-09-04 08:11:00 UTC; 31s ago
Process: 559 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/isc-dhcp-server.service
└─651 /usr/sbin/dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhc...




Tags: [Raspberry Pi], [電子工作], [セキュリティ]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入出来る通販ショップ一覧まとめ
Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入出来る通販ショップ一覧まとめ

  ラズパイゼロW Pi Zero Wirelessモデルを海外通販で先行して購入し、サクッと入手する方法

Raspberry Pi3で安定して使える相性の無い microSDカードのまとめ
Raspberry Pi3で安定して使える相性の無い microSDカードのまとめ

  ラズパイ3で安定して使える microSDカードを購入する Teamと SanDiskは絶対に買わない

Raspberry Pi 3 Model Bに専用カメラモジュールを接続する方法
Raspberry Pi 3 Model Bに専用カメラモジュールを接続する方法

  ラズパイに専用カメラモジュールを接続して Raspbianで写真の静止画撮影や動画を録画する方法

Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ
Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ

  ラズパイの Raspbian OSのコマンドラインで使用する便利コマンド、負荷試験や CPUシリアル番号の確認方法等も

Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳
Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳

  ラズパイ公式フォーラムの「The Raspberry Pi 3 Model B Q&A thread」の日本語訳

Raspberry Pi 3で GPIO端子の I2C機能を有効化する方法
Raspberry Pi 3で GPIO端子の I2C機能を有効化する方法

  ラズパイ3の GPIO端子の I2C機能を有効にして各種センサーを繋げる方法まとめ

大人気の CPUボード、Raspberry Pi 3 Model Bで作ってみよう
大人気の CPUボード、Raspberry Pi 3 Model Bで作ってみよう

  Raspberry Piの開発環境の構築やタッチパネル付き液晶ディスプレイや各種センサーの使い方まとめ


Raspberry Pi 3、シングルボードコンピュータ ラズパイ3 Raspberry Pi関連はこちらへまとめました
 下記以外にも多数のラズパイ関係の記事が有ります。
 (I2C制御、GPIO制御、1-Wire制御、シリアル通信、日本語音声合成、日本語音声認識、中国語音声合成、MeCab 形態素解析エンジン、赤外線リモコン制御、秋月 I2C液晶モジュール、KeDei 3.5インチ液晶、HDMI 5インチ液晶、NFCカードリーダ、コマンドライン操作方法等)
Raspberry Pi 3に HDMI接続の 800x480 5インチ TFT液晶を接続して使用する方法
Raspberry Pi 3 Jessieで LIRC機能を使って学習リモコン、赤外線リモコンを送受信する方法
Raspberry Pi 3の WiFiを広告ブロック機能付きの無線LANアクセスポイント化 hostapd + dnsmasq編
Raspberry Pi 3の Bluetoothで ブルテザで通信する方法(Bluetooth編)
Raspberry Pi 3で日本語音声を合成して喋らせる方法(Open JTalk編)
Raspberry Pi 3に USB Micを接続して日本語の音声認識をする方法(Julius編)
Raspberry Pi 3の GPIOに LEDとスイッチを接続して Lチカする方法
Raspberry Pi 3の GPIOに LEDとスイッチを接続してシャットダウンボタンを実装する方法
Raspberry Pi 3で GPIO端子の I2C機能を有効化する方法
Raspberry Pi 3の GPIOに I2C通信方式の気圧計 BMP280を接続する方法
Raspberry Pi 3に I2C通信方式の NFCリーダライタ PN532を接続して NFC FeliCaカードを読む方法
Raspberry Pi 3でネットワーク ライブカメラを構築する方法 Motion編
Raspberry Pi 3でネットワーク ライブカメラを構築する方法 MJPG-streamer編
Raspberry Pi 3 Model Bで動画処理アプリ FFmpegをコンパイルする方法
Raspberry Pi3の X-Window Systemに Windowsのリモートデスクトップから接続する方法
Raspberry Pi3に WebRTCの STUN/TRUNサーバと PeerJSサーバをインストールする方法


Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板
Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板

  Espressif ESP8266 ESP-12-E NodeMCU V1 ESP12 CP2102

BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)
BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)

  レーザー彫刻機、カラー液晶の DIYオシロ、Arduinoや Raspberry Pi用の小型カラー液晶



[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外はweb構成の変更で移動する場合があります)
Copyright (c) 2016 FREE WING, Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_wifi_wireless_access_point_isc_dhcp_server/