4
09
2017
Debian Jessie での固定IP設定方法
Debian Jessieで固定IPアドレスを設定する
久しぶりにBeagleBoneのLinuxを弄ってDebian のバージョンをこれまでのWheezy系列から最新のJessie系列に変更してみることにした.Debianは初期インストール状態ではIPアドレスはDHCPクライアントとして設定されており、DHCPサーバから指定された情報に基づいてTCP/IPネットワーク設定が行われる.
Linuxクライアントとして使う場合にはDHCPによる設定で特に問題となることはないと思うが、MPDなどを動かしてネットワークミュージックサーバとして使うのであれば、固定IP接続の方が都合が良い場合も有るので、Raspberry PiやBeagleBoneなどでDebianを動かす場合には固定IPの設定を行っている.
Debian Jessieでこれまでと同じように “/etc/network/interfaces” ファイルに固定IPアドレスの設定を記述しても、思ったように固定IPアドレスの設定ができないので、Debian JessieのIPアドレスの設定方法について探ってみた.
“/etc/network/interfaces” ファイルでは設定できない
“/etc/network/interfaces” ファイルに下記の様な記述を加えて固定IP化を謀ろうとしても、Jessie君は全く言うことを聞いてくれない.”/etc/network/interfaces” ファイルの中身を見るとコメント形式で次のような記述がある.
root@arm:/etc/network# cat interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#auto eth0
#iface eth0 inet dhcp
# Example to keep MAC address between reboots
#hwaddress ether DE:AD:BE:EF:CA:FE
##connman: ethX static config
#connmanctl services
#Using the appropriate ethernet service, tell connman to setup a static IP address for that service:
#sudo connmanctl config --ipv4 manual --nameservers
##connman: WiFi
#
#connmanctl
#connmanctl> tether wifi off
#connmanctl> enable wifi
#connmanctl> scan wifi
#connmanctl> services
#connmanctl> agent on
#connmanctl> connect wifi_*_managed_psk
#connmanctl> quit
# Ethernet/RNDIS gadget (g_ether)
# Used by: /opt/scripts/boot/autoconfigure_usb0.sh
iface usb0 inet static
address 192.168.7.2
netmask 255.255.255.252
network 192.168.7.0
gateway 192.168.7.1
root@arm:/etc/network#
“Using the appropriate ethernet service, tell connman to setup a static IP address for that service:
#sudo connmanctl config … “
どうやら Jessieでは コネクションマネージャ “connman” という仕組みを使ってネットワーク関係の設定を行っているようなので、”connman”を使って固定IP化を行う必要があるようだ.
#sudo connmanctl config <service> –ipv4 manual <ip_addr> <netmask> <gateway> –nameservers <dns_server>
“connmanctl” コマンドのパラメータのうち、 <service> が何の事なのか分かり難いが、前の行に、
#connmanctl services
とあるので、このコマンドを実行するとどうやら <service> の部分に記述するサービス名が判るのだろう.コネクションマネージャ “connman”関連のファイルを調べてみると、
root@arm:/etc/network# find / -name "connman*" -print
/run/connman
/etc/apport/crashdb.conf.d/connman-crashdb.conf
/etc/dbus-1/system.d/connman.conf
/etc/systemd/system/multi-user.target.wants/connman.service
/etc/connman
/etc/init/connman.conf
/etc/init.d/connman
/lib/systemd/system/connman-wait-online.service
/lib/systemd/system/connman.service
/usr/sbin/connmanctl
/usr/sbin/connmand
/usr/sbin/connmand-wait-online
/usr/share/doc/connman
/usr/share/lintian/overrides/connman
/usr/share/man/man5/connman-vpn.conf.5.gz
/usr/share/man/man5/connman.conf.5.gz
/usr/share/man/man5/connman-vpn-provider.config.5.gz
/usr/share/man/man5/connman-service.config.5.gz
/usr/share/man/man8/connman-vpn.8.gz
/usr/share/man/man8/connman.8.gz
/usr/share/man/man1/connmanctl.1.gz
/usr/lib/tmpfiles.d/connman_resolvconf.conf
/sys/fs/cgroup/devices/system.slice/connman.service
/sys/fs/cgroup/systemd/system.slice/connman.service
/var/lib/systemd/deb-systemd-helper-enabled/connman-wait-online.service.dsh-also
/var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/connman.service
/var/lib/systemd/deb-systemd-helper-enabled/connman.service.dsh-also
/var/lib/systemd/deb-systemd-helper-enabled/network-online.target.wants/connman-wait-online.service
/var/lib/connman
/var/lib/dpkg/info/connman.postrm
/var/lib/dpkg/info/connman.conffiles
/var/lib/dpkg/info/connman.postinst
/var/lib/dpkg/info/connman.preinst
/var/lib/dpkg/info/connman.list
/var/lib/dpkg/info/connman.md5sums
/var/lib/dpkg/info/connman.prerm
root@arm:/etc/network#
root@arm:/etc/network# ls -la /var/lib/connman
total 16
drwxr-xr-x 3 root root 4096 Apr 9 08:21 .
drwxr-xr-x 27 root root 4096 Apr 7 15:12 ..
drwx------ 2 root root 4096 Apr 9 08:21 ethernet_84eb18e6c96f_cable
-rw------- 1 root root 216 Apr 9 08:21 settings
root@arm:/etc/network# cd ethernet_84eb18e6c96f_cable
-su: cd: ethernet_84eb18e6c96f_cable: No such file or directory
root@arm:/etc/network# cd /var/lib/connman/ethernet_84eb18e6c96f_cable
root@arm:/var/lib/connman/ethernet_84eb18e6c96f_cable# ls -la
total 16
drwx------ 2 root root 4096 Apr 9 08:21 .
drwxr-xr-x 3 root root 4096 Apr 9 08:21 ..
-rw------- 1 root root 4096 Apr 9 08:21 data
-rw------- 1 root root 189 Apr 9 08:21 settings
root@arm:/var/lib/connman/ethernet_84eb18e6c96f_cable# cat settings
[ethernet_84eb18e6c96f_cable]
Name=Wired
AutoConnect=true
Modified=2017-04-09T08:21:46.211009Z
IPv4.method=dhcp
IPv4.DHCP.LastAddress=192.168.101.161
IPv6.method=auto
IPv6.privacy=disabled
root@arm:/var/lib/connman/ethernet_84eb18e6c96f_cable#
...という訳で、この”interfaces”ファイルのコメントに従って固定IPアドレス設定を行ってみた.
root@arm:~# connmanctl services
*AO Wired ethernet_84eb18e6c96f_cable
root@arm:~#
サービス名は “ethernet_84eb18e6c96f_cable” であるので、コマンドラインを次の様に設定して実行したところ、即座にIPアドレスが変更され次回以降OSを再起動しても設定した固定IPアドレスが設定されるようになった.
root@arm:~# connmanctl config ethernet_84eb18e6c96f_cable --ipv4 manual 192.168.101.32 255.255.255.0 192.168.101.254 nameservers 192.168.100.1 192.168.100.240
root@arm:~/botic# ifconfig
eth0 Link encap:Ethernet HWaddr 84:eb:18:e6:c9:6f
inet addr:192.168.101.32 Bcast:192.168.101.255 Mask:255.255.255.0
inet6 addr: fe80::86eb:18ff:fee6:c96f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST DYNAMIC MTU:1500 Metric:1
RX packets:8353 errors:0 dropped:0 overruns:0 frame:0
TX packets:4176 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11147121 (10.6 MiB) TX bytes:344427 (336.3 KiB)
Interrupt:173
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:160 errors:0 dropped:0 overruns:0 frame:0
TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:12960 (12.6 KiB) TX bytes:12960 (12.6 KiB)
usb0 Link encap:Ethernet HWaddr 84:eb:18:e6:c9:71
inet addr:192.168.7.2 Bcast:192.168.7.3 Mask:255.255.255.252
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
usb1 Link encap:Ethernet HWaddr 84:eb:18:e6:c9:74
inet addr:192.168.6.2 Bcast:192.168.6.3 Mask:255.255.255.252
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@arm:~/botic#