2/03/2018

EdgeRouterの最新ファームウェア v1.10の適用

EdgeRouterのβファームを扱うフォーラムでEdgeRouter v1.10.0のファームが公開されている。まだ、メインサイトでは公開されてはいない。

https://community.ubnt.com/ に登録して、ベータの参加表明をするとかたしかチェックボックスがあったかもしれない。いずれにせよAt Own Riskである。

また、EdgeRouter Xのストレージは今や狭小住宅なみに少ないので、古いイメージの削除をしてから入れないとファームのアップグレードができない。つまり、EdgeRouter Xは実行中のファームの他にもう一つのファームしか入れられないことに注意。

詳しくはココを必ず参照

もちろんファームの適用前には、必ずコンフィグをファイルとテキストでバックアップしておくこと!!!

 

ベータフォーラムからかいつまんで新機能を説明すると(個人的な偏見も含むが)

* [Ssh-recovery] -

This is a new service which starts during early boot stage and provides emergency SSH access via IPv6 link-local address. ssh-recovery can be used to access shell from a directly connected neighbor if a router is not accessible by normal means. By default ssh-recovery service is listening on port 60257 on all ethernet interfaces and it is automatically terminated 60 seconds after start. More information is available in this article.

* [FlowAccounting] -

Added flow-accounting via ipt-netflow which performs better (+25% max throughput) comparing to original pmacct netflow implementation. This ipt-netflow can be configured in CLI with set system flow-accounting-ipt ...

* [DHCP] -

Add static ARP support for DHCP-leased IPs with "set service dhcp-server static-arp"

Add global DHCP client options to configuration (set interfaces ethernet eth0 dhcp-options global-option xxx).

* [Firewall] -

add a contiguous option to firewall time extension "set firewall name xxx rule yyy time contiguous..."

*[System] -

coredumps will not be generated anymore unless explicitly enabled with "set system coredump enabled"

* [Ubnt-discover] -

Add CLI command to disable "ubnt-discovery" daemon, thus ER will stop responding to discovery messages on 10001 UDP port. (set service ubnt-discover-server disable). Discussed here

* [BGP] -

Add support for BGP extended community that allows setting 4-byte AS numbers (set policy route-map xxx rule 42 set extcommunity rt 1234567:3200). Discussed here.

となる。数日中にリリースすれるものと思われる。

2/02/2018

Raspberry Pi 3でRoonとSpotify Connect

おくらばせながらRaspberry Pi 3を買った。どれがいいかわからなかったので、これ。

ちなみに、RS社製(UKあるいは日本のSonyの工場製)とElement 14(中国製)があるが、まぁ、安い買い物なので、Element 14製を購入。

無線LANもついている。LANポートは利用せず。ついでに電源アダプタも買った。別に携帯のでもよかったのだが、電源がシビアなので動作保証が取れているものを選択。

 

SDカードも32GBも買ったが実際は多分8GBくらいで十分。そもそもRaspberry PIでX Windowグリグリとかおかしいだろうというのが持論。あくまでも組み込み機器コントローラーという感じ。

MACで作成するのでイメージ書き込みソフト(etcher)とDebianベースのOS(Raspbian Jessie Lite)を事前に用意しておく。

EtcherでRaspbian Jessie Liteを焼き込み、焼き込みが終わったら一度SDカードを抜き差ししておく。

ターミナルを立ち上げて以下を実行。(SSHの有効化と無線LANの設定。無線LANは、11aとかには対応していないので注意!)

touch /Volumes/boot/ssh
cat << EOF > /Volumes/boot/wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid=“SSID"
    psk=“PSKのキー”
}
EOF

これが終わればSDカードをRaspberry PIに刺して起動。SSHでログインができるにはしばしお時間がかかる。SSHするホスト名やIPアドレスがわからないが、raspberrypi.localでアクセスできるはず。

以下のコマンドをターミナルで実行

ssh pi@raspberrypi.local
パスワードはraspberry

そのまま以下を実行
sudo -i
raspi-config


* 4 Localisation Optionsを選択。
* I1 Change Localを選択。
* en_GB.UTF-8 UTF-8でスペースを押して*を外す。
* en_US.UTF-8 UTF-8でスペースを押して*を付ける。
* Default local for the system environment:でen_US.UTF-8を選択。

ちなみに、日本語のロケールも選択してもいいが、組み込みで別に日本語である必要もないので、英語だけ。

以下、何気にハードウェア乱数の設定やwatchdog timerの設定もついでに行なっている。使えるものはなんでも使おう。ただそれだけ。また、途中でファームもあげている。

cat << EOF >> /etc/environment
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
EOF

cat << EOF > /etc/asound.conf
pcm.!default {
type hw
card 1
}
EOF

cat << EOF >> /etc/systemd/timesyncd.conf
NTP=jp.pool.ntp.org
FallbackNTP=time.google.com
EOF

cat << EOF >> /etc/rc.local
/opt/vc/bin/tvservice --off
EOF

cat << EOF >>/boot/config.txt
dtparam=watchdog=on
EOF

cat << EOF >> /etc/modprobe.d/bcm2835-wdt.conf
options bcm2835_wdt nowayout=1 heartbeat=10
EOF

exit


sudo raspi-config nonint do_camera 0
sudo apt update ; sudo apt -y upgrade
sudo apt-get install rng-tools watchdog l libavahi-compat-libdnssd-dev
vi /etc/watchdog.conf
以下を修正
watchdog-device = /dev/watchdog
max-load-1 = 24

cat << EOF >> /etc/watchdog.conf
watchdog-timeout = 14
EOF

vi /etc/default/watchdog
以下を修正
watchdog_module="bcm2835_wdt"
vi /lib/systemd/system/watchdog.service

以下をコメントアウト
OnFailure=wd_keepalive.service

bug fixのために以下を修正
[Install]
WantedBy=multi-user.target

sudo update-rc.d watchdog defaults
sudo systemctl enable watchdog
sudo systemctl start watchdog
sudo systemctl status watchdog

sudo rpi-update
sudo apt-get autoremove
sudo apt-get cleansudo reboot

 

再起動して、再度SSHで接続。RoonとSpotifyの設定は以下。

#Roon Bridge
curl -O http://download.roonlabs.com/builds/roonbridge-installer-linuxarmv7hf.sh
chmod +x roonbridge-installer-linuxarmv7hf.sh
sudo ./roonbridge-installer-linuxarmv7hf.sh


#Spotify connect
curl -sL https://dtcooper.github.io/raspotify/install.sh | sh
sudo vi /etc/default/raspotify
  BITRATE="320"
  OPTIONS="--device=plughw:1"
sudo systemctl restart raspotify

 

ざっと書いたが以上


 

EdgeRouter覚書

EdgeRouterの使い方といえば、ここのリンクを読めば大抵設定が可能だが、自分が調べた覚書。

EdgeRouterの設定を保存する

GUIから保存すると、/configの中身をtarで固めてダウンロードしてくれるのだが、設定内容が全く不明。なので、設定保存後、以下のコマンドを実行して、テキストを保存しておく。

root@ubnt:~# /opt/vyatta/sbin/vyatta-config-gen-sets.pl /config/config.boot

set firewall all-ping 'enable'
set firewall broadcast-ping 'disable'
set firewall ipv6-receive-redirects 'disable'
set firewall ipv6-src-route 'disable'
set firewall ip-src-route 'disable'
set firewall log-martians 'enable'
set firewall name WAN_IN default-action 'drop'
set firewall name WAN_IN description 'WAN to internal'
set firewall name WAN_IN rule 10 action 'accept'
set firewall name WAN_IN rule 10 description 'Allow established/related'

長いので省略。。。

この書式があれば、設定を手動で登録するときに便利だし、変更箇所もdiffで確認可能

SSHのキーを送る

sshでログインする際、パスワードの入力が異様にたるい(40代)。なので、いつもssh-copy-idでsshのキーを送りつけてからログインをする。

まず、.ssh/configに以下を設定(.ssh/configの使い方は他に譲るが。。。)

Host <EdgeRouterのLAN IP>
Hostname <EdgeRouterのLAN IP>
User <EdgeRouterのusername>

次に、以下のコマンドを接続元で実行

sftp <EdgeRouterのusername>@<EdgeRouterのLAN IP>
cd /tmp
put .ssh/id_rsa.pub

次にEdgeRouterで以下のコマンドの実行

ssh <EdgeRouterのusername>@<EdgeRouterのLAN IP>
configure
loadkey <EdgeRouterのusername> /tmp/id_rsa.pub
commit
何も変更点がなかったというメッセージが出るが気にしない
save

これでssh <EdgeRouterのLAN IP>でログイン可能

それくらいかなぁ。

2/01/2018

EdgeRouter 4ベンチマーク

EdgeRouterのWeb UIにはこんなツールが付いている。

NewImage

選択するとこんな画面になる。

NewImage

さて、ここに何をいれるかというとiperfのサーバのIPを入れる。

まずは、ここいらの公開iperfサーバで実験。IPアドレスしか入れられないので、ホスト名からIPアドレスに変換してから入れる。

NewImage

結果はこう。。。インドネシアですからねぇ。

NewImage

だいぶお役御免のMac Miniにiperfを入れる。ここからダウンロード

こんな感じで実行。

./iperf3 -s

以下のメッセージが表示されればOK

Server listening on 5201

同じように実行してみる。ほぼ1Gbps。でかしたw

NewImage

ちなみに、VLAN超えで、Linux仮想マシン(1vCPU/2GB)に対しておこなったもの。

NewImage

まぁ、いろいろ遊べる。仕事でつかっているんだけど。自腹だからいいかなぁと。それにしても電気代が酷いことに。

1/30/2018

EdgeRouter 4ゲット

またしても久々の投稿。

EdgerRouter 4をゲット

ベンダーのショップでは売り切れだったがUS Amazonでは買えた。

IMG 6617

IMG 6618

ベンダーページ

https://www.ubnt.com/edgemax/edgerouter-4/

今まで使っていたER-Xとの違いは、CPUのコア数、周波数、メモリ、ストレージサイズが大幅アップしたためThroughputが4倍(価格も4倍)、ただし、ポート数は減少で、ADアダプタから電源コードになっ た。パッとみるとそれくらい。

コンソールポートが付いたのも大きい。USB端子は謎。OSからはこんな感じで見えている。

root@ubnt:~# ls /sys/bus/usb/devices/
1-0:1.0 2-0:1.0 3-0:1.0 4-0:1.0 usb1 usb2 usb3 usb4

ちなみに内蔵ドライブはSDカードっぽい。

 

ただし、内部的には、

● Switchインタフェースの設定がなくなる。

●VPNの設定が少し変わる

●ハードウェアオフロードができる種類が増える

●MTU9000が設定可能

という違いがある。EdgeRouterの上位機種と同じかと思われる。Switchインタフェースの設定が無いのは少し残念だが、今は安くVLANサポートしているスイッチが出ているので、餅は餅屋にしてもいいかなと。

VPNの設定は、前の環境のままを入れても動かなくて、以下を参照する。

https://help.ubnt.com/hc/en-us/articles/204950294-EdgeRouter-IPsec-L2TP-Server

Devices used in this article:
EdgeRouter-4

とわざわざ書いてあるくらいだからまぁ何かが違うのだろう。ちなみに、EdgeRouter 4のファームは、1.9.8だが、ER-Xの1.9.7 hotfix 2からの作成の様子。hotfix3とhotfix4の修正はどうなった?

ハードウェアオフロードはこんな感じ

ubnt:~$ show ubnt offload

IP offload module : loaded
IPv4
forwarding: enabled
vlan : enabled
pppoe : disabled
gre : enabled
IPv6
forwarding: disabled
vlan : disabled
pppoe : disabled

IPSec offload module: loaded

Traffic Analysis :
export : enabled
dpi : enabled
version : 1.302

ここに書かれているipsecのバグは発生していない様子。ちゃんとVPNが利用できた。

ちなみにUIはこんな感じ。何も変わらず。

EdgeRouterUI

利用感だが、VLANを30近く設定しているが、リブートもかなり早くなり(ER-Xの時は30分!、EdgeRouter 4では5分程度)、ハードウェアオフロードのせいか、Throughputのせいかわからないけど、ネットワークがめちゃくちゃ快適に。値段性能的にもYAMAHAのルータよりもお買い得は変わらない。

10/01/2017

SDカードをAPFSでフォーマットしてみる

Macbook Airに、こんなパーツを付けている。

MiniDrive Air Silver MD5-RP-AIRSR0G

正確には、以前買ったものなのでデザインがもう少しファンキーだった。

手持ちの128GBは認識しなかったので64GBのを入れている。まぁ、この手の製品は自己責任なんで致し方ない。類似の製品がいろいろあるので見当してみるといいかもしれない。また、必ず、対応しているMACのじゃないとダメっぽい。理由は、SDカードスロットの深さが違うらしく最悪、抜けないなんていうこともある。。。

だいぶクラウド化が進んでいるので、実は内臓SSDなんて256GB程度で足りるのだが、全てのデータが速いドライブに入っている必要はなく、また、以前あった、Spotifyのキャッシュに猛烈アクセスなんということもあるので、基本入れておくものは:

  • ISOイメージ
  • 仮想マシンイメージ
  • Spotifyのキャッシュ
  • その他、なんとなくのデータ(デスクトップに散らかしているもの)

などである。

閑話休題

High Seirraでは、APFSが採用されている。SSDに特化しているとか。APFSのクローンの速さったら、めちゃくちゃ速い。4GB程度のISOイメージをコピーしても同一ドライブであれば(ここがキモ)、数秒。仮想マシンイメージのコピーも10GB程度で2秒くらい。VMware Fusionでクローンするより、Finderでコピーをしたほうが圧倒的に速い。

SDカードも見方を変えれば、SSD?ということで、やってみた。

ちなみに、Disk Utilityではできない。つまり推奨されていないんでしょうね。なので、自己責任で。ただ、APFSをコマンドラインで作ってみると、APFSの構造がわかっても白い。キーワードは、GPTとコンテナ。まず、ドライブ(SDカード)をGPTにして、その後、コンテナをつくり、そのコンテナをフォーマットする。

コマンドラインは以下。ちなみに、ちゃんと自分のデバイス名を確認して実行すること。コピペしてデータが消えても責任はとれない。

 

ディスクのデバイス名の確認

hogehoges-MacBook-Air:~ tmase$ diskutil list

/dev/disk0 (internal, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        *251.0 GB   disk0

   1:                        EFI EFI                     209.7 MB   disk0s1

   2:                 Apple_APFS Container disk1         250.8 GB   disk0s2

 

/dev/disk1 (synthesized):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      APFS Container Scheme -                      +250.8 GB   disk1

                                 Physical Store disk0s2

   1:                APFS Volume Macintosh HD            125.6 GB   disk1s1

   2:                APFS Volume Preboot                 19.0 MB    disk1s2

   3:                APFS Volume Recovery                520.0 MB   disk1s3

   4:                APFS Volume VM                      3.2 GB     disk1s4

 

/dev/disk2 (internal, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:     FDisk_partition_scheme                        *63.4 GB    disk2

   1:                  Apple_HFS SDXC64GB                63.4 GB    disk2s1

   

GPTパーテイョンの作成

hogehoges-MacBook-Air:~ tmase$ diskutil partitionDisk /dev/disk2 GPT JHFS+ New 0b

Started partitioning on disk2

Unmounting disk

Creating the partition map

Waiting for partitions to activate

Formatting disk2s2 as Mac OS Extended (Journaled) with name New

Initialized /dev/rdisk2s2 as a 59 GB case-insensitive HFS Plus volume with a 8192k journal

Mounting disk

Finished partitioning on disk2

/dev/disk2 (internal, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        *63.4 GB    disk2

   1:                        EFI EFI                     209.7 MB   disk2s1

   2:                  Apple_HFS New                     63.0 GB    disk2s2

   

コンテナの作成   

hogehoges-MacBook-Air:~ tmase$ diskutil apfs createContainer /dev/disk2s2

Creating container with disk2s2

Started APFS operation on disk2s2 New

Creating a new empty APFS Container

Unmounting Volumes

Switching disk2s2 to APFS

Creating APFS Container

Created new APFS Container disk3

Disk from APFS operation: disk3

Finished APFS operation on disk2s2 New

 

作成されたコンテナの確認

hogehoges-MacBook-Air:~ tmase$ diskutil list

/dev/disk0 (internal, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        *251.0 GB   disk0

   1:                        EFI EFI                     209.7 MB   disk0s1

   2:                 Apple_APFS Container disk1         250.8 GB   disk0s2

 

/dev/disk1 (synthesized):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      APFS Container Scheme -                      +250.8 GB   disk1

                                 Physical Store disk0s2

   1:                APFS Volume Macintosh HD            125.6 GB   disk1s1

   2:                APFS Volume Preboot                 19.0 MB    disk1s2

   3:                APFS Volume Recovery                520.0 MB   disk1s3

   4:                APFS Volume VM                      3.2 GB     disk1s4

 

/dev/disk2 (internal, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        *63.4 GB    disk2

   1:                        EFI EFI                     209.7 MB   disk2s1

   2:                 Apple_APFS Container disk3         63.2 GB    disk2s2

 

/dev/disk3 (synthesized):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      APFS Container Scheme -                      +63.2 GB    disk3

                                 Physical Store disk2s2

 

コンテナをAPFSにする

hogehoges-MacBook-Air:~ tmase$ diskutil apfs addVolume disk3 APFS SDXC64GB

Exporting new unencrypted APFS Volume "SDXC64GB" from APFS Container Reference disk3

Started APFS operation on disk3

Preparing to add APFS Volume to APFS Container disk3

Creating APFS Volume

Created new APFS Volume disk3s1

Mounting APFS Volume

Setting volume permissions

Disk from APFS operation: disk3s1

Finished APFS operation on disk3

hogehoges-MacBook-Air:~ tmase$


というような感じ。結果は。。。まぁ、APFS内でのコピーは速いが利用シーンはちょっとねぇという感じ。また、一度ファイルが消せなくなって、フォーマットし直したことがある。なので、あくまでも趣味の世界。High SeirraでThunderbolt接続のHDDもAPFSにしてみた(これは、Disk Utilityで変換もフォーマットもできた。)が、やはり、コピーは、SSDほどではないが結構速い。実際に通常のファイルシステムでそんなにコピーしたことはないけど。

9/19/2017

この期に及んでMacbook Airを購入

この期に及んでMacbook Airを購入してしまった。。。

というのも、ちょっとした仕事で利用するためで、さらに英語キーボードでかつ、コンソールが簡単に使える環境、さらに、バッテリの持ちが気にならないという要件を満たすものが必要であった。

まぁ、Macbook Proという選択肢もあったのだが、海外へ持っていて取られても悔しくない(比較的に)という要件もあった。

やはり、Retinaディスプレイは捨てがたいと思ったが、実はあっさり諦められた。理由は、部屋では、4Kディスプレイを使っているからである。

外で、Retinaディスプレイは、正直オーバースペック。オフィスに仮に接続できるディスプレイがあったとしても、本体の方が解像度が高い。なので、外部ディスプレイに接続する必要はあまり感じられない。また、外の移動中にそんな小さい文字を見たくない。

ああっ、しょうもない買い物かなと思ったら実は案外ありだった。

製品レビュー自体は、くさるほど世間に出回っているのでしないけど、唯一すごいと思ったのは、Mini Display Port経由だと、4Kで60Hz表示ができる。手持ちのMac Miniより全然性能がいい。4KディスプレイもLGの一番安いのも3万円くらい。

英語キーボードはカスタマイズなので、本来だと、オンラインで買わなければならないが、実はApple Storeの店舗でも英語キーボードだけは在庫している。なので、吊しで買った。メモリが8GBどまりなので、Core i7まで入らず、HDDもNASを使っているので256GBで十分。