RedhatEnterpriseLinux8 ネットワーク関連の設定メモ

# RedhatEnterpriseLinux8 ネットワーク関連の設定

ネットワーク関連の操作・設定をする際の覚書  
基本的にRedhatのサイトを参考に、操作してみたログを記録として残しています。  
少しづつ内容を追加していくつもり。。。

## hostnameの確認・変更

### 状態確認

* hostname コマンドでhostnameを確認できる。
* hostnamectl で詳しい内容を確認できる。

```shell
[user01@rhel8vm ~]$ hostname
rhel8vm.example.co.jp
[user01@rhel8vm ~]$ hostnamectl status
   Static hostname: rhel8vm.example.co.jp
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 061612e4329546728247e1a998bf0a49
           Boot ID: 74f258b32da74dc99547497422e94c60
    Virtualization: vmware
  Operating System: Red Hat Enterprise Linux 8.5 (Ootpa)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:8::baseos
            Kernel: Linux 4.18.0-348.20.1.el8_5.x86_64
      Architecture: x86-64
[user01@rhel8vm ~]$
```

### hostname変更方法

* hostnamectl コマンドで変更します。ちなみに、RHEL6までは直接ファイルを編集してました。

```shell
[user01@rhel8vm ~]$ sudo hostnamectl set-hostname rhel8vm1.example.co.jp --static
[user01@rhel8vm ~]$ hostnamectl status
   Static hostname: rhel8vm1.example.co.jp
Transient hostname: rhel8vm.example.co.jp
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 061612e4329546728247e1a998bf0a49
           Boot ID: 74f258b32da74dc99547497422e94c60
    Virtualization: vmware
  Operating System: Red Hat Enterprise Linux 8.5 (Ootpa)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:8::baseos
            Kernel: Linux 4.18.0-348.20.1.el8_5.x86_64
      Architecture: x86-64
[user01@rhel8vm ~]$ 
[user01@rhel8vm ~]$ sudo shutdown -r now
```

再起動後の状態確認

```shell
[user01@rhel8vm1 ~]$ hostnamectl status
   Static hostname: rhel8vm1.example.co.jp
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 061612e4329546728247e1a998bf0a49
           Boot ID: 8090bb5b1be44ff0be99baa483702fd6
    Virtualization: vmware
  Operating System: Red Hat Enterprise Linux 8.5 (Ootpa)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:8::baseos
            Kernel: Linux 4.18.0-348.20.1.el8_5.x86_64
      Architecture: x86-64
[user01@rhel8vm1 ~]$ 
```

## ipv6の無効化

イントラで使うサーバーの場合、IPv6はそんなに流行ってない気がしてます。  
アクセス制御で考慮するポイントを減らすため、使う必要がなければ無効化しちゃいましょう。

参考）[How do I disable or enable the IPv6 protocol in Red Hat Enterprise Linux?](https://access.redhat.com/solutions/8709)

無効化方法の優先順位はこんな感じみたい。

1. NetworkManagerでのインターフェース単位の無効化
1. kernel boot optionでのIPv6サポートの無効化
1. sysctl でのIPv6無効化

### インストール直後のネットワーク

```shell
[user01@rhel8vm1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:71:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.116/24 brd 192.168.1.255 scope global dynamic noprefixroute ens160
       valid_lft 14348sec preferred_lft 14348sec
    inet6 240b:11:aae2:6200:20c:29ff:fe8c:710e/64 scope global dynamic noprefixroute 
       valid_lft 14350sec preferred_lft 12550sec
    inet6 fe80::20c:29ff:fe8c:710e/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
[user01@rhel8vm1 ~]$ 
```

### NetworkManagerでのIPv6無効化設定  
※この設定はインターフェース毎に行う必要があります。  
この設定は、sysctlに反映されます。

参考）[RHEL8 ネットワークの設定及び管理](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-networkmanager-to-disable-ipv6-for-a-specific-connection_configuring-and-managing-networking)

```shell
[user01@rhel8vm1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:71:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.116/24 brd 192.168.1.255 scope global dynamic noprefixroute ens160
       valid_lft 13771sec preferred_lft 13771sec
    inet6 240b:11:aae2:6200:20c:29ff:fe8c:710e/64 scope global dynamic noprefixroute 
       valid_lft 14323sec preferred_lft 12523sec
    inet6 fe80::20c:29ff:fe8c:710e/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
[user01@rhel8vm1 ~]$ nmcli connection show ens160 |grep ipv6.method
ipv6.method:                            auto
[user01@rhel8vm1 ~]$ sudo nmcli connection modify ens160 ipv6.method "disabled"
[user01@rhel8vm1 ~]$ nmcli connection show ens160 |grep ipv6.method
ipv6.method:                            disabled
[user01@rhel8vm1 ~]$ sudo nmcli connection up ens160
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4)
[user01@rhel8vm1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:71:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.116/24 brd 192.168.1.255 scope global dynamic noprefixroute ens160
       valid_lft 14398sec preferred_lft 14398sec
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
[user01@rhel8vm1 ~]$ 
```

### Grub(Kernelオプション)で無効化する方法

システムのIPv6サポート自体を無効化します。  
grubの設定に抵抗がない場合、この方法が一番確実な無効化方法だと思う。  
grubの設定を変更し、システムを再起動してください。

```shell
[user01@rhel8vm1 ~]$ sudo vi /etc/default/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/rhel_rhel8vm-swap rd.lvm.lv=rhel_rhel8vm/root rd.lvm.lv=rhel_rhel8vm/swap rhgb quiet ipv6.disable=1"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

ls -lh で確認したリンク先を指定して grub2-mkconfig を実行してください。
[user01@rhel8vm1 ~]$ ls -lh /etc/grub*.cfg
lrwxrwxrwx. 1 root root 22  8月 19  2021 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
[user01@rhel8vm1 ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
done
[user01@rhel8vm1 ~]$ sudo shutdown -r now
```

### sysctl で停止する方法

※ NetworkManagerが動作している環境では、この方法だと再起動時にIPv6が有効化される場合があります。
この設定だけで無効化できない場合、Netoworkmanagerでの無効化を併用してください。

標準のdisable.ipv6 の状態を確認  
仮想用のvirbr0だけが無効に設定されていました。

```shell
[user01@rhel8vm1 ~]$ sudo sysctl -a |grep disable_ipv6
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.ens160.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.virbr0.disable_ipv6 = 1
net.ipv6.conf.virbr0-nic.disable_ipv6 = 0
[user01@rhel8vm1 ~]$ 
```

ipv6を無効化するための設定ファイルの作成・読み込み

```shell
[user01@rhel8vm1 ~]$ sudo vi /etc/sysctl.d/ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
[user01@rhel8vm1 ~]$ sudo sysctl --load /etc/sysctl.d/ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
[user01@rhel8vm1 ~]$ 

[user01@rhel8vm1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:71:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.116/24 brd 192.168.1.255 scope global dynamic noprefixroute ens160
       valid_lft 14067sec preferred_lft 14067sec
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
[user01@rhel8vm1 ~]$ 
```

ここで再起動して状態を確認  
IPv6が無効化できていない場合、NetworkManagerの設定を実施してください。

```shell
[user01@rhel8vm1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:71:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.116/24 brd 192.168.1.255 scope global dynamic noprefixroute ens160
       valid_lft 14371sec preferred_lft 14371sec
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
[user01@rhel8vm1 ~]$ 
```

### IPv6無効化共通設定

/etc/hosts,/etc/netconfig からIPv6に関する設定を無効化します。

#### /etc/hosts のIPv6エントリを削除

この例では **##** でコメントアウトしています。

```shell
[user01@rhel8vm1 ~]$ sudo vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
##::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[user01@rhel8vm1 ~]$ 
```

#### /etc/netconfig のIPv6エントリを削除

この例では udp6/tcp6のエントリの **v** を **-** に置き換えることで無効化しています。  
この設定を行わないと、rpc起動時に以下のようなエラーメッセージが記録されます。

```shell
Mar 21 10:57:07 rhel8vm1 systemd[1]: Mounting RPC Pipe File System...
Mar 21 10:57:07 rhel8vm1 systemd[1]: Starting RPC Bind...
Mar 21 10:57:07 rhel8vm1 rpcbind[988]: cannot create socket for udp6
Mar 21 10:57:07 rhel8vm1 rpcbind[988]: cannot create socket for tcp6
```

```shell
[user01@rhel8vm1 ~]$ sudo vi /etc/netconfig 
#
# The network configuration file. This file is currently only used in
# conjunction with the TI-RPC code in the libtirpc library.
#
# Entries consist of:
#
#       <network_id> <semantics> <flags> <protofamily> <protoname> \
#               <device> <nametoaddr_libs>
#
# The <device> and <nametoaddr_libs> fields are always empty in this
# implementation.
#
udp        tpi_clts      v     inet     udp     -       -
tcp        tpi_cots_ord  v     inet     tcp     -       -
udp6       tpi_clts      -     inet6    udp     -       -
tcp6       tpi_cots_ord  -     inet6    tcp     -       -
rawip      tpi_raw       -     inet      -      -       -
local      tpi_cots_ord  -     loopback  -      -       -
unix       tpi_cots_ord  -     loopback  -      -       -
[user01@rhel8vm1 ~]$
```

## virbr0 の無効化

KVM用のブリッジインターフェースです。  
仮想環境を利用しなない場合必要ありません。ルーティングテーブルも作成される為、通信トラブルの調査で  
無駄に頭を悩ませる要因になりかねません。使わないなら無効化しちゃいましょう。

### ブリッジインターフェースの状態確認

```shell
[user01@rhel8vm1 ~]$ bridge link show
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 master virbr0 state disabled priority 32 cost 100 
[user01@rhel8vm1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:71:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.116/24 brd 192.168.1.255 scope global dynamic noprefixroute ens160
       valid_lft 14353sec preferred_lft 14353sec
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
[user01@rhel8vm1 ~]$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 ens160
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 ens160
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
[user01@rhel8vm1 ~]$ 
```

### libvirtdサービスの停止

```shell
[user01@rhel8vm1 ~]$ sudo systemctl disable libvirtd
[sudo] user01 のパスワード:
Removed /etc/systemd/system/multi-user.target.wants/libvirtd.service.
Removed /etc/systemd/system/sockets.target.wants/virtlogd.socket.
Removed /etc/systemd/system/sockets.target.wants/virtlockd.socket.
Removed /etc/systemd/system/sockets.target.wants/libvirtd.socket.
Removed /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket.
[user01@rhel8vm1 ~]$ systemctl list-unit-files |grep libvirtd
libvirtd.service                           disabled 
libvirtd-admin.socket                      disabled 
libvirtd-ro.socket                         disabled 
libvirtd-tcp.socket                        disabled 
libvirtd-tls.socket                        disabled 
libvirtd.socket                            disabled 
[user01@rhel8vm1 ~]$ sudo shutdown -r now
```

### libvirtd停止後のブリッジインターフェースの状態確認

virbr0 が消えて、付随するルーティングテーブルも消えてます。

```shell
[user01@rhel8vm1 ~]$ bridge link show
[user01@rhel8vm1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:71:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.116/24 brd 192.168.1.255 scope global dynamic noprefixroute ens160
       valid_lft 14367sec preferred_lft 14367sec
[user01@rhel8vm1 ~]$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 ens160
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 ens160
[user01@rhel8vm1 ~]$ 
```

## Stacic routeの設定

参考）[Configuring and managing networking](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-static-routes_configuring-and-managing-networking)

* 主に nmcli コマンドので設定か設定ファイルを記述する方法のどちらかを使用します。

### nmcli での設定

設定・設定の反映までNetworkManagerだけで管理できる。  
多くのエントリを修正する場合、コマンド操作が若干面倒に感じることがある。

#### ルーティングテーブルの追加

```shell
[user01@rhel8vm1 ~]$ sudo nmcli connection modify ens160 +ipv4.routes "192.168.2.0/24 192.168.1.2, 192.168.3.0/24 192.168.1.2"
[user01@rhel8vm1 ~]$ sudo nmcli connection up ens160
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4)
[user01@rhel8vm1 ~]$ 
```

#### ルーティングテーブルの確認

```shell
[user01@rhel8vm1 ~]$ ip route
default via 192.168.1.1 dev ens160 proto dhcp metric 100 
192.168.1.0/24 dev ens160 proto kernel scope link src 192.168.1.116 metric 100 
192.168.2.0/24 via 192.168.1.2 dev ens160 proto static metric 100 
192.168.3.0/24 via 192.168.1.2 dev ens160 proto static metric 100 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 
[user01@rhel8vm1 ~]$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 ens160
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 ens160
192.168.2.0     192.168.1.2     255.255.255.0   UG        0 0          0 ens160
192.168.3.0     192.168.1.2     255.255.255.0   UG        0 0          0 ens160
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
[user01@rhel8vm1 ~]$

[user01@rhel8vm1 ~]$ nmcli connection show ens160 |grep IP4.
IP4.ADDRESS[1]:                         192.168.1.116/24
IP4.GATEWAY:                            192.168.1.1
IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100
IP4.ROUTE[2]:                           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[3]:                           dst = 192.168.2.0/24, nh = 192.168.1.2, mt = 100
IP4.ROUTE[4]:                           dst = 192.168.3.0/24, nh = 192.168.1.2, mt = 100
IP4.DNS[1]:                             192.168.1.1
[user01@rhel8vm1 ~]$ 
```

#### ルーティングテーブルの削除

-ipv4.routes で削除したいルートを指定します。

```shell
[user01@rhel8vm1 ~]$ sudo nmcli connection modify ens160 -ipv4.routes "192.168.2.0/24 192.168.1.2, 192.168.3.0/24 192.168.1.2"
[user01@rhel8vm1 ~]$ sudo nmcli connection up ens160
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/6)
[user01@rhel8vm1 ~]$ ip route
default via 192.168.1.1 dev ens160 proto dhcp metric 100 
192.168.1.0/24 dev ens160 proto kernel scope link src 192.168.1.116 metric 100 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 
[user01@rhel8vm1 ~]$

[user01@rhel8vm1 ~]$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 ens160
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 ens160
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
[user01@rhel8vm1 ~]$ 

[user01@rhel8vm1 ~]$ nmcli connection show ens160 |grep IP4.
IP4.ADDRESS[1]:                         192.168.1.116/24
IP4.GATEWAY:                            192.168.1.1
IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100
IP4.ROUTE[2]:                           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]:                             192.168.1.1
[user01@rhel8vm1 ~]$ 
```

### 設定ファイルにルーティング情報を記述する方法

/etc/sysconfig/network-scripts/route-ens160 にルーティング情報を定義します。  
※ens160 部分は、実施のインターフェース名に置き換えてください。

#### 設定ファイルの作成

※Redhatのマニュアルでも設定の反映を network や NetworkManager の再起動で実施している例がありますが、  
設定が読み込まれなかったため、nmcliでネットワークを再起動してます。

```shell
[user01@rhel8vm1 ~]$ sudo vi /etc/sysconfig/network-scripts/route-ens160
192.168.2.0/24 via 192.168.1.2 dev ens160
192.168.3.0/24 via 192.168.1.2 dev ens160
[user01@rhel8vm1 ~]$
[user01@rhel8vm1 ~]$ sudo nmcli connection up ens160
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3)
[user01@rhel8vm1 ~]$ 
```

#### ルーティングテーブルの確認

```shell
[user01@rhel8vm1 ~]$ ip route
default via 192.168.1.1 dev ens160 proto dhcp metric 100 
192.168.1.0/24 dev ens160 proto kernel scope link src 192.168.1.116 metric 100 
192.168.2.0/24 via 192.168.1.2 dev ens160 proto static metric 100 
192.168.3.0/24 via 192.168.1.2 dev ens160 proto static metric 100 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 
[user01@rhel8vm1 ~]$ 
[user01@rhel8vm1 ~]$ nmcli connection show ens160 |grep IP4.
IP4.ADDRESS[1]:                         192.168.1.116/24
IP4.GATEWAY:                            192.168.1.1
IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100
IP4.ROUTE[2]:                           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[3]:                           dst = 192.168.2.0/24, nh = 192.168.1.2, mt = 100
IP4.ROUTE[4]:                           dst = 192.168.3.0/24, nh = 192.168.1.2, mt = 100
IP4.DNS[1]:                             192.168.1.1
[user01@rhel8vm1 ~]$ 
```


## 固定IPアドレスの割り当て（NetworkManagerを利用している場合）

NetworkManagerを利用している状態でIPアドレスを固定する場合、nmcliコマンドでIPアドレスの設定を行います。  
GUIで簡単に設定できるから、GUIが使える場合 Networkの設定で変更した方が楽かもしれません。

1. IPアドレスを割り当て
1. ipv4.method を auto から manual に変更
1. DNSサーバの設定

実行例）IP:192.168.1.20/GW:192.168.1.1/DNS:192.168.1.1　に設定してみます。  
DHCPからDNSの情報も受け取れなくなるため、DNSの設定も行う必要があります。
設定しただけではIPアドレスは変更されません。設定後インターフェースのup操作を行ってください。

```shell
[user01@rhel8vm1 ~]$ sudo nmcli connection modify ens160 ipv4.addresses 192.168.1.20/24 ipv4.gateway 192.168.1.1
[user01@rhel8vm1 ~]$ sudo nmcli connection modify ens160 ipv4.method "manual"
[user01@rhel8vm1 ~]$ sudo nmcli connection modify ens160 ipv4.dns "192.168.1.1"
[user01@rhel8vm1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:71:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.125/24 brd 192.168.1.255 scope global dynamic noprefixroute ens160
       valid_lft 14247sec preferred_lft 14247sec
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
[user01@rhel8vm1 ~]$

[user01@rhel8vm1 ~]$ cat /etc/resolv.conf 
# Generated by NetworkManager
search example.co.jp
[user01@rhel8vm1 ~]$
```

インターフェースをupして設定を反映させます。

```shell
[user01@rhel8vm1 ~]$ sudo nmcli connection up ens160 
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/6)
[user01@rhel8vm1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:71:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.20/24 brd 192.168.1.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 52:54:00:2c:d0:60 brd ff:ff:ff:ff:ff:ff
[user01@rhel8vm1 ~]$ 

[user01@rhel8vm1 ~]$ cat /etc/resolv.conf 
# Generated by NetworkManager
search example.co.jp
nameserver 192.168.1.1
[user01@rhel8vm1 ~]$
```