これにより、スクリプトとユーティリティの完全な動物園が作成されます。Debianのネットワークデーモンは、/ etc / networking / interfaces.dに保存されている構成ファイルと、スクリプトを使用するCentOSネットワーク下の/ etc / networking / interfacesファイルを使用して、ifupdownによってネットワーク構成を管理しますifupとifdown、そしてもちろん、それらの設定ファイルは/ etc / sysconfig / network-scripts、ArchLinuxの下のnetctlにあります。 Linuxがコンストラクターであることは誰もが知っていますが、ネットワークのセットアップなど、さまざまなシステムで単純で一般的なものが同じように見えないのはなぜですか?
特に多くのディストリビューションが既にsystemdに切り替えられているため、systemd-networkdへの切り替えは難しくないという事実を考慮して、高速でシンプルなsystemd-networkdデーモンの使用を開始することをお勧めします。 現在、systemd-networkdは多くのユーティリティを置き換えることができ、DHCP(クライアントおよびサーバー)と静的IPアドレス、ブリッジ、トンネル、VLAN、ワイヤレスネットワーク(wpa_supplicantを使用)の両方でネットワーク構成をサポートします。
この記事では、systemd-networkdをアクティブにして使用を開始する方法と、他のデーモンに対する主な利点について説明します。
systemd-networkdの実行
systemdの導入に対する情熱にもかかわらず、多くの一般的なLinuxディストリビューションはこのサービスマネージャーを使用し、デフォルトで提供し始めました。 したがって、システムには、おそらくsystemd-networkdを有効にするために必要なものがすべて含まれています。 systemdバージョン210以降が必要です。
次のコマンドを使用してバージョンを確認できます。
$ systemctl --version
使用するには、次の2つのサービスを開始し、システムの起動時にそれらが機能するようにします(ネットワーク構成を制御する他のデーモンを無効にします)。
$ systemctl enable systemd-networkd $ systemctl start systemd-networkd $ systemctl enable systemd-resolved $ systemctl start systemd-resolved
構成
スイッチの例として、CentOSのデフォルトのネットワーク構成(/etc/rc.d/init.d/network initscript)をsystemd-networkdに移動することを検討してください。
まったく同じ方法で移動することは、Fedoraでも、わずかな変更を加えて、他のディストリビューションでも行えます。 systemd-networkd構成ファイルは、/ etc / systemd / networkディレクトリにあります。 次のタイプが利用可能です。
- .link-各インターフェイスの物理パラメータを説明します:名前、MAC、MTUなど
- .network-ネットワークパラメータを説明します:IP、ルート、DNSなど
- .netdev-仮想インターフェース、ブリッジの説明
例の構成:LANおよびWANの静的IPを持つ2つのインターフェース。
$ ip addr 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 04:01:40:23:1f:01 brd ff:ff:ff:ff:ff:ff inet 188.166.46.238/18 brd 188.166.63.255 scope global eth0 valid_lft forever preferred_lft forever inet6 2a03:b0c0:2:d0::69:7001/64 scope global valid_lft forever preferred_lft forever inet6 fe80::601:40ff:fe23:1f01/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 04:01:40:23:1f:02 brd ff:ff:ff:ff:ff:ff inet 10.133.248.54/16 brd 10.133.255.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::601:40ff:fe23:1f02/64 scope link valid_lft forever preferred_lft forever
CentOS(またはFedora)の構成ファイルは、/ etc / sysconfig / network-scriptsディレクトリにあります。
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE='eth0' TYPE=Ethernet BOOTPROTO=none ONBOOT='yes' HWADDR=04:01:40:23:1f:01 IPADDR=188.166.46.238 NETMASK=255.255.192.0 GATEWAY=188.166.0.1 NM_CONTROLLED='yes' IPV6INIT=yes IPV6ADDR=2A03:B0C0:0002:00D0:0000:0000:0069:7001/64 IPV6_DEFAULTGW=2A03:B0C0:0002:00D0:0000:0000:0000:0001 IPV6_AUTOCONF=no DNS1=2001:4860:4860::8844 DNS2=2001:4860:4860::8888 DNS3=8.8.8.8
ディレクトリ/ etc / systemd / network /に4つのファイルを作成する必要があります
$ cat /etc/systemd/network/90-external.link [Match] MACAddress=04:01:40:23:1f:01 [Link] Name=eth-outer $ cat /etc/systemd/network/90-internal.link [Match] MACAddress=04:01:40:23:1f:02 [Link] Name=eth-inner $ cat eth-external.network [Match] Name= eth-outer [Network] DHCP=no Adress=188.166.46.238/18 Adress=2A03:B0C0:0002:00D0:0000:0000:0000:0069:7001/64 Gateway=188.166.0.1 Gateway= 2A03:B0C0:0002:00D0:0000:0000:0000:0000:0001 DNS=2001:4860:4860:8844 DNS=2001:4860:4860:8888 DNS=8.8.8.8 $ cat eth-internal.network [Match] Name=eth-inner [Network] Address=10.133.248.54/16
それだけです:ネットワーク設定は完了です。 これで、サービスを再起動できます。
systemctl restart systemd-networkd $ networkctl IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback n/a n/a 2 eth-outer ether routable configured 3 eth-inner ether routable configured
他の種類のネットワーク:
DHCP
この例では、DHCP IPv4およびIPv6を構成します。 不要な場合、IPv6を除外できます。
$ cat /etc/systemd/network/wired-dhcp.network [Match] Name=eth* [Network] DHCP=ipv4 DHCP=ipv6
ブリッジ接続
最初に仮想インターフェイス構成を作成します。
$ cat /etc/systemd/network/bridge.netdev [NetDev] Name=br0 Kind=bridge $ cat /etc/systemd/network/bridge.network [Match] Name=br0 [Network] DHCP=ipv4
接続するインターフェースを構成します。
$ cat /etc/systemd/network/wired.network [Match] Name=eth* [Network] Bridge=br0
短所(一般的にはサーバーには関係ありません)
1. systemdなしでは機能しません。
2. CLIまたはGUIフロントエンドはありません。 NetworkManagerとnetctlの両方に、この欠陥はありません。 たとえば、WiFiに接続するには、コマンドラインが必要です。 サーバーに完全に関連するわけではありません。
3. WiFiへの最初の接続には、ルート権限が必要です。 ただし、これは大きな欠点ではありません。将来、このワイヤレスネットワークは自動的に接続されるためです。
4.注意を怠ると、WiFiパスワードをコマンド履歴にクリアテキストで保存できます。 ただし、これはいくつかの方法で簡単に回避できます:一時的にコマンドを履歴に書き込むことを無効にする(bashの場合:set + o history、set -o history)、履歴を記憶しないシェルを使用する(ダッシュなど)、または単に履歴からパスワードを手動で削除する
ベンチマーク
DHCP経由でアドレスを受信する速度がテストされ、ネットワークマネージャーとdnsmasqが無効になります。
ソフト:
-CentOS 7
-kernel-3.10.0-327.28.3.el7
-systemd 219
-ISC DHCPクライアントデーモンとdhclient-script 4.2.5
systemd-networkd
$ systemctl start systemd-networkd $ journalctl -u systemd-networkd.service Sep 01 13:04:41 localhost systemd[1]: Starting Network Service... Sep 01 13:04:41 localhost systemd-networkd[4085]: Enumeration completed Sep 01 13:04:41 localhost systemd[1]: Started Network Service. Sep 01 13:04:41 localhost systemd-networkd[4085]: eth0: DHCPv4 address 192.168.1.114/24 via 192.168.1.1 Sep 01 13:04:41 localhost systemd-networkd[4085]: eth0: Configured
1秒以内に。
ISC DHCP
$ time dhclient -v eth0 Interface up - dhclient Internet Systems Consortium DHCP Client 4.2.5 Copyright 2004-2013 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/enp2s0/94:de:80:1a:da:af Sending on LPF/enp2s0/94:de:80:1a:da:af Sending on Socket/fallback DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x5b763f4d) DHCPACK from 192.168.1.1 (xid=0x5b763f4d) bound to 192.168.1.115 -- renewal in 20662 seconds. real 0m2.243s user 0m0.042s sys 0m0.216s
数回試行した後の平均時間は2.5秒でした。
おわりに
さまざまなトップLinuxディストリビューションがsystemdを積極的に使用していることを考えると、それでもコミュニティは基本的なシステム機能を統一しようとしていると結論付けることができます。 これらには、とりわけネットワーク構成が含まれ、systemdは、便利で高速かつ機能的なソリューションを提供します。 また、このソリューションはこれまでデスクトップシステム用のGUIの欠如の問題に直面していましたが、おそらくLinuxサーバーの事実上の標準になり、多くのレガシーデーモンと個別のユーティリティを置き換えます。 これにより、Linuxはコンテナー化および仮想マシンでの使用に非常に便利になります。