LoginSignup
2
7

【CentOS】NW確認・変更コマンド【RHEL】

Last updated at Posted at 2020-07-17

せんとくん

20180516182359.jpg
やら赤帽少年のネットワーク関連の設定・確認方法です。

バージョン7からNetworkManagerの利用が推奨されているようですが、7以前のようにファイル編集でも設定はできます。

■HOSTNAME確認・設定

hostnamectl

でカーネルやらOS情報やらまとめて見れます。

出力例
[root@host01 /]# hostnamectl
Static hostname: host01
Icon name: computer-vm
Chassis: vm
Machine ID: 07346a5e12704a78a073eb9f111d5765
Boot ID: 848c64cbc5d942d2a7064fbf42540590
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-693.el7.x86_64
Architecture: x86-64

hostname ホスト名

でホスト名を変更できますが、再起動すると元に戻ります。
設定ファイルとしては/etc/hostnameがあるのですが、ここが反映されません。
恒久的に変更する場合は、

hostnamectl set-hostname --static ホスト名

で設定。これで/etc/hostnameにも反映されます。
また、

/etc/sysconfig/network
HOSTNAME=ホスト名

と記載しても反映されます。クラウドでのオーダーなんかだとデフォでこのファイルに記載されている場合があります。
まあどっちゃでもいいでしょう。

■IP設定(NetworkManager使用)

設定はnmcliコマンドか、GUI設定ツールのnmtuiを使う方法があります。

・nmcliコマンド

systemctl start NetworkManager

でサービス起動。

systemctl start NetworkManager

でネットワークの確認。

出力例
[root@host01 ~]# nmcli
ens160: 接続済み to ens160
"VMware VMXNET3 Ethernet Controller"
ethernet (vmxnet3), 00:50:56:8D:FF:13, hw, mtu 1500
ip4 デフォルト
inet4 192.168.1.100/24
inet6 fe80::250:56ff:fe8d:ff13/64

lo: 管理無し
"lo"
loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

既知のデバイスに関する情報を取得するには、"nmcli device show" を使用します。
アクティブな接続プロファイルの概要を取得するには、"nmcli connection show" を使用します。

使用方法の詳細情報については、nmcli(1) と nmcli-examples(5) の man ページを参照してください。

ご丁寧にオプションの説明書いてくれてる。。

nmcli device show
nmcli connection show

でネットワークデバイスの確認ができます。

nmcli c modify eth0 ipv4.addresses 192.168.1.100/24

でeth0のIP設定。

nmcli c modify eth0 ipv4.gateway 192.168.1.1

でデフォゲ設定。

nmcli c modify eth0 ipv4.dns 192.168.1.10

でDNSの設定。

nmcli connection reload

で設定を反映。
ここでの設定は/etc/sysconfig/network-scripts/ifcfg-eth0に記述されます。

・nmtui

次は、nmtuiでの設定です。

TUIで接続の編集やホスト名変更が可能です。
設定項目みながらポチポチできます。
20180516182549.jpg
こんな感じ。



■IP設定(ファイル編集)

「NetworkManagerなんか必要ねぇんだよ!」て人もいると思うので、従来の方法も載せときます。

ip a

でアドレスなどの確認。インストールすればifconfigも使えますが、慣れればこっちの方が楽です。

/etc/sysconfig/network-scripts/ifcfg-eth0
を編集して設定。eth0は該当するデバイス名です。
NICが追加されるとそのデバイスの名前をつけた設定ファイルを作成しないといけません。そこは面倒ですね。
よくわからんパラメータが沢山ありますが、基本的に以下のパラメータがあれば大丈夫かなと。 

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes           #OS起動時に有効化
TYPE=Ethernet
BOOTPROTO=none       #直接IPを指定
IPADDR=192.168.1.100
PREFIX=24
NM_CONTROLLED=NO     #NetworkManagerを使用しない

IPv6使わない場合は項目ごと消しちゃって大丈夫です。
PREFIXの箇所は、
NETMASK=255.255.255.0
のように記述することもできます。


また、IPエイリアスを設定したい場合は
IPADDR1=192.168.1.111
PREFIX1=24
のように追記することで設定できます。

デフォルトゲートウェイの設定は
GATEWAY=192.168.1.1
DEFROUTE=yes
と追記することで設定はできるのですが、NICが複数あったりする場合は以下のファイル1つに記述しておく方がいいです。

/etc/sysconfig/network
GATEWAY=192.168.1.1

ファイル編集後、サービス再起動。
systemctl restart network

■Bonding設定

複数NICを使ってLAGのインターフェースを組む場合です。チーミングだのbondingだのLAGだの名称を統一してくれ(小声)

・bondingモジュールのインストール

[root@host01 ~]# modprobe --first-time bonding

・bondingの種類

一応種類をまとめておきます。

mode=0 : balance-rr
⇒ラウンドロビンによる負荷分散。bondingを組んでいるすべてのインタフェースで受信。

mode=1 : active-backup
⇒active/backupの方式。activeポートが使用できなくなると、backupポートがactiveポートになる。

mode=2 : balance-xor
⇒送信元/宛先情報を元に負荷分散。情報はxmit_hash_policyによって設定。bondingを行っているすべてのインタフェースで受信。

mode=3 : broadcast
⇒すべてのインタフェースから同じパケットを送信。bondingを行っているすべてのインタフェースで受信。

mode=4 : 802.3ad
⇒LACP(Link Aggregation Control Protocol:リンクアグリゲーションの接続を確立させるプロトコル)を使用。情報はxmit_hash_policyによって設定可能。送信元/宛先情報を元に負荷分散を行い、受信はLACPでネゴシエーションが取れたインタフェースで行う。

mode=5 : balance-tlb
⇒スレーブインタフェースの負荷によって負荷分散され、送信。bondingを行っているすべてのインタフェースで受信。

mode=6 : balance-alb
⇒スレーブインタフェースの負荷によって負荷分散され、送信。受信は負荷に応じて変更。

・設定・確認

全体確認↓

[root@host01 ~]# ls /proc/net/bonding/
bond0  bond1  bond2

IFの確認。eth0と1でActive/Standby(mode1)でeth0をprimaryにしてbond0を組む場合。↓

/proc/net/bonding/bond0
[root@host01 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 10000
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 68:05:ca:e0:b4:1e
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 68:05:ca:e0:b4:1f
Slave queue ID: 0
[root@host01 ~]#

IFの確認。eth0と1でmode4でbond0を組む場合。

/proc/net/bonding/bond0
[root@host01 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: b4:96:91:c1:XX:XX
Active Aggregator Info:
        Aggregator ID: 9
        Number of ports: 2
        Actor Key: 21
        Partner Key: 32769
        Partner Mac Address: 00:23:04:ee:XX:XX

Slave Interface: eth0
MII Status: up
Speed: 25000 Mbps
Duplex: full
Link Failure Count: 88
Permanent HW addr: b4:96:91:c1:XX:XX
Slave queue ID: 0
Aggregator ID: 9
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 1
Partner Churned Count: 2
details actor lacp pdu:
    system priority: 65535
    system mac address: b4:96:91:c1:XX:XX
    port key: 21
    port priority: 255
    port number: 1
    port state: 63
details partner lacp pdu:
    system priority: 8192
    system mac address: 00:23:04:ee:XX:XX
    oper key: 32769
    port priority: 32768
    port number: 257
    port state: 63

Slave Interface: eth1
MII Status: up
Speed: 25000 Mbps
Duplex: full
Link Failure Count: 5
Permanent HW addr: b4:96:91:c1:XX:XX
Slave queue ID: 0
Aggregator ID: 9
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
    system priority: 65535
    system mac address: b4:96:91:c1:XX:XX
    port key: 21
    port priority: 255
    port number: 2
    port state: 63
details partner lacp pdu:
    system priority: 8192
    system mac address: 00:23:04:ee:XX:XX
    oper key: 32769
    port priority: 32768
    port number: 16641
    port state: 63
[root@host01 ~]#

設定はコンフィグファイルで行います.(一応nmcliを推奨のようですが...)
スレーブはファイル名とDEVICEの値以外は両方同じ設定。↓

/etc/sysconfig/network-scripts/ifcfg-eth0,eth1
DEVICE=eth0(1)
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
BONDING_OPTS="mode=1 miimon=100 primary=eth0 updelay=10000"

mode4なら、BONDING_OPTS="mode=4 lacp_rate=1"
ちなみにVLANを設定したい場合は、/etc/sysconfig/networkVLAN=yesを追記してVLANを有効化した上で、
ifcfg-XXXファイル名に.VLAN番号をつけて作成。(このファイルにVLAN=yesを入れてもよい。)↓

/etc/sysconfig/network-scripts/ifcfg-bond0.1111
DEVICE=bond0.1111
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=static
NM_CONTROLLED=no
IPADDR=10.11.0.2
PREFIX=24
IPV6INIT=no
VLAN=yes

■Bridge設定

仮想ブリッジ ⇒ ホストLinux上に仮想的なL2スイッチを構成する機能
ホストLinuxの物理NICを仮想ブリッジに接続し、L2スイッチを経由してVMを外部ネットワークに接続します。VMには、外部ネットワークと同じサブネットのIPアドレスをアサインする必要があります。通信フローとしては、
VMの仮想NIC ⇒ ホストLinux側のTAPデバイス ⇒ 仮想ブリッジ ⇒ ホストの物理NIC ⇒ 外部NW
同じ仮想ブリッジに接続されたVM同士は、仮想ブリッジを経由して通信することが可能です。

確認↓

[root@host01 ~]$ brctl show
bridge name     bridge id               STP enabled     interfaces
br2222          8000.b026286cdb90       no              bond0.2222
                                                        vnet0
br3333          8000.20040ffaf61c       no              eth2
                                                        vnet1
virbr0          8000.525400e0da30       yes             virbr0-nic

設定はコンフィグファイルで行う.(一応nmcliを推奨のようだが...)
ホストサーバにもアドレスを振る場合はここ。↓

/etc/sysconfig/network-scripts/ifcfg-br2222
DEVICE=br2222
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.11.10.200
PREFIX=24

物理NICと仮想ブリッジを接続する。
bondingの場合、ブリッジファイルをここで指定↓

/etc/sysconfig/network-scripts/ifcfg-bond0.2222
DEVICE=bond0.2222
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
IPV6INIT=no
BRIDGE=br2222

bondingでない場合はifcfg-ethXの物理IFのファイルでBRIDGE=brXXXXを指定すればよい。

■静的経路の追加

route add -net 192.168.99.0/24 gw 192.168.0.254 eth0

route add -net IPアドレス/サブネット gw 宛先ルータアドレス 発信するデバイス名
で一時的に追加できます。またip routeコマンドでも設定できますが、これらは再起動すると消えます。


恒久的に追加する場合は

/etc/sysconfig/network-scripts/route-eth0
192.168.9.0/24 via 192.168.0.254 dev eth0

と記述。 
ファイルで既に指定しているので、dev eth0は省略できます。

ip route

でルーティングテーブル確認。

■パケットキャプチャ

tcpdumpが入っていればパケットのキャプチャを取得できます。

tcpdump -i eth1 port 53 -nn -s 0 -tttt

eth1インターフェースを通過するポート53のトラフィックをキャプチャし、その内容をタイムスタンプ付きで表示

■DNS設定

ifcfgファイルに記述することもできますが、/etc/resolv.confに記述するのが一般的です。

/etc/resolv.conf
nameserver 10.70.71.107
nameserver 10.70.71.108

で設定。

nslookup

で確認。コマンドがない場合は、yumなどでbind-utilsをインストールするか、
dig,hostコマンドでも名前解決を調べられます。

dig -b 192.168.0.1 @10.0.0.1 www.google.co.jp +tries=1

192.168.0.1を送信元として、DNSのクエリを10.0.0.1のDNSサーバーに送信し、www.google.co.jpドメインのIPアドレスを取得しようとする。
+tries=1のオプションでDNSサーバーへのクエリ再試行の回数を1回のみの試行でドメインのIPアドレスを取得します。

■CONNECTION状態

必須級。

netstat -nplt

-n: IPアドレスとポート番号を数値形式で表示。DNSの逆引きなどは行われず、IPアドレスとポート番号をそのまま表示。
-p: 各接続やソケットに紐付いているプログラム名(プロセス名)を表示。ポート番号とプロトコルの組み合わせをプロセスにマッピングするために使用。
-l: リスニング(Listen)状態のソケットや接続を表示。つまりローカルマシンが他のマシンからの接続を受け入れるために待機しているポート。
-t: TCP接続を表示
-u: UDP接続を表示


後継としてssコマンドもある。
ss -antp

-a:LISTEN,NOLISTEN両方の情報を表示。-lでListenのみ
-n:アドレスやポートを数値で表示
-t:TCP接続を表示
-p:プロセス名を表示

■SSH設定

ファイル群は/etc/ssh/ディレクトリにあります。

/etc/ssh/sshd_config
#$OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22                                 ###ここでポート番号を変更できる
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin yes
PermitRootLogin without-password           ###パスワードを使用したrootユーザのログインを拒否
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes                  ###パスワード認証を有効にする

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes

# GSSAPI options
GSSAPIAuthentication no
GSSAPICleanupCredentials no
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
# problems.
UsePAM yes

#AllowAgentForwarding yes
AllowTcpForwarding yes                ###SSHポートフォワーディングを有効にする
#AllowTcpForwarding no
#GatewayPorts no
#X11Forwarding yes
X11Forwarding no                      ###X11フォワーディングを無効にする
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation sandbox
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

# override default of no subsystems
Subsystem sftp/usr/libexec/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#X11Forwarding no
#AllowTcpForwarding no
#PermitTTY no
#ForceCommand cvs server

・公開鍵認証

1. クライアントがサーバ(接続先)にSSH接続要求する
2. サーバがクライアントへ自身の公開鍵を送信
3. クライアントがランダムデータを作成し、サーバから受け取った公開鍵で暗号化してサーバへ送信
4. サーバが秘密鍵で復号化し、復号化したデータのハッシュ値をクライアントへ送信
5. クライアントは、暗号化前のランダムデータのハッシュ値とサーバから送られてきたハッシュ値を比較し、同じであれば通信を開始する。

②で送られた公開鍵のハッシュ値をフィンガープリントという。
初めて接続するホストの場合、このフィンガープリントの確認フローが入る。

$ ssh user01@192.168.0.1
The authenticity of host '192.168.0.1 (192.168.0.1)' can not be established.
ECDSA key fingerprint is SHA256:yhxvI/1TAjI0wvlYiRMCJvUsiYAX/L6eiyffagg+Rv00.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
$ yes
Warning: Permanently added '192.168.0.1' (ECDSA) to the list of known hosts.
Password:

初回ログイン後、サーバの公開鍵はLinuxの場合、~/.ssh/known_hostsに保存され、次回からは手順3からスタートできる。
ちなみに以下コマンドを事前に実行していると確認フローをスキップできる。

ssh-keyscan 192.168.0.1 >> ~/.ssh/known_hosts

サーバの秘密鍵はssh_host_rsa_key
公開鍵はssh_host_rsa_key.pub

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

と表示されてSSHできない場合、

ssh-keygen -R 192.168.0.1

で指定したホストに属する鍵を取り除くため、初回接続からやり直すことができる。

■WEB系通信

openssl s_client -connect xxxx.com:443

openssl s_client: OpenSSLコマンドでSSL/TLSクライアントを起動
-connect xxxx.com:443: 接続先のホスト名とポート番号を指定

このコマンドを実行すると、指定されたホストとポート上のサーバーに対してSSL/TLS接続が試みられる。
接続が成功すると、サーバーの証明書情報や使用されるSSL/TLSバージョンなどの詳細な情報が表示される。

ちなみに、証明書ファイルの内容を表示したい場合は以下。

openssl x509 -in /etc/yyyy.crt -text

以上。

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7