ArchLinux のネットワークの設定に関するページです。 情報:Network configuration - ArchWiki ネットワークデバイス名 †Systemd v197 からネットワークデバイスの命名法が変更され、eth0 とかではなく、enp2s0 などになった。 ip コマンド †ArchLinux では ifconfig コマンドが使えないので、代わりに ip コマンドを用いる。 $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:19:99:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.xx.xx/24 brd 192.168.xx.255 scope global dynamic enp3s0
valid_lft 41645sec preferred_lft 41645sec
inet6 fe80::2xx:xxff:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
DHCP †手動で DHCP サーバから IP アドレスを取得するには、dhcpcd コマンドで引数にネットワークインタフェース名を指定する。 # dhcpcd interface名
systemd-networkd †バージョン 209 以上の systemd では systemd-networkd を使ってネットワークの設定ができるようになった。/etc/systemd/network ディレクトリ以下に設定ファイルを配置すれば良い。 有線のイーサポートを DHCP で設定するには、
というようなファイルを作成すればよい。 また、DHCP の場合、systemd-networkd は自動的に /etc/resolv.conf を更新せず、/run/systemd/resolve/resolv.conf を更新するだけなので、シンボリックリンクを貼ればよい。 $ sudo systemctl enable systemd-resolved $ sudo systemctl start systemd-resolved $ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf あとは、systemd-networkd を有効にする。 $ sudo systemctl enable systemd-networkd.service $ sudo systemctl start systemd-networkd.service 固定 IP †固定 IP の設定法はいろいろあるようだが、とりあえず 2014-10-30 現在 Network configuration - ArchWikiに記載されていた方法を使ってみた。 Raspberry Piの場合。 Network configuration - ArchWikiに記載されていた方法 †DHCP の設定ファイルを削除 †$ sudo rm /etc/systemd/network/eth0.network
設定ファイルの作成 †$ mkdir /etc/conf.d
/etc/conf.d/net-conf-eth0 を以下の内容で作成する。 address=192.168.xx.yy netmask=24 broadcast=192.168.xx.255 gateway=192.168.xx.zz ネットワーク起動・終了スクリプトの作成 †ネットワーク起動スクリプトを作成する。 /etc/conf.d/net-conf-interface ---------------------------------- address=192.168.1.2 netmask=24 broadcast=192.168.1.255 gateway=192.168.1.1 終了スクリプトを作成する。 /usr/local/bin/net-down.sh ---------------------------------- #!/bin/bash ip addr flush dev "$1" ip route flush dev "$1" ip link set dev "$1" down 作成したスクリプトに実行権を付与する。 $ chmod +x /usr/local/bin/net-{up,down}.sh
systemd への登録 †systemd サービスファイルを作成する。 /etc/systemd/system/network@.service ------------------------------------------ [Unit] Description=Network connectivity (%i) Wants=network.target Before=network.target BindsTo=sys-subsystem-net-devices-%i.device After=sys-subsystem-net-devices-%i.device [Service] Type=oneshot RemainAfterExit=yes EnvironmentFile=/etc/conf.d/net-conf-%i ExecStart=/usr/local/bin/net-up.sh %i ExecStop=/usr/local/bin/net-down.sh %i [Install] WantedBy=multi-user.target 作成したサービスを有効にする。 $ sudo systemctl enable network@eth0 $ sudo systemctl start network@eth0 DNS リゾルバの設定 †このままではローカルの DNS サーバが引けないので、以下の作業をする。 $ sudo systemctl stop systemd-resolved $ sudo systemctl disable systemd-resolved $ sudo rm /etc/resolv.conf $ sudo vi /etc/resolv.conf ----------------------------------------- nameserver 192.168.xxx.yyy}; netctl を使う方法 †情報: ArchLinuxでIPを静的に固定する at たにたにっき 無線LAN †情報:Wireless network configuration - ArchWiki 手動接続 †最終的には起動時に自動で無線LAN AP に接続するようにしたいが、各ステップで動作確認をしたほうが良いので、まず手動での接続テストを実施する。 必要なパッケージのインストール †暗号化に WPA/WPA2 を利用するには、wpa_supplicant パッケージが必要。 $ sudo pacman -S wpa_supplicant
無線ネットワークポートをアクティブにする †$ ip link show wls3 2: wls3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000 link/ether 00:13:e8:xx:xx:xx brd ff:ff:ff:ff:ff:ff 赤字の部分が UP になっていることを確認する。万が一、アクティブになっていない場合は、以下のコマンドでアクティブにする。 $ sudo ip link set wls3 up
AP の認証設定 †WPA/WPA2 を利用する場合は、/etc/wpa_supplicant/ ディレクトリ以下に設定ファイルを記述する。例えば、
このままでは、パスフレーズが設定ファイルに平文で保存されるので、セキュリティ上このましくない。そこで、wpa_passphrase コマンドを使ってパスフレーズを暗号化する。 $ wpa_passphrase SSID パスフレーズ
標準出力に以下のような内容が表示されるので、設定ファイルに反映する。 network={ ssid="SSID" #psk="passphrase" psk=28964ba6ea8b8f3a0db1c4414b327da253d0af5d4f4adccec0f8abfxxxxxxxxx } 暗号化したパスフレーズを使った例 # Simple case: WPA-PSK, PSK as an ASCII passphrase, allow all valid ciphers
#
# Home
network={
ssid="SSID1"
psk=94c34e9e634cd64a3abf803e71eb55393ccd724e98a8616ac93b4xxxxxxxxxxx
priority=10←この数字が大きい方が優先される
}
# Office
network={
ssid="SSID2"
psk=347864bce0aca0bdfc5d546012157106b626e003225bced87eadaxxxxxxxxxxx
priority=1
}
priority が設定されていないと、セキュリティポリシーや信号強度などに応じて自動的に接続先 AP が選択される。 WEPの場合 network={ ssid="SSID3" key_mgmt=NONE wep_key0="WEP key" priority=142 } AP への接続 †wpa_supplicant コマンドを使って、AP に接続する。 $ sudo wpa_supplicant -i wls3 -c /etc/wpa_supplicant/wireless.conf
オプションに -B を付けないとデーモンにならないので注意。 DHCP による IP アドレスの取得 †$ sudo dhcpcd wls3
動作確認 †無事に無線 LAN AP に接続し、通信ができるかどうか確認する。 $ ip address show wls3 2: wls3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:13:e8:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.aa.bb/24 brd 192.168.aa.255 scope global wls3 valid_lft forever preferred_lft forever inet6 fe80::213:yyyy:yyyy:yyyy/64 scope link valid_lft forever preferred_lft forever $ iw dev wls3 link Connected to 44:dc:91:xx:xx:xx (on wls3) SSID: MySSID freq: 5220 RX: 872416466 bytes (938430 packets) TX: 25391551 bytes (286521 packets) signal: -40 dBm tx bitrate: 6.0 MBit/s bss flags: short-slot-time dtim period: 0 beacon int: 100 $ ping www.yahoo.co.jp PING www.g.yahoo.co.jp (124.83.203.233) 56(84) bytes of data. 64 bytes from f8.top.vip.ogk.yahoo.co.jp (124.83.203.233): icmp_seq=1 ttl=54 time=13.8 ms 64 bytes from f8.top.vip.ogk.yahoo.co.jp (124.83.203.233): icmp_seq=2 ttl=54 time=14.6 ms 64 bytes from f8.top.vip.ogk.yahoo.co.jp (124.83.203.233): icmp_seq=3 ttl=54 time=13.6 ms 64 bytes from f8.top.vip.ogk.yahoo.co.jp (124.83.203.233): icmp_seq=4 ttl=54 time=13.7 ms ^C --- www.g.yahoo.co.jp ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 13.638/13.971/14.615/0.379 ms wpa_cli コマンドを用いた設定 †/etc/wpa_supplicant/wireless.conf (ファイル名は任意) に以下の行を書いて、wpa_cli コマンドで設定した内容が自動的に設定ファイルに反映されるようにする。 ctrl_interface=/run/wpa_supplicant update_config=1 自動接続 †wpa_supplicant は systemd 用のサービスを提供しているので、これを利用する。 wpa_supplicant@interface名.service $ sudo cp /etc/wpa_supplicant/wireless.conf /etc/wpa_supplicant/wpa_supplicant-interface名.conf $ sudo systemctl enable wpa_supplicant@interface名.service DHCP で IP アドレスを割り当てる場合、dhcpcd を利用して、起動時に自動的に無線ネットワークに接続できるように設定する。 $ sudo systemctl enable dhcpcd@interface名
Trouble Shooting †自動起動できるようになったが、自宅にノートPCを持ち帰ったら、無線 LAN が全く使えなくなっていた。よく見ると、Bluetooth と 無線 LAN のインジケータ LED が消えていた。無線デバイスの状態を調べると、 $ ip link show wls3
3: wls3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:13:e8:xx:xx:xx brd ff:ff:ff:ff:ff:ff
となっており、無線 LAN デバイスがアクティブになっていない。アクティブにしようとすると、 $ sudo ip link set dev wls3 up
RTNETLINK answers: Operation not possible due to RF-kill
となり、失敗する。RF-kill で検索すると、rfkill というコマンドで設定できるらしい。現在の状態は、 $ sudo pacman -S rfkill $ rfkill list 0: tpacpi_bluetooth_sw: Bluetooth Soft blocked: yes Hard blocked: yes 1: phy0: Wireless LAN Soft blocked: yes Hard blocked: yes ブロックを解除すると、 $ sudo rfkill unblock all $ rfkill list 0: tpacpi_bluetooth_sw: Bluetooth Soft blocked: no Hard blocked: yes 1: phy0: Wireless LAN Soft blocked: no Hard blocked: yes まだハードブロックが有効になっている。よくよく調べてみると、Thinkpad の無線 LAN スイッチが OFF になっていた。orz 参考 †
net-tools is obsolete -> iproute2 †netstat など今までよく使っていたコマンドが ArchLinux では obsolete とされていて、iproute2 パッケージを使うことが推奨されている。 情報:Arch Linux - News: Deprecation of net-tools # pacman -Ql iproute2 | grep bin iproute2 /usr/bin/ iproute2 /usr/bin/arpd iproute2 /usr/bin/bridge iproute2 /usr/bin/ctstat iproute2 /usr/bin/genl iproute2 /usr/bin/ifcfg iproute2 /usr/bin/ifstat iproute2 /usr/bin/ip iproute2 /usr/bin/lnstat iproute2 /usr/bin/nstat iproute2 /usr/bin/routef iproute2 /usr/bin/routel iproute2 /usr/bin/rtacct iproute2 /usr/bin/rtmon iproute2 /usr/bin/rtpr iproute2 /usr/bin/rtstat iproute2 /usr/bin/ss iproute2 /usr/bin/tc 新旧コマンド対応表
情報:Deprecated Linux networking commands and their replacements | Doug Vitale Tech Blog ss †netstat の代替コマンド。 # ss -t -u -a
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 192.168.xx.aaa:ntp *:*
udp UNCONN 0 0 127.0.0.1:ntp *:*
udp UNCONN 0 0 *:ntp *:*
udp UNCONN 0 0 fe80::219:99ff:fedf:ea4d%enp3s0:ntp :::*
udp UNCONN 0 0 ::1:ntp :::*
udp UNCONN 0 0 :::ntp :::*
udp UNCONN 0 0 :::dhcpv6-client :::*
tcp LISTEN 0 128 *:ssh *:*
tcp ESTAB 0 0 192.168.xx.aaa:ssh 192.168.xx.bb:55449
tcp LISTEN 0 128 :::ssh :::*
参考 †情報 † |