理想未来ってなんやねん

娘可愛い。お父さん頑張る。

nmcliでloopbackは変更できない?

今日はnmcliについて調べて書こうと思ったのだが、調べているうちに躓いた。
nmcliってloopbackの制御はできないのだろうか?

# nmcli dev
DEVICE  TYPE      STATE      CONNECTION 
eth0    ethernet  connected  eth0       
lo      loopback  unmanaged  --         

loopbackはunmanagedと表示される。
NetworkManagerのCLI管理ツールであるnmcliが管理無し(STATE unmanaged)と言っているということは、NetworkManagerでは管理できないということなのか?

loopbackのデバイス情報を見てみる。

# nmcli dev show lo
GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          10 (unmanaged)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            
IP6.ADDRESS[1]:                         ::1/128
IP6.GATEWAY:                            

GENERAL.TYPEがloopbackになっている。

nmcli con addコマンドのhelpを見てみる。

# nmcli con add help
Usage: nmcli connection add { ARGUMENTS | help }

ARGUMENTS := COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS IP_OPTIONS

  COMMON_OPTIONS:
                  type <type>
                  ifname <interface name> | "*"
                  [con-name <connection name>]
                  [autoconnect yes|no]

                  [save yes|no]

  TYPE_SPECIFIC_OPTIONS:
    ethernet:     [mac <MAC address>]
                  [cloned-mac <cloned MAC address>]
                  [mtu <MTU>]

    wifi:         ssid <SSID>
                  [mac <MAC address>]
                  [cloned-mac <cloned MAC address>]
                  [mtu <MTU>]
                  [mode infrastructure|ap|adhoc]

    wimax:        [mac <MAC address>]
                  [nsp <NSP>]

    pppoe:        username <PPPoE username>
                  [password <PPPoE password>]
                  [service <PPPoE service name>]
                  [mtu <MTU>]
                  [mac <MAC address>]

    gsm:          apn <APN>
                  [user <username>]
                  [password <password>]

    cdma:         [user <username>]
                  [password <password>]

    infiniband:   [mac <MAC address>]
                  [mtu <MTU>]
                  [transport-mode datagram | connected]
                  [parent <ifname>]
                  [p-key <IPoIB P_Key>]

    bluetooth:    [addr <bluetooth address>]
                  [bt-type panu|dun-gsm|dun-cdma]

    vlan:         dev <parent device (connection  UUID, ifname, or MAC)>
                  id <VLAN ID>
                  [flags <VLAN flags>]
                  [ingress <ingress priority mapping>]
                  [egress <egress priority mapping>]
                  [mtu <MTU>]

    bond:         [mode balance-rr (0) | active-backup (1) | balance-xor (2) | broadcast (3) |
                        802.3ad    (4) | balance-tlb   (5) | balance-alb (6)]
                  [primary <ifname>]
                  [miimon <num>]
                  [downdelay <num>]
                  [updelay <num>]
                  [arp-interval <num>]
                  [arp-ip-target <num>]
                  [lacp-rate slow (0) | fast (1)]

    bond-slave:   master <master (ifname, or connection UUID or name)>

    team:         [config <file>|<raw JSON data>]

    team-slave:   master <master (ifname, or connection UUID or name)>
                  [config <file>|<raw JSON data>]

    bridge:       [stp yes|no]
                  [priority <num>]
                  [forward-delay <2-30>]
                  [hello-time <1-10>]
                  [max-age <6-40>]
                  [ageing-time <0-1000000>]
                  [mac <MAC address>]

    bridge-slave: master <master (ifname, or connection UUID or name)>
                  [priority <0-63>]
                  [path-cost <1-65535>]
                  [hairpin yes|no]

    vpn:          vpn-type vpnc|openvpn|pptp|openconnect|openswan|libreswan|ssh|l2tp|iodine|...
                  [user <username>]

    olpc-mesh:    ssid <SSID>
                  [channel <1-13>]
                  [dhcp-anycast <MAC address>]

    adsl:         username <username>
                  protocol pppoa|pppoe|ipoatm
                  [password <password>]
                  [encapsulation vcmux|llc]

  IP_OPTIONS:
                  [ip4 <IPv4 address>] [gw4 <IPv4 gateway>]
                  [ip6 <IPv6 address>] [gw6 <IPv6 gateway>]

typeにloopbackが存在しない。

適当に追加してみる。

# nmcli connection add type ethernet ifname 'lo:0' con-name loopback autoconnect yes save yes
# nmcli connection mod lo\:0 ipv4.method manual ipv4.addresses '172.16.1.1/32'
# nmcli connection up lo\:0
Error: Connection activation failed: No suitable device found for this connection.

うまくいかない。
保存されたファイルを確認してみる。

# ls -l /etc/sysconfig/network-scripts/ifcfg-lo*
-rw-r--r--. 1 root root 254  2月 17 13:55 /etc/sysconfig/network-scripts/ifcfg-lo
-rw-r--r--  1 root root 275  2月 25 02:48 /etc/sysconfig/network-scripts/ifcfg-lo-0
# cat /etc/sysconfig/network-scripts/ifcfg-lo-0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=lo:0
UUID=bfb08758-695e-4412-9754-8ac94a99ec5a
DEVICE=lo:0
ONBOOT=yes
IPADDR=172.16.1.1
PREFIX=32
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

ファイル名が異なり、ファイルの中身も若干異なる。

とりあえずファイルをリネームしてみる。

# /etc/sysconfig/network-scripts/
# mv ifcfg-lo-0 ifcfg-lo\:0

ifupで立ち上げてみる。

# ifup lo\:0
Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo:0'
Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo:0'
Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo:0'
Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo:0'

エラーは出るけど、一応立ち上がる。
状態を確認する。

# ip addr show dev lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 172.16.1.1/32 brd 172.16.1.1 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever

立ち上がった。

DRなLVS構成を組むときに負荷分散先となるサーバーにloopbackでIPアドレスを追加するということを行うのだが、CentOS 7で最適な方法が今一わかっていない。
後日また調べてみる。

ipコマンド

CentOS 7メモ

IPアドレスを表示する。

ip addr

インターフェース情報を表示する

ip link

IPアドレスを追加する

ip addr add 172.16.1.2/32 scope host dev lo label lo:0
ip addr add 202.XXX.XXX.XXX/24 scope global dev eth0 label eth0:0

IPアドレスを削除する

ip addr del 172.16.1.2/32 scope host dev lo label lo:0
ip addr del 202.XXX.XXX.XXX/24 scope global dev eth0 label eth0:0

経路情報を表示する

ip route

ARP情報を表示する

ip neigh

CentOS 7でのサービス制御

CentOS 7メモ。
従来のSysVinit/Upstartからsystemdに変わりサービス制御系コマンドが大きく変わっている。
service/chkconfigコマンドで制御していた操作はsystemctlコマンドで行うようになっている。

起動制御

処理内容 コマンド
状態の表示(ユニット) systemctl status ユニット名
状態の表示(全ユニット) systemctl list-units
起動 systemctl start ユニット名
終了 systemctl stop ユニット名
強制終了 systemctl kill -s 9 ユニット名
再起動 systemctl restart ユニット名
設定反映 systemctl reload ユニット名

自動起動設定

処理内容 コマンド
定義の表示(全ユニット) systemctl list-unit-files --type-service
定義の登録 systemctl daemon-reload(ユニット定義ファイル登録後)
自動機能の確認 systemctl is-enabled ユニット名
自動起動の有効化 systemctl enable ユニット名
自動起動の無効化 systemctl disable ユニット名

設定ファイルのパス

設定ファイルは下記のパスに配置される。

/etc/systemd/system/
/usr/lib/systemd/system/

/usr/lib/systemd/system/ にはRPMパッケージが提供するsystem標準の設定が配置される。
設定変更する場合は /etc/systemd/system/ に設定をコピーした上で修正を加える。

CentOS 7での主要管理コマンド

CentOS 7での主要管理コマンドをとりあえずメモとして残しておく。
詳細は後で書く。

サービス制御 systemctl
ネットワーク ip、nmcli
ホスト名 hostname、hostnamectl
ファイアウォール firewall-cmd
ログ journalctl


CentOS 7で恒久的にhostnameを変更する - 理想未来と現実の狭間で上を向いてボチボチ歩く
Packer + boxcutterでParallels Desktop用のVagrantboxイメージを作成する - 理想未来と現実の狭間で上を向いてボチボチ歩く

CentOS 7で恒久的にhostnameを変更する

CentOS 7で恒久的にhostnameを変更する方法。6までとは変更方法が違うのでメモ。

恒久的に変更するには、

/etc/hostname 

に記載する。

又、コマンドでも変更可能

hostnamectl set-hostname ホスト名

お作法的にはこちらの方が正しいかもしれない。
と、思っていたらnmcliコマンドでもできることを知る。

nmcli general hostname ホスト名

Nikon フルサイズ/APS-Cの一眼レフのフラッグシップ機 『D5/D500』を発表

ニコンFXフォーマット(フルサイズ)の一眼レフのフラッグシップ機『D5』およびDXフォーマット(APS-C)のフラグシップ機『D500』を発表しましたね。

スペックを見て最高のカメラだと思います。
私はD610を愛用していますが、比較にならないほど差を感じます。

まず高感度性能および連写性能が素晴らしい。

高感度性能は、D5で常用感度 ISO100〜102400、拡張感度 ISO50相当〜ISO3280000相当。
D500で常用感度 ISO100〜51200、拡張感度 ISO50相当〜ISO1640000相当。

D5の常用感度上限ISO102400はさすがフラグシップ機と感じますが、D500の上限ISO 51200でも素晴らしい。
現行のフラグシップ機D4Sでも常用感度上限はISO25600ですからそれを上回っています。
また実用的かどうかはさておき拡張感度上限は100万越えは正に異次元の世界です。

実際はISO感度なんてカタログスペックみたいなもので、どのぐらいまで実用的に使えるかは見てみないとなんとも言えません。
それでもISO6400〜12800あたりが実用的になると考えてくるとワクワクしてきます。

連写性能については、圧縮RAWで撮影してバッファフルにならずに200枚まで最高速度で連写できる点がすばらしい。
D610だとRAWで撮影すると14コマを超えたあたりで連写速度が落ちていきますので、200枚まで止まらず走りきれるバッファーは憧れます。

そして約2000万画素というバランスも素晴らしい。
実際D610使っていて約2400万画素だとデータが大きすぎると感じます。しかしD4Sの約1600万画素だと若干物足りない。
D5/D500の2000万画素はバランスがちょうど良いと思います。

測距点数153点、DXフォーマットサイズ時に画面左右方向全体に広がるフォーカスエリア。
動体へのAFの食いつきもさぞかし素晴らしいんじゃないかと思います。


また動画撮影ではNikon機の一眼レフで初となる4K動画の撮影にも対応しました。
Nikon以外のメーカーのカメラでは当たり前になっていましたから当然といえば当然かもしれませんが、Nikon機の欠点が一つ解消されたんじゃないかと思います。

個人的にはDXフォーマットのフラグシップ機である『D500』に惹かれています。
発売日の3月にすぐ購入するかは決めていませんが、Lightroomが対応したあたりにはできれば購入したいなとは思っています。

Packer + boxcutterでParallels Desktop用のVagrantboxイメージを作成する

Parallels用のVagrantboxを生成する手順のメモ。
昔はVeeweeに手を加えて作成していましたがPacker + boxcutterで簡単にできるようになっていたのでメモとして残しておきます。

Packerのインストール

まずはPackerのインストール。
Homebrew環境があれば簡単にインストールできます。

brew tap homebrew/binary
brew install packer

Packer用テンプレート『boxcutter』の取得

https://github.com/boxcutter/ から作成したいOSのテンプレートを取得します。
下記はCentOS用のテンプレートをgit cloneで取得している例です。

git clone https://github.com/boxcutter/centos.git

boxのビルド

あとはビルドするだけですが、その前にOSイメージのダウンロード元URLが国外サーバーのURLとなっていてイメージのダウンロードに時間が掛かるので必要に応じて書き換えておいた方が良いです。
下記はCentOS 7.2のiso_urlを書き換える例。

sed -i -e 's/"iso_url":.*/"iso_url": "http:\/\/ftp.riken.jp\/Linux\/centos\/7.2.1511\/isos\/x86_64\/CentOS-7-x86_64-DVD-1511.iso",/g' centos72.json

boxをビルドします。

cd centos
./bin/box build centos72 parallels

あとは5〜10分ほど待つだけ。

ビルドが終われば、box/parallelsの下にVagrantboxが生成されるので、vagrant box addコマンドで追加します。

vagrant box add CentOS-7.2.1511 box/parallels/centos72-nocm-2.0.11.box


以上、ご参考になれば幸いです。