ページ

ラベル Raspberry Pi の投稿を表示しています。 すべての投稿を表示
ラベル Raspberry Pi の投稿を表示しています。 すべての投稿を表示

2021年4月25日日曜日

NETGEAR製スマートスイッチ GS308T を使用して,NIC が1つしかない PC でルーターを自作する

我が家ではRaspberry Pi にUSB-NIC を接続することで,LAN ポート(NIC)を増設してルーター化していますが,以下のサイトで紹介されているようにタグVLAN を使用することで,LAN ポートを増設すること無く Linux PC をルーター化できることが判ったので,早速試してみました.

Linuxルータのタコ足配線を解消しよう ~ タグVLAN(IEEE 802.1Q)の活用
http://dsas.blog.klab.org/archives/50391881.html
LinuxとVLANで作る、シンプル&スケーラブルネットワークの極意
https://www.irori.org/doc/infra/wd41.html

VLAN に対応したスイッチングハブを所持していなかったため,NETGEAR 製の GS308T を購入しました.5,000 円ちょっとでこれだけ高機能な代物が手に入るのは本当に凄いことだと思います.

近い将来,ネットワークカメラも導入したいと考えているので,PoE 対応製品にすることも考えましたが,GS308T と比べてだいぶ値段が上がってしまうことと,配線の関係から結局ネットワークカメラもWi-Fi 接続になるような気がしたので,PoE については見送ることにしました.

2021年3月23日火曜日

Raspberry Pi ルーターでポートフォワーディングして,LAN 内の VPN に接続する.

最近,自作ルーターの話題ばかりですが今回はポートフォワーディングする話.

なお,これまでのルーターの設定は以下の記事に纏めてある.
Raspberry Pi を楽天ひかりのIPv4 over IPv6(DS-Lite・Xpass)に対応したルーターにする
Raspberry Pi ルーターで DS-Lite と PPPoE 接続を共存させる
Raspberry Pi ルーターに Dynamic DNS を導入する

ざっくり言うと,ラズパイをIPv4 over IPv6接続に対応したルーターに設定することで,回線の混雑を避けて通信速度を維持しつつ,PPPoE接続も共存させることで外部からのアクセスを可能にし,Dynamic DNSによってホスト名による外部からのアクセスを可能にしている.


今回はさらに,ポートフォワーディング機能を追加する.

2021年3月18日木曜日

Raspberry Pi ルーターに Dynamic DNS を導入する

IPv4 over IPv6 接続した Raspberry Pi ルーターに PPPoE 接続を共存させ外部から IPv4 で接続することができるようになったので,Dynamic DNS を導入した.


これまでの設定は以下の記事に纏めてあるので,最初から読みたい方はどうぞ.
Raspberry Pi を楽天ひかりのIPv4 over IPv6(DS-Lite・Xpass)に対応したルーターにする
Raspberry Pi ルーターで DS-Lite と PPPoE 接続を共存させる

今回は無料で使える No-IP を利用する.

初めに,https://www.noip.com/ にアクセスしてアカウントの作成とホスト名の取得を完了したら,以下の記事に従ってクライアントソフトをビルドする.ただし,ルート権限の取得と make install はしないようにする.

2021年3月14日日曜日

Raspberry Pi ルーターで DS-Lite と PPPoE 接続を共存させる

先日,楽天ひかりのIPv4 over IPv6 を利用するための設定方法をまとめたが,(下記参照)
Raspberry Pi を楽天ひかりのIPv4 over IPv6(DS-Lite・Xpass)に対応したルーターにする

今回はその続きとして,PPPoE による接続も共存させる方法.

なぜ,こんなことが必要かというと,DS-Lite方式の接続では,結局のところ,dgw.xpass.jp に対して作成したトンネルの出口をゲートウェイとして使っているので,ルーターがネットの世界と直接繋がっているわけではなく,SSH でルーターにログインしたり,Apacheを立ててHTTPでアクセスしたりすることができない.(正確にはIPv6を使えば接続可能だけど,できれば慣れ親しんだIPv4で接続したい)

これを実現するには,PPPoE の接続が必要になるが,ルーティングテーブルを適切に設定しないと,PPPoE 接続と,DS-Lite 接続のどちらを優先すべきかルーターが判断できなくなってしまう.

これを踏まえ今回は,DS-Liteと共存させるための,PPPoE 接続の方法及びルーティングテーブルの設定方法を記載する.

2021年3月7日日曜日

Raspberry Pi を楽天ひかりのIPv4 over IPv6(DS-Lite・Xpass)に対応したルーターにする

光回線の契約をソフトバンク光から楽天ひかりに乗り換えた.(一年無料なので,ソフトバンクに解約金を払っても十分にお釣りが来る.)

ソフトバンク時代は,IPv4 over IPv6を利用するのに光BBユニットのレンタルが必須だったが,楽天ひかりでは対応したルーターを用いれば専用機器をレンタルする必要はないので,Raspberry PiをDS-Lite・Xpassに対応させてルーターとして可動させた.

同時に,DHCP,RADVD,DNS,さらに,2.4GHz帯/5.0GHz帯のマルチSSD無線LANとしても可動させているので,その設定手順を備忘録として記録する.

最終構成は以下の通り.
 eth0   :ラズパイにある有線LANポート.スイッチングハブと接続する.
 eth1   :USB-NICで拡張した有線LANポート.ONUと接続する.
 wlan0  :ラズパイにある無線LANポート.5.0GHz 帯無線LANアクセスポイントとして動作させる.
 wlan1  :USBドングルで拡張した無線LANポート.2.4GHz 帯無線LANアクセスポイントとして動作させる.
 br0    :eth0,wlan0,wlan1をつなぐブリッジ.192.168.100.1/24に設定する.
 ds-lite:IPv4 over IPv6用のトンネル.

 br0 に DPCP及びRADVD を設定し,接続した機器には自動でIPv4アドレス及びIPv6アドレスを振るように設定.

2021年2月10日水曜日

【MySQL】 ソートで NULL を一番最後にするとき,IS NULL ASC としてはいけない理由.

少々挑戦的なタイトルですが,本当は IS NULL ASC で全然構いません.(笑)

ただ私が言いたいのは,魔法の呪文のように意味も分からず IS NULL ASC とするのはやめたほうが良い.
より厳密には,それだけ覚えてしまうのは勿体無い.ということです.

IS NULL ASC のように ORDER BY 句を用いれば,様々な条件でソートすることができるので,この記事では,
なぜ IS NULL ASC で NULL を後ろにできるのか実演しながら,より汎用的な条件付きソートについて考えていきます.

サンプルとして以下のようなテーブルを用意しました.(例によってラズパイを使っているので MariaDBですが,基本的に MySQL でも同じです)
 MariaDB [sample]> SELECT * FROM SAMPLE;
 +------+-------+
 | id   | value |
 +------+-------+
 |    1 |     0 |
 |    2 |    10 |
 |    3 |     4 |
 |    4 |  NULL |
 |    5 |     8 |
 |    6 |     1 |
 |    7 |     3 |
 |    8 |     2 |
 |    9 |  NULL |
 |   10 |    -5 |
 +------+-------+

2021年2月7日日曜日

【MySQL,MariaDB】 レプリケーションを設定する

データベースでマスタースレーブ型のレプリケーションを設定する方法を示す.
手元のラズパイ2台を使用するため,MariaDBで設定するが,基本的にはMySQLも同様の方法でできるはずだ.

データベースの初期設定手順は以下のエントリーを参照されたし.
WM×LI: Raspberry Pi にデータベースを構築する【MySQL,MariaDB】

Raspberry Pi のモデル名を確認する

性能が段違いなので,基本的なことはラズパイ4 にやらせているが,敢えてラズパイ4 からは切り離して可動させているサービスもあったりするので,我が家ではラズパイ3,ラズパイ2 もまだまだ現役だ.

基本,ホスト名で判別しているが,どのラズパイがどのモデルだったか分からなくなることが時々ある.

そんなときは,/proc/device-tree/mode を確認すると,モデル名が表示される.

2021年2月6日土曜日

Raspberry Pi で初回起動時からsshでアクセスする方法

何番煎じかわからないけれど,Raspberry Pi用のmicro SDカードにRaspberry Pi OSをインストールした直後の初回起動時からsshでアクセスできるようにする方法.

結論から言うと,/boot/ 直下に ssh という名前のファイルを置くだけ.

それでは細かい手順を解説します.

2020年6月20日土曜日

【pppoeconf】 Raspberry Pi で PPPoE 接続する

以前,以下のような記事を書いたが,そのときは WAN側のNICに DHCP で自動的に IP が付与されることを前提とした設定だった.今回は WAN 側で PPPoE 接続することで,本当の意味でルーターにできるようにする.

Raspberry Pi を 5.0GHz 無線アクセスポイント及びルーターにする

やり方は非常に簡単で,pppoeconf というツールを使って,ユーザー名とパスワードを入力するだけだ.

まず,pppoeconf ツールをインストールする
$ sudo apt install pppoeconf
(これから PPPoE 接続するんだから,ネットになんて繋がってねーよって人は,スマホでUSBテザリングでもして,何とかツールをインストールして欲しい)

インストールが完了したら,管理者権限でツールを起動する.
$ sudo pppoeconf

PPPoE 接続可能な NIC が検出されたら,接続方法等について色々と質問を受けるが,ユーザー名とパスワード以外は基本何も入力しないで Enter 連打すれば接続できる.

2020年5月2日土曜日

【ラズパイ × Dropbox】Dropbox-Uploader の使い方

Linux のコマンドラインから Dropbox を利用する方法として,とても有名なツールに Dropbox-Uploader がある.

そして,Raspberry Pi には専用のデスクトップアプリがないことから,Dropboxにアクセスする方法としては,Dropbox-Uploader がほとんど唯一の手段となっている.

先日,Raspberry Pi で Dropbox-Uplodaer のセットアップをやり直したので備忘録として手順を残す.

Gitをインストールする.
 # apt install git

Gitのインストールが完了したらリポジトリから clone する.
 $ git clone https://github.com/andreafabrizi/Dropbox-Uploader.git

Dropbox-Uploaderというフォルダが作成されるため移動し,dropbox_uploader.shを実行する.
 $ cd Dropbox-Uploader
 $ ./dropbox_uploader.sh

 This is the first time you run this script, please follow the instructions:

 1) Open the following URL in your Browser, and log in using your account: https://www.dropbox.com/developers/apps
 2) Click on "Create App", then select "Dropbox API app"
 3) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder
 4) Enter the "App Name" that you prefer (e.g. MyUploaderXXXXXXXXXXXXXXX)

 Now, click on the "Create App" button.

 When your new App is successfully created, please click on the Generate button
 under the 'Generated access token' section, then copy and paste the new access token here:

 # Access token: XXXXX

 (XXXXXは,以下1〜6の手順を実施しアクセスキーを生成後入力する)

 > The access token is XXXXX. Looks ok? [y/N]: y
   The configuration has been saved.

2019年12月8日日曜日

Raspberry Pi を 5.0GHz 無線アクセスポイント及びルーターにする


IPv4 over IPv6に対応させた記事に纏め直しています.こちらを参照ください.
WM×LI: Raspberry Pi を楽天ひかりのIPv4 over IPv6(DS-Lite・Xpass)に対応したルーターにする



【2020年7月24日追記】IPv6 に対応させました.
【2021年2月10日追記】DNS サーバも併用させました.

ようやく日本でも注文可能になったので早速,Raspberry Pi 4 を購入した.メモリ 4.0GB 搭載.Bluetooth 対応など,かなり機能が拡張されたが,個人的に熱いのは 5.0GHz帯の無線LANに対応したことだ.

今回はそのメリットを活かして,以前作成した無線LANルーターを 5.0GHz に対応させつつ,当時の欠点の克服,さらに今までに獲得したノウハウも詰め込んでいく.

一方,残念なことに5.0GHzの無線LAN に非対応の機器も僅かながら稼働中のため,USBドングルで拡張させ,2.4GHz の無線LAN も同時に動かす.

まず以前作成したルーターについては,下記の記事に残してある.
WM×LI: Raspberry Pi をルーター&無線LANルーター化する

このときは,eth0(WAN側の有線),eth1(LAN側の有線),wlan0(LAN側の無線) をすべて別セグメントに設定していたが,LAN側の有線と無線は同じセグメントにしたほうが便利なことが多い.長らくその手法がわからなかったが,ひょんなことから作成したラズパイのスイッチングハブ(下記,記事参照)を応用すれば,簡単に作れることがわかった.
WM×LI: Rapberry Pi をスイッチングハブ化する 【bridge-utils】

また,起動時の設定で cron の @reboot を使用していたが,/etc/rc.local に記述するほうが簡単なのでそちらを採用する.

前置きが長くなったが,ここから設定方法について記載していく.

最終型は以下の構成だ.
 WAN側(eth0) :ラズパイにある有線LANポート.スイッチングハブと接続する.
 LAN側(eth1) :USB-NICで拡張した有線LANポート.WAN側のモデムと接続し,DHCPで自動的にIPアドレスを取得する.
 LAN側(wlan0):ラズパイにある無線LANポート.5.0GHz 無線LANアクセスポイントとして動作させる.
 LAN側(wlan1):USBドングルで拡張した無線LANポート.2.4GHz 無線LANアクセスポイントとして動作させる.
 Bridge(br0) :eth1,wlan0,wlan1をつなぐブリッジ.192.168.100.1/24に設定する.

 br0 に DPCPサーバー を設定し,接続した機器には自動でIPアドレスを振るように設定.

2019年10月3日木曜日

Raspberry Pi に Redmine を導入する

会社でRedmineを使用しているので,自宅でも使いたくなりラズパイに導入してみることにした.ネットで色々と調べてみるといくつかの手順が見つかったが,apache2,git,subversion,ruby,imagemagick 等をインストールし,データベースの設定を変更,Redmine の公式(?)リポジトリからソースをチェックアウトしてきてビルドする手順に落ち着いた.

2019年9月28日土曜日

Rapberry Pi をスイッチングハブ化する 【bridge-utils】

こんな代物を作ってどんなメリットがあるか具体的には何も思いついていないが,Raspberry Pi に USB の NIC を接続すことで LANポートを2個に増設しブリッジ接続してみた.要するに Raspberry Pi のスイッチングハブ化だ.

最初に必要なソフトとして,bridge-utilsをインストールする.
# apt install bridge-utils

2019年6月8日土曜日

Raspberry Pi にデータベースを構築する【MySQL,MariaDB】

【2021.2.7 記事修正】

データベースとしては,使い慣れたMySQLを選択したかったが,Raspbian では MariaDB(MySQL互換) が推奨されているので,MariaDB で構築する.

■インストール及び起動
(1)MariaDB をインストールする.(コマンドでは,mysqlと書いているが,mariadbが導入される.)
$ sudo apt install default-mysql-client default-mysql-server

(2)MariaDB を起動する.(コマンドでは,mysqlと書いているが,mariadbが起動する)
$ sudo systemctl restart mysql

2019年2月26日火曜日

【svnadmin dump】Subversionのリポジトリを別のサーバーに移行する.

svnserveを走らせているRaspberry Piに最新版のOSを再インストールするためなので,移行というよりバックアップ/リストアの方が近いが,やることは同じなのでサーバー間の移行として備忘録に残す.今回,使用するコマンドはsvnadmin dump及びsvnadmin load.実際の手順は以下の通り.

まず,リポジトリが保存してあるサーバでリポジトリをダンプする.
$ svnadmin dump ./repos/Project > svn.dump 

これを別のサーバーにコピー.(svn.dumpの容量が大きいときは先に圧縮したほうが良いだろう.)
$ scp svn.dump <別のサーバのIP>:~/

コピー先のサーバーでも同様にディレクトリを作成.その後,リポジトリを作成する.
$ mkdir -p repos/Project
$ svnadmin create ./repos/Project

最後にコピーしたダンプファイルを取り込む.
(途中,過去のコミット履歴が表示されるので,懐かしい気持ちで取り込みが完了するのを待つ.)
$ svnadmin load ./repos/Project < svn.dump

取り込みが完了したら,問題なく完了しているか試しにチェックアウトしてみる.
$ mkdir tmp
$ svn co file://localhost/[リポジトリを作成したパス]/repos/Project ./tmp/

調べる前はもっといろいろと手順があるかと思っていたが,とても簡単だった.サーバー間の移動だけでなく,リポジトリのバックアップをcronで回してみるのも便利だと思う.

2018年11月4日日曜日

Amazon Echo と Raspberry Pi を Node-RED Alexa Home Skill Bridge で連携させて声でパソコンを起動したりシャットダウンしたりする.

ひと昔前の映画なんかで役者の「〇〇を起動して!」と言う台詞に合わせて,テレビやラジオが起動したりするシーンがよくありましたが,そういうことが現実にもできるようになってきたので構築してみました.



今回活用したサービス/デバイスは以下のラインナップです.

・Amazon Echo Dot(声帯認識)
・Raspberry Pi(Wake On LANコマンド及びSSH越しでのShut Downコマンドの実行)
・Node-RED Alexa Home Skill Bridge(Amazon Echo DotとRaspberry Piの橋渡し)

それでは構築手順を紹介します.

2018年2月7日水曜日

sar コマンドで Raspberry Pi のログを取得する

LPICの勉強をしていて,キャパシティプランニングの項でsar及びsadcコマンドが登場したので,Raspberry Pi で動作を確認してみた.

まずはパッケージをインストールする.
$ sudo apt install sysstat

インストールが完了したら,/etc/default/sysstat ファイルを編集する.
(編集前)
ENABLED="false"
(編集後)
ENABLED="true"

最後に,自動起動するように設定し,再起動する.
$ sudo systemctl enable sysstat.service
$ sudo reboot

再起動後,ログファイルが出力されていることを確認する.
$ ls -l /var/log/sysstat
total 4
-rw-r--r-- 1 root root 732 Feb  7 22:17 sa07

sarコマンドを実行すると,ログの内容を確認できる.
$ sar
Linux 4.9.59-v7+ (raspberrypi)      02/07/18        _armv7l_        (4 CPU)

22:17:30     LINUX RESTART      (4 CPU)

また,引数に表示間隔と表示回数を指定すると,リアルタイムでログを出力できる.
$ sar 1 5
Linux 4.9.59-v7+ (raspberrypi)      02/07/18        _armv7l_        (4 CPU)

22:25:48        CPU     %user     %nice   %system   %iowait    %steal     %idle
22:25:49        all      0.50      0.00      0.75      0.00      0.00     98.74
22:25:50        all      0.25      0.00      0.76      0.00      0.00     98.99
22:25:51        all      0.25      0.00      0.76      0.00      0.00     98.99
22:25:52        all      0.25      0.00      0.76      0.00      0.00     98.99
22:25:53        all      0.25      0.00      0.76      0.00      0.00     98.99
Average:        all      0.30      0.00      0.76      0.00      0.00     98.94

sadf コマンドを用いると,JSON形式(-jオプション)やXML形式(-xオプション)で出力することができる.
$ sadf -x
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE sysstat PUBLIC \"DTD v3.1 sysstat //EN\"
\"http://pagesperso-orange.fr/sebastien.godard/sysstat-3.1.dtd\">
<sysstat
xmlns=\"http://pagesperso-orange.fr/sebastien.godard/sysstat\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"http://pagesperso-orange.fr/sebastien.godard sysstat.xsd\">
        <sysdata-version>3.1</sysdata-version>
        <host nodename=\"raspberrypi\">
                <sysname>Linux</sysname>
                <release>4.9.59-v7+</release>
                <machine>armv7l</machine>
                <number-of-cpus>4</number-of-cpus>
                <file-date>2018-02-07</file-date>
                <file-utc-time>13:17:30</file-utc-time>
                <statistics>
                </statistics>
                <restarts>
                        <boot date=\"2018-02-07\" time=\"13:17:30\" utc=\"1\" cpu_count=\"4\"/>
                </restarts>
        </host>
</sysstat>


2017年10月8日日曜日

Raspberry Pi の画面出力先を古いスマホにしてみた.【DispmanX VNC】


早い話が Raspberry Pi で VNCサーバーを起てて,Android の VNCクライアントでアクセスしたというお話.
DIY的にスマホ分解して HDMI入力できるようにしたよって話ではないので,目的が違う人はごめんなさい.

iptables の設定を systemd で読み込む

以前,以下のようなエントリーを記したが,

WM×LI: Raspberry Pi をルーター&無線LANルーター化する

起動時の設定を cron の @reboot で読み込むのは,最終手段なので(というかダサいので),systemd を使用して iptables の設定を読み込むように修正する.

まず,今回設定したいiptablesの設定は以下の通りだ.

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j MASQUERADE

iptables 設定の保存/再設定には,iptables-save コマンドと iptables-restore コマンドを使用する.