LoginSignup
7
1

More than 3 years have passed since last update.

Nervesのネットワーク環境を整えた

Last updated at Posted at 2019-12-20

概要

ラズパイ3にNervesをインストールして、このようなネットワーク構成を作りました。
NervesのAdvent Calendar差し替えようかなぁー(笑)

#NervesJP Advent Calendar 2019 9日目
ElixirでラズパイのLEDをチカ〜RaspbianOSインストールから〜

Mac OSX:
- 有線LAN→メンテナンス用、固定IPアドレス(192.168.88.1/24)

ラズパイ:
- 有線LAN(eth0)→メンテナンス用、固定IPアドレス(192.168.88.2/24)
- 無線LAN(wlan0)→インターネット接続用、DHCP

追記(2020.01.21)

ネットワークやSSHの設定はconfigディレクトリにあるconfig.exstarget.exsどちらに記述しても問題なさそうです(記述方法も同じ)。今回はconfig/config.exsに記載することとします。

config/
  config.exs  ←今回はこちらに設定を記述
  target.exs

環境

  • RaspberryPi 3
  • Nerves

やったこと

(注意)シェルはFishを使ってます。

~> mix nerves.new hello_nerves
~> cd hello_nerves
~> set -x MIX_TARGET rpi3

mix.exsに以下の設定を追記します。
targets: @all_targetsがないとMacの環境でも構築しようとしてしまうようでmix deps.getした時にエラーが出るので注意です。

mix.exs
 defp deps do
    [
      (略)
      # 追加
      {:nerves_network, "~> 0.5", targets: @all_targets},
    ]
  end

次にconfig/config.exsに以下の設定を追記します。

config/config.exs
#
# ネットワーク設定
#
settings = [
  networks: [
    [ssid: "ここにSSIDを書く", psk: "ここに共通鍵を書く", key_mgmt: :"WPA-PSK", priority: 0,
      ipv4_address_method: :dhcp,
      nameservers: ["8.8.8.8", "8.8.4.4"]
    ]
  ]
]

config :nerves_network, default: [
  wlan0: settings,
  eth0: [
    ipv4_address_method: :static,
    ipv4_address: "192.168.88.2",
    ipv4_subnet_mask: "255.255.255.0"
  ]
]

設定が完了したらSDカードにイメージを焼きます。

~> mix deps.get
~> mix firmware
~> mix firmware.burn

ラズパイにマイクロSDを入れて起動します。
SSHの設定が完了していたらSSHでログインできます。

~> ssh 192.168.88.2

iex> Nerves.NetworkInterface.interfaces()
["lo", "eth0", "wlan0"]

iex> Nerves.NetworkInterface.settings("lo")
{:error, :einval}

iex> Nerves.NetworkInterface.settings("eth0")
{:ok,
 %{
   ipv4_address: "192.168.88.2",
   ipv4_broadcast: "192.168.88.255",
   ipv4_gateway: "",
   ipv4_subnet_mask: "255.255.255.0",
   mac_address: "b8:27:eb:86:17:d4"
 }}

iex> Nerves.NetworkInterface.settings("wlan0")
{:ok,
 %{
   ipv4_address: "192.168.46.18",
   ipv4_broadcast: "192.168.46.255",
   ipv4_gateway: "192.168.46.1",
   ipv4_subnet_mask: "255.255.255.0",
   mac_address: "b8:27:eb:d3:42:81"
 }}

iex> ping "192.168.88.1"
Press enter to stop
Response from 192.168.88.1 (192.168.88.1): time=0.977ms
Response from 192.168.88.1 (192.168.88.1): time=1.121ms
Response from 192.168.88.1 (192.168.88.1): time=0.942ms
Response from 192.168.88.1 (192.168.88.1): time=1.304ms

iex> ping "192.168.46.1"
Press enter to stop
Response from 192.168.46.1 (192.168.46.1): time=5.279ms
Response from 192.168.46.1 (192.168.46.1): time=4.923ms
Response from 192.168.46.1 (192.168.46.1): time=101.018ms
Response from 192.168.46.1 (192.168.46.1): time=4.867ms

iex> ping "www.yahoo.co.jp"
Press enter to stop
Response from www.yahoo.co.jp (182.22.25.124): time=1088.845ms
Response from www.yahoo.co.jp (182.22.25.124): time=68.058ms
Response from www.yahoo.co.jp (182.22.25.124): time=58.258ms
Response from www.yahoo.co.jp (182.22.25.124): time=65.927ms

iex> ping "www.google.co.jp"
Press enter to stop
Response from www.google.co.jp (172.217.31.131): time=54.336ms
Response from www.google.co.jp (172.217.31.131): time=69.777ms
Response from www.google.co.jp (172.217.31.131): time=61.431ms
Response from www.google.co.jp (172.217.31.131): time=63.747ms


名前引きはできているのに、なぜか"8.8.8.8"にはpingの応答がありませんでした。
iex> ping "8.8.8.8"
Press enter to stop

まとめ

ラズパイにNervesをインストールして、有線LANはメンテナンス用として固定IPアドレスを設定、無線LANは運用系としてDHCPを設定してインターネット接続を確認できました。

実運用とメンテナンス用でネットワークを分けたい場合は参考になるのではないかと思います。

次はこの環境で、mix firmware.gen.scriptしてできるupload.shを使ってSSH経由のファームウェア更新をしてみます。

参考URL

nerves-project/nerves_network - WiFi Networking Priority

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1