Linux仮想サーバーでのsystemd-networkdの利点

通常、Linuxデスクトップでは、NetworkManagerはネットワーク設定の管理に使用されます。これは、NetworkManagerが適切に機能し、一般的なすべてのグラフィカル環境用のGUIフロントエンドを備えているためです。 ただし、Linuxサーバーでは、その使用はお勧めできません。多くのリソースを消費します。 NetworkManagerは約20 MBのRAMを使用しますが、systemd-networkdとsystemd-resolvdの合計は2 MB未満です。 このため、デフォルトでは、 Linuxサーバーサーバーディストリビューションはさまざまなネイティブデーモンを使用することがよくあります。







これにより、スクリプトとユーティリティの完全な動物園が作成されます。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ディレクトリにあります。 次のタイプが利用可能です。





例の構成: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はコンテナー化および仮想マシンでの使用に非常に便利になります。






All Articles