การบริหารจัดการ ระบบเครือข่ายบน Linux (Linux Network Service)

บน CentOS7 จะมีการใช้งาน NetworkManager Service daemon สำหรับการควบคุม และการบริหารจัดการเครือข่าย สำหรับการใช้งาน Linux ในการทดสอบ จากบทก่อนหน้านี้

cd sshlab
vagrant ssh client

[vagrant@client ~]$ sudo su -
[root@client ~]#

1 แสดง Network Interface ด้วยคำสั่ง

[root@client ~]# ip link
[root@client ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:37:f8:46 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 78893sec preferred_lft 78893sec
    inet6 fe80::1b1b:543b:db0b:ff0d/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:7e:96:cc brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.20/24 brd 192.168.33.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe7e:96cc/64 scope link 
       valid_lft forever preferred_lft forever

[root@client ~]# ip addr show enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:7e:96:cc brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.20/24 brd 192.168.33.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe7e:96cc/64 scope link 
       valid_lft forever preferred_lft forever

2 คำสั่ง nmcli เป็นคำสั่งที่ใช้ติดต่อกับ NetworkManager Deamon เป็นคำสั่งที่มีความสำคัญมากในการใช้งานสำหรับ SystemAdmin

[root@client ~]# nmcli dev status
DEVICE  TYPE      STATE      CONNECTION    
enp0s3  ethernet  connected  enp0s3        
enp0s8  ethernet  connected  System enp0s8 
lo      loopback  unmanaged  --
[root@client ~]# nmcli connection show
[root@client ~]# nmcli con show


NAME           UUID                                  TYPE            DEVICE 
System enp0s8  00cb8299-feb9-55b6-a378-3fdc720e0bc6  802-3-ethernet  enp0s8 
enp0s3         5c54f4d1-1c6a-4bb0-9a23-8eaad898f751  802-3-ethernet  enp0s3
[root@client ~]# nmcli connection show "System enp0s8"  | grep ipv4

ipv4.method:                            manual
ipv4.dns:                               
ipv4.dns-search:                        
ipv4.dns-options:                       "single-request-reopen"
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.33.20/24
ipv4.gateway:                           --
ipv4.routes:                            
ipv4.route-metric:                      -1
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   yes
ipv4.dhcp-client-id:                    --
ipv4.dhcp-timeout:                      0
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv4.dad-timeout:                       -1 (default)

3 ไฟล์ที่เกี่ยวข้องกัน เป็น static file ใน /etc/sysconfig/network-scripts/

[root@client ~]# ls -l /etc/sysconfig/network-scripts/ifcfg-*

-rw-r--r--. 1 root    root    312 Nov 20 14:19 /etc/sysconfig/network-scripts/ifcfg-enp0s3
-rw-------. 1 vagrant vagrant 216 Nov 20 14:19 /etc/sysconfig/network-scripts/ifcfg-enp0s8
-rw-r--r--. 1 root    root    254 Nov 20 14:19 /etc/sysconfig/network-scripts/ifcfg-lo

[root@client ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s8
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
NM_CONTROLLED=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.33.20
NETMASK=255.255.255.0
DEVICE=enp0s8
PEERDNS=no
#VAGRANT-END

4 ให้ทำการ ลบ connection ทิ้งไปก่อน แล้วดูผลกระทบ

[root@client ~]# nmcli connection delete "System enp0s8"
Connection 'System enp0s8' (00cb8299-feb9-55b6-a378-3fdc720e0bc6) successfully deleted.

ผลกระทบ 1 Device จะเป็น อิสระ ไม่ได้ไปเกาะกับ connection

[root@client ~]# nmcli dev status
DEVICE  TYPE      STATE         CONNECTION 
enp0s3  ethernet  connected     enp0s3     
enp0s8  ethernet  disconnected  --         
lo      loopback  unmanaged     --

ผลกระทบ 2 Static file ที่บ่งบอกสถานะ ถูกลบไปด้วย

[root@client ~]# ls -l /etc/sysconfig/network-scripts/ifcfg-*
-rw-r--r--. 1 root root 312 Nov 20 14:19 /etc/sysconfig/network-scripts/ifcfg-enp0s3
-rw-r--r--. 1 root root 254 Nov 20 14:19 /etc/sysconfig/network-scripts/ifcfg-lo

ผลกระทบ 3 ip หายไปด้วย

# ip a s enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:7e:96:cc brd ff:ff:ff:ff:ff:ff

5 สร้าง connection ใหม่

[root@client ~]# nmcli connection add type ethernet con-name my-enp0s8  ifname enp0s8 
Connection 'my-enp0s8' (19954a6c-66e5-4f6e-ab16-837460279014) successfully added.

[root@client ~]# nmcli con mod -h

6 กำหนดค่าที่ต้องการให้แก่ connection

[root@client ~]# nmcli con mod my-enp0s8 ipv4.method manual ipv4.addr "192.168.33.20/24"
[root@client ~]# nmcli con show my-enp0s8  | grep ipv4
[root@client ~]# nmcli con show  my-enp0s8 | grep connection.autoconnect

[root@client ~]# nmcli con down my-enp0s8
[root@client ~]# nmcli con up  my-enp0s8
[root@client ~]# ip a s enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:7e:96:cc brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.20/24 brd 192.168.33.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::88e:690d:fd8:9bb9/64 scope link 
       valid_lft forever preferred_lft forever
[root@client ~]# ls -l /etc/sysconfig/network-scripts/ifcfg-*
-rw-r--r--. 1 root root 312 Nov 20 14:19 /etc/sysconfig/network-scripts/ifcfg-enp0s3
-rw-r--r--. 1 root root 254 Nov 20 14:19 /etc/sysconfig/network-scripts/ifcfg-lo
-rw-r--r--. 1 root root 319 Nov 20 17:00 /etc/sysconfig/network-scripts/ifcfg-my-enp0s8
[root@client ~]# cat /etc/sysconfig/network-scripts/ifcfg-my-enp0s8
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=my-enp0s8
UUID=19954a6c-66e5-4f6e-ab16-837460279014
DEVICE=enp0s8
ONBOOT=yes
IPADDR=192.168.33.20
PREFIX=24
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

ก่อน Centos 7 ที่ยังไม่มีคำสั่ง nmcli เราจะต้องแก้ไข static file โดยตรง แต่ต่อมาเมื่อ service NetworkManager daemon ถูกนำใช้งาน จะไม่ต้องแก้ static file โดยตรง

หมายเหตุ การใช้งาน nmcli สามารถกำหนด ip4 ได้ตอนสร้างได้เลย

# nmcli con add con-name net-eth0 ifname eth0 type ethernet ip4 192.168.1.10/24 gw4 192.168.1.1

แต่หากใช้คำสั่ง nmcli con mod ต้องใช้การกำหนดค่าให้แก่ ipv4

# nmcli con mod net-eth0 ipv4.addresses 192.168.1.10/24
# nmcli con mod net-eth0 ipv4.gateway 192.168.1.1
# nmcli con mod net-eth0 ipv4.method manual
# nmcli con up net-eth0

ตรวจสอบ Gateway

[root@client ~]# ip r
default via 10.0.2.2 dev enp0s3  proto static  metric 100 
10.0.2.0/24 dev enp0s3  proto kernel  scope link  src 10.0.2.15  metric 100 
192.168.33.0/24 dev enp0s8  proto kernel  scope link  src 192.168.33.20  metric 100

ความสัมพันธระหว่าง Firewall Zone และ network Interface

# systemctl start firewalld

# firewall-cmd --get-default-zone
public

# firewall-cmd  --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules:

จะเห็นว่า traffic ที่เข้ามายัง Linux ผ่านทาง interface enp0s3 enp0s8 จะผ่านไปยัง zone เราจะรู้ได้อย่างไรว่าตอนนี้ Linux มี Firewall zone ทั้งหมด กี่โซน สามารถทำได้โดยการใช้ option --get-zones และ --list-all-zones

# firewall-cmd --get-zones
work drop internal external trusted home dmz public block

# firewall-cmd  --list-all-zones

ภายในแต่ละ โซนก็มีค่ากำหนด service default ที่ต่างกัน เช่น zone work

work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules:

ต่อมา จะทำการเปลี่ยนให้ traffic ที่ผ่านมาทาง enp0s8 ให้ไปยัง Zone work แทน Zone public

โดยบอกให้ firewall-cmd และ NetworkManager รับทราบ

# firewall-cmd --permanent --zone=work --change-interface=enp0s8
The interface is under control of NetworkManager, setting zone to 'work'.
success

# nmcli con mod my-enp0s8 connection.zone work
# nmcli con down my-enp0s8

หลังจากนั้น จะพบว่า zone work , zone public จะ active เนื่องจากถูกน้ำไปเชื่อมกับ interface

# firewall-cmd  --list-all-zones
work (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s8
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules:

results matching ""

    No results matching ""