Linuxでネットワークを管理したい

Linuxでネットワークの設定をする際に役立つ仕組みを調べました

投稿日: 2023年7月4日

最終更新日: 2024年5月1日

ネットワークを管理するファイル

/etc/hosts

名前解決をするために使われるファイルです。一行に1つのIPアドレスと1つ以上のホスト名を持ちます。

現在は、DNSによる名前解決と併用されています。

例:

127.0.1.1 vultr.guest vultr
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

/etc/hostname

ホスト名を設定します。Debian系で使われるファイルです。

例:

vultr

/etc/nsswitch.conf

名前解決やサービス名の解決を行う際の問い合わせ順序を指定します。

例えば、hostsfiles dnsを指定している場合は、/etc/hostsを参照し、そのファイルにIPアドレスとホスト名の対応が記載されていなかった場合に、/etc/resolv.confに記載されているDNSによる名前解決を行います。

例:

passwd:         files systemd
group:          files systemd
shadow:         files
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

ネットワークを管理するコマンド

route

ルーティングテーブルを操作します。

ubuntu@vultr:~$ whatis route
route (8)            - show / manipulate the IP routing table

IPv4のルーティングテーブルを表示

route
route -4

IPv6のルーティングテーブルを表示

route -6

ip

ルーティング、ネットワークデバイス、インターフェースを管理します。

ubuntu@vultr:~$ whatis ip
ip (8)               - show / manipulate routing, network devices, interfaces and tunnels

ipコマンドは、iproute2というパッケージに含まれています。

iproute2は、ifconfig, route, arp, netstatなどのコマンドを置き換えるために開発されました。

オブジェクト(機能)に対してコマンドを指定します。

主なオブジェクト

  • link, li, l: ネットワークデバイス
  • addr, ad, a: ネットワークデバイスのIPアドレス
  • route, rou, r: ルーティングテーブルのエントリー
  • neighbour, nei, n: IPv4のARPキャッシュ、IPv6のNDキャッシュ

主なコマンド

  • add, ad, a: IPアドレスを追加
  • del, de, d: IPアドレスを削除
  • show, sh, s: IPアドレスを表示

ネットワークインターフェースのIPアドレスを表示

ip addr show
ip a s

ネットワークインターフェースの状況のみを表示

ip link show
ip li sh

nslookup

ネームサーバに対して対話的にクエリを実行します。

ubuntu@vultr:~$ whatis nslookup
nslookup (1)         - query Internet name servers interactively

正引きを行う

ホスト名に対応するIPアドレスを問い合わせることを正引きと言います。

nslookup example.com

逆引きを行う

IPアドレスに対応するホスト名を問い合わせることを逆引きと言います。PTRレコードを参照します。

nslookup 172.217.31.174

host

DNSルックアップを行います。nslookupと異なり、対話的な実行ができません。名前解決を行うコマンドの中で、最も表示される内容がシンプルです。

ubuntu@vultr:~$ whatis host
host (1)             - DNS lookup utility

正引きを行う

nslookupと同じく、引数にホスト名を渡します。

逆引きを行う

nslookupと同じく、引数にIPアドレスを渡します。

dig

DNSルックアップを行います。nslookup, hostよりも詳細な情報を得られます。

ubuntu@vultr:~$ whatis dig
dig (1)              - DNS lookup utility

digコマンドでは、検索タイプを指定できます。

  • a: Aレコード
  • aaaa: AAAAレコード
  • any: 全てのレコード
  • cname: CNAMEレコード
  • mx: MXレコード
  • ns: NSレコード
  • ptr: PTRレコード
  • txt: TXTレコード

aレコードを問い合わせる

dig a example.com

NSレコードを問い合わせる

dig ns example.com

@以降にIPアドレスを指定することで、名前解決に使うネームサーバを指定できます。

例えば、CloudflareのパブリックDNSを使う場合は@1.1.1.1と指定します。

dig @1.1.1.1 example.com

ifconfig

ネットワークインターフェースを設定します。

ubuntu@vultr:~$ whatis ifconfig
ifconfig (8)         - configure a network interface

全てのインターフェースの情報を表示

ifconfig

一部のインターフェースの情報を表示

ifconfig enp1s0

インターフェースを有効にする

ifconfig enp1s0 up 

インターフェースを無効にする

ifconfig enp1s0 down

traceroute

リモートホストまでの経路情報を表示します。

ubuntu@vultr:~$ whatis traceroute
tcptraceroute (8)    - print the route packets trace to network host

example.comまでの経路情報を表示

traceroute example.com

netstat

ネットワークの統計情報を表示します。

ubuntu@vultr:~$ whatis netstat
netstat (8)          - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

全ての有効なネットワーク接続を表示

netstat
netstat -a

UDPの有効なネットワーク接続を表示

netstat -u

TCPの有効なネットワーク接続を表示

netstat -t

ルーティングテーブルを表示

netstat -r

netplan

yamlファイルを使ってネットワーク設定をします。

ubuntu@vultr:~$ whatis netplan
netplan (5)          - YAML network configuration abstraction for various backends

/etc/netplan/にyamlファイルを作成することで、そのファイルの内容を基にネットワークを設定してくれます。

例えば、enp1s0にDHCPを設定する場合は以下の内容を記載します。

network
    version: 2
    renderer: networkd
    ethernets:
        enp1s0:
            dhcp4: true
            dhcp6: true

ネットワークを管理するデーモン

systemd-networkd

ネットワーク設定を管理するデーモンです。/etc/systemd/network/にあるファイルを参照します。

例えば、DHCPを設定する場合は/etc/systemd/network/dhcp.networkというファイルに以下の設定を記載します。

[Match]
Name=en*

[Network]
DHCP=yes

systemd-resolved

スタブリゾルバを使った名前解決を提供するデーモンです。DNSSEC, DNS over TLSにも対応しています。

/etc/systemd/resolved.confに設定を記載します。

例:

[Resolve]
# Some examples of DNS servers which may be used for DNS= and FallbackDNS=:
# Cloudflare: 1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4700::1111#cloudflare-dns.com 2606:4700:4700::1001#cloudflare-dns.com
# Google:     8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google
# Quad9:      9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net
#DNS=
#FallbackDNS=
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=no
#LLMNR=no
#Cache=no-negative
#CacheFromLocalhost=no
#DNSStubListener=yes
#DNSStubListenerExtra=
#ReadEtcHosts=yes
#ResolveUnicastSingleLabel=no