Мрежово администриране - въведение
Съдържание:
В последните версии на Ubuntu (от версия 17.10 ) стандартните средства за конфигуриране на мрежата - net-tools са заменени с ново средство за генериране на мрежови конфигурации NetPlan/CloudInit tool. Средствата net-tools не се инсталират по подразбиране.
За да може виртуалната машина да се появи в локалната мрежа е необходимо при изключена (и избрана) машина -> Settings ->Network -> Adapter 1 -> Attached to Bridged adapter
При инсталирането е зададено име, което може да се види в стандартния prompt на командния интерпретатор (известен като PS1 prompt). Там се извежда информация до първата точка в името - ако машината е imom.mycompany.com, то в PS1 prompt ще бъде изведено imom.
Името може да се види и с команда hostname:
$imom@imom-VirtualBox:~$ hostname
imom-VirtualBox
imom@imom-VirtualBox:~$
Повече подробности могат да се видят с командата hostnamectl
$ hostnamectl
Static hostname: imom-VirtualBox
Icon name: computer-vm
Chassis: vm 🖴
Machine ID:
cecf5d91ea9549d9abcb404344975a42
Boot ID:
adbb72bb733243a38c931e477c493be2
Virtualization: oracle
Operating System: Ubuntu 24.04.2
LTS
Kernel: Linux
6.11.0-19-generic
Architecture: x86-64
Hardware Vendor: innotek GmbH
Hardware Model: VirtualBox
Firmware Version: VirtualBox
Firmware Date: Fri 2006-12-01
Firmware Age: 18y 4month 1w 1d
Забележка : Icon name се използва от някои графични апликации.
Името може да се смени с команда hostnamectl (необходими са административни права):
$sudo hostnamectl set-hostname imom-VB
$ cat /etc/hostname
imom-VB
$sudo hostnamectl set-icon-name homeVB
$sudо nano /etc/hostname
$cat /etc/hosts
127.0.0.1 localhost
127.0.1.1
imom-VirtualBox
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.046 ms
...
$ ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.049 ms
...
$ping 127.0.1.1
PING 127.0.1.1 (127.0.1.1) 56(84) bytes of data.
64 bytes from 127.0.1.1: icmp_seq=1 ttl=64 time=0.030 ms
...
$ ping imom-VirtualBox
PING imom-VirtualBox (127.0.1.1)
56(84) bytes of data.
64 bytes from imom-VirtualBox
(127.0.1.1): icmp_seq=1 ttl=64 time=0.031 ms
...
За съжаление командата hostnamectl не сменя съдържанието на тоаи файл и той трябва да се промени ръчно след смяна на името:
$sudо nano /etc/hosts
Всеки ред на файла започва с ip адрес, след което се задава име. Могат да бъдат задавани алтернативни имена разделени с празен интервал.2. Управление на мрежовите интерфейси
За установяване на текущите параметри на мрежовия интерфейс се използва командата ip a или ip addr ( до версия 16.04 на Ubuntu се използваше команда ifconfig)
$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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
fq_codel state UP group default qlen 1000
link/ether 08:00:27:54:b7:57 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.243/24 brd 192.168.1.255 scope global
dynamic noprefixroute enp0s3
valid_lft 62567sec preferred_lft
62567sec
inet6 fe80::a00:27ff:fe54:b757/64 scope link
valid_lft forever preferred_lft
forev
Резултатът представлява наличните мрежови интерфейси и техният текущ статус. Извеждат се неща като ip адреса на всеки мрежов интерфейс (ако има такъв ), както и неговия MAC адрес.
При изписване на ip адреса се използва CIDR (Classless Inter-Domain Routing) метод на представяне на мрежовата и хост частта от IP адреса. Приема се нотация за изписване на мрежов адрес – CIDR блок. При този запис след мрежовия адрес се поставя наклонена черта и се изписват броя на битовете в мрежовия адрес. Така например в 192.168.1.243/24 означава че от 32 -та бита в адреса 24 са за мрежовия адрес - 192.168.1 и последните 8 - 243 са за адреса на хоста в локалната мрежа. За да се използва метода е необходимо всички маршрутизиращи протоколи да пренасят информация освен за мрежовите адреси, така и за дължината на мрежовата част. При това става възможно да се адресират всички възможни IP адресни комбинации, не се използва разделянето на адресите на класове и мрежова маска. В IPv6 мрежова маска не се дефинира като понятие, използва се единствено CIDR запис.
Ethernet интерфейсите се идентифицираха в по-старите системи обикновено с имена ethX, където X е нарастваща стойност. Първият интерфейс типично бе eth0, вторият - eth1. В машини с много интерфейсни адаптери се взимаха специални мерки да не си разменят имената при рестартиране на системата, като се привързваха към MAC адресите. За целта се използваше файл /etc/udev/rules.d/70-persistent-net-rules. Типичен ред от този файл има вида:Друг начин за идентифициране на мрежовите интерфейси е командата lshw. Това е малка програма, която извлича детайлна информация за хардуерната конфигурация на машината:
$sudo lshw -class network
*-network
description: Ethernet interface
product: 82540EM Gigabit Ethernet
Controller
vendor: Intel Corporation
physical id: 3
bus info: pci@0000:00:03.0
logical name: enp0s3
version: 02
serial: 08:00:27:54:b7:57
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 66MHz
capabilities: pm pcix bus_master
cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd
autonegotiation
configuration: autonegotiation=on
broadcast=yes driver=e1000 driverversion=7.3.21-k8-NAPI duplex=full
ip=192.168.1.243 latency=64 link=yes mingnt=255 multicast=yes
port=twisted pair speed=1Gbit/s
resources: irq:19
memory:f0200000-f021ffff ioport:d020(size=8)
С ip командата може да се управлява състоянието на интерфейса:
Спиране на инрефейса (откачване на връзката) и включване отново :$sudo ip link set enp0s3 down
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: enp0s3: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN group default qlen
1000
link/ether 08:00:27:54:b7:57 brd ff:ff:ff:ff:ff:ff
sudo lshw -class network
*-network
DISABLED
description: Ethernet interface
product: 82540EM Gigabit Ethernet
Controller
vendor: Intel Corporation
physical id: 3
bus info: pci@0000:00:03.0
logical name: enp0s3
version: 02
serial: 08:00:27:7a:cf:e1
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 66MHz
capabilities: pm pcix bus_master
cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd
autonegotiation
configuration: autonegotiation=on
broadcast=yes driver=e1000 driverversion=5.13.0-39-generic duplex=full
latency=64 link=no mingnt=255 multicast=yes port=twisted pair
speed=1Gbit/s
resources: irq:19
memory:f0200000-f021ffff ioport:d020(size=8)
sudo ip link set enp0s3 up
imom@imom-VB:~$ 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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
fq_codel state UP group
default qlen 1000
link/ether 08:00:27:54:b7:57 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.243/24 brd 192.168.1.255 scope global
dynamic noprefixroute enp0s3
valid_lft 86393sec preferred_lft
86393sec
$ sudo lshw -class network
*-network
description: Ethernet interface
product: 82540EM Gigabit Ethernet
Controller
vendor: Intel Corporation
physical id: 3
bus info: pci@0000:00:03.0
logical name: enp0s3
version: 02
serial: 08:00:27:7a:cf:e1
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 66MHz
capabilities: pm pcix bus_master
cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd
autonegotiation
configuration: autonegotiation=on
broadcast=yes driver=e1000 driverversion=5.13.0-39-generic duplex=full
ip=192.168.1.8 latency=64 link=yes mingnt=255 multicast=yes
port=twisted pair speed=1Gbit/s
resources: irq:19
memory:f0200000-f021ffff ioport:d020(size=8)
3. Конфигуриране на статично IP адресиране
Задаване статичен IP address на Ubuntu 24.04 LTS desktop
Ако е необходимо да се избере не използван IP address от локалната мрежа, може да се провери кои адреси се използват в момента. Най-лесно това става чрез инсталиране на пакета nmap:
$ sudo apt update
$ sudo apt upgrade
$ sudo apt autoremove
$ sudo apt install nmap
Например за локална мрежа 192.168.1.0 (може да се укаже кой и да е адрес от мрежата) с маска 24 (3 байта за номера на мрежата и един за адреса вътре в нея)
$ sudo nmap -sn 192.168.1.0/24
опцията -sn означава „ping scan“ (сканиране за хостове), без проверка на портове. Командата ще покаже всички заети IP адреси в мрежата в момента.
Network configuration in Ubuntu desktop is controlled by network manager. Промяната може най-лесно да се извърши през графичния интерфейс:
Activities -> Network -> Wred settings -> IPv4 -> Manual ->Address/Netmask/Gateway /DNS -> Apply
Така например за адрес 192.168.1.115/24:
Address : 192.168.1.115
Netmask: 24
Gateway: 192.168.1.1
DNS: 8.8.8.8
След което трябва да се рестартира мрежовата услуга ( за версия 24.04+ графичният интерфейс би трябвало да го прави автоматично).
$ sudo nmcli networking off
$ sudo lshw -class network
$ sudo nmcli networking on
$ sudo lshw -class network
Разбира се може винаги да се използва командния интерпретатор за целта. Този подход, описан по-долу е задължителен за Ubuntu сървъри, които не притежават графичен интерфейс.
От Ubuntu 17.10 (2017 година) NetworkManager, който се използваше за конфигуриране на мрежовите интерфейси е заменен с Netplan. Конфигурационните файлове сега се съхраняват в директория /etc/netplan в YAML формат. Този формат не се разглежда в този курс, но синтаксисът му е лесен за разбиране и не е необходимо доброто му познаване за да бъдат конфигурирани мрежовите интерфейси. Повече информация може да се види на:
Задаване статичен IP address на Ubuntu 24.04 LTS Server
Редът по който се търси връзката между IP адрес и име се задава от файла /etc/nsswitch.conf :
$cat /etc/nsswitch.conf |egrep hosts
hosts: files
mdns4_minimal [NOTFOUND=return] dns
(Другите редове в този файл няма да бъдат обсъждани тук).
Същественото тук е реда на модулите files и dns ( mdns4_minimal се използва за мултикаст търсене на имена в локалната мрежа с топ домейн .local и също няма да бъде обсъждан тук) .
Сложеният на първо място files показва, че първо името ще се проверява в файла с имената ( /etc/hosts ). След това ще бъде търсен в dns. Това е подразбиращият се ред на търсене.
Използването на този подход позволява временното присвояване на адреси, много е удобен за тестване но е труден за поддържане и се отнася само за локалната машина.
В предишни версии на Ubuntu, IP адресите на dns сървърите се сьхраняваха във файла /etc/resolv.conf. Редактирането на този файл водеше до промяната им. В последните версии файлът е съхранен, но не се използва за тази цел, а се генерира автоматично. Name resolution в последните версии се осъществява от демон процеса systemd-resolved, който се стартира от initd , и използва dns settings зададени от netplan.