Beaglebone Blackをイーサネット経由で静的IP設定でネットワークにつなぎ、インターネットアクセスする
カテゴリー:#RaspberryPi Arduino ESP32(記事数:162)

↑B


2013.07.04

Beaglebone Blackをイーサネット経由で静的IP設定でネットワークにつなぎ、インターネットアクセスする

USB接続でパソコンにつなぐと給電と共に192.168.7.2でターミナル接続出来て便利だけど

  • Beagleboneから母艦パソコン以外のネットワークに接続するのは面倒(母艦パソコンの設定が必要)
  • せっかく本体にLAN端子があるので直接イーサネットケーブルで接続したい
■STEP1手動で設定
現在のネットワーク設定はifconfigというコマンドで確認出来る。他にifconfig eth0といった使い方が出来る。それぞれのインターフェースは
ip link set dev eth0 down/up
と打つとON/OFF出来るらしい。またipup eth0やipdown eth0というコマンドでもON/OFF出来るらしい。双方にどのような差があるのか不明。

/etc/network/interfeceファイルをエディタ「nano」で開き
---------------------
iface eth0 inet dhcp
---------------------
って書いてあるところ頭に#を付けてコメントアウトして
---------------------
iface eth0 inet static
address 192.168.1.50
netmask 255.255.255.0
network 192.168.1.0
gateway 192.168.1.1
dns-nameserver xx.xx.xx.xx
---------------------
と書く、しかし、これで再起動しても192.168.1.50で接続出来ない。ifconfigで調べるとなぜかeth0が変わらずDHCPで立ち上がっているような表示になっている。しかし
ifdown eth0 (eth0をいったん止めるコマンド)
と入力すると「eth0はまだスタートして無い」とメッセージが返される。
そこで
ifup eth0 (eth0を起動)
をコマンドを入力するとeth0の設定が静的IPに変更され、Beaglebone本体からローカルLANの中へpingが通るようになる。また、eth0で設定したIPを指定してイーサネットケーブル経由でBeagleboneにターミナル接続出来るようになる。

※蛇足だが、pingが通るようになったあと、ifdown eth0でいったん止めて、再度ifup eth0と入力するとpingが通らなくなる。理由不明。

この段階ではローカルLANにIPアドレス指定でアクセス出来るが、インターネットに「ホスト名」でアクセス出来ない。どうやら/etc/resolv.confにもDNS設定があるが、これは起動するたびに書き変わってしまうらしい。そこで
/etc/resolv.conf.bakというファイルを作り
----------------------
nameserver xx.xx.xx.xx
----------------------
と書いておく
cp /etc/resolv.conf.bak /etc/resov.conf
と入力してファイルを上書きするとホスト名でインターネットにアクセス出来るようになる。
※/etc/resolv.confは書き換えた後も再起動等は必要無く即時に設定が反映されるようだ。
インターネットにアクセスするには、例えば
wget https://usewill.com/dpoke/index.html
と入力するとうちのサイトのトップページのHTMLファイルを取得してくれる。このwgetコマンドは便利で本来はインターネット上のファイルをとってくるコマンドだが、cgiを因数付けて叩くことでデータを送信するのに使える。

■STEP2:設定の自動化
以上のようにすればBeagleboneをインターネットに接続することが出来ることが分かった。これを起動するたびに自動で設定するように設定する。
/etc/init.d/setnetwork
というファイルを作り、そこに
----------------
#!/bin/sh
sleep 5
cp /etc/resolv.conf.bak /etc/resov.conf
sleep 5
ifup eth0
----------------
と書く。次にファイルに実行属性を与える
chmod +x setnetwork
次に、起動時の実行ファイルとして登録する。
update-rc.d setnetwork defaults 99

※起動時に実行するファイルは/etc/init.d/内に置かないといけないのかな?
※update-rc.dは起動時に実行するファイルを指定するツール。99は一番最後で実行という意味。ちなみに自動実行を止める時は update-rc.d -f setnetwork removeと入力する。
※スクリプト中のsleep 5が無いとeth0は静的IPで立ち上がるが、なぜかpingが通らないので必須。試行錯誤の結果。
※すぐにシャットダウンするにはshutdown nowと入力する。再起動はreboot

参考にしたサイト

Category:#RaspberryPi Arduino ESP32



■ ■ ■ コメント ■ ■ ■

いいっすね!=1

名前 ↑B

コメント(※改行は省略されます)

※3回以上の連続書き込み不可
この記事のアクセス数:


→カテゴリー:#RaspberryPi Arduino ESP32(記事数:162) (コメント数)