Лабораторная работа "Настройка сети" - efanov/mephi GitHub Wiki
В работе рассмотрена утилита ip
и пакет ssh
.
ip
— утилита, предназначенная для настройки сетевой подсистемы хоста [1].
Синтаксис команды:
ip [опции] объект команда [параметры]
Где
-
опции
— необязательные глобальные настройки, которые сказываются на работе всей утилиты независимо от других аргументов. Некоторые опции:-
-v
,-version
— только вывод информации об утилите и ее версии -
-h
,-human
— выводить данные в удобном для человека виде -
-s
,-stats
— включает вывод статистической информации -
-d
,-details
— показывать ещё больше подробностей -
-f
,-family
— позволяет указать протокол, с которым нужно работать, если протокол не указан, то берется на основе параметров команды. Опция должна принимать одно из значений:bridge
,dnet
,inet
,inet6
,ipx
илиlink
. По умолчанию используетсяinet
.link
означает отсутствие протокола -
-o
,-oneline
— выводить каждую запись с новой строки -
-r
,-resolve
— определять имена хостов с помощью DNS -
-a
,-all
— применить команду ко всем объектам -
-c
,-color
— позволяет настроить цветной, доступные значения: auto, always и never -
-br
,-brief
— выводить только базовую информацию для удобства чтения -
-4
— короткая запись для-f inet
-
-6
— короткая запись для-f inet -f inet6
-
-B
— короткая запись для-f inet -f bridge
-
-0
— короткая запись для-f inet -f link
-
-
объект
— тип данных, с которым надо будет работать, например: адреса, устройства, таблица arp, таблица маршрутизации и так далее. Важные объекты:-
address
илиa
- сетевые адреса -
link
илиl
- физическое сетевое устройство -
neighbour
илиneigh
- просмотр и управление ARP -
route
илиr
- управление маршрутизацией -
rule
илиru
- правила маршрутизации -
tunnel
илиt
- настройка туннелирования
-
-
команда
- какое-либо действие с объектом. Если команда не задана, по умолчанию используется show (показать). Важные команды:add
change
del или delete
flush
get
list или show
monitor
replace
restore
save
set
update
-
параметры
- параметры для комманд, если они требуются
Пакет OpenSSH состоит из десяти утилит:
- Удалённый доступ:
ssh
scp
sftp
- Управление ключами:
ssh-add
ssh-keysign
ssh-keyscan
ssh-keygen
- Управление службой:
sshd
sftp-server
ssh-agent
-
Для просмотра IP-адресов, связанных с сетевыми интерфейсами, выполните
ip address show
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:35:1c:cc brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3 valid_lft 82416sec preferred_lft 82416sec inet6 fe80::a00:27ff:fe35:1ccc/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:75:86:d5 brd ff:ff:ff:ff:ff:ff inet 192.168.56.10/24 brd 192.168.56.255 scope global noprefixroute enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe75:86d5/64 scope link valid_lft forever preferred_lft forever
Для вывода краткой информации используйте опцию
-br
:ip -br address show
lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s3 UP 10.0.2.15/24 fe80::a00:27ff:fe35:1ccc/64 enp0s8 UP 192.168.56.10/24 fe80::a00:27ff:fe75:86d5/64
Для просмотра адресов определённого сетевого интерфейса (в примепе ниже —
enp0s3
) выполнитеip address show dev enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:35:1c:cc brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3 valid_lft 82167sec preferred_lft 82167sec inet6 fe80::a00:27ff:fe35:1ccc/64 scope link valid_lft forever preferred_lft forever
dev
означает device. Для просмотра статических адресов добавьте параметрpermanent
. Для просмотра динамических адресов добавьте параметрdynamic
:ip address show dev ens160 dynamic
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:0f:42:25 brd ff:ff:ff:ff:ff:ff altname enp2s0 inet 172.16.132.135/24 brd 172.16.132.255 scope global dynamic noprefixroute ens160 valid_lft 1630sec preferred_lft 1630sec
-
Для добавления нового IP-адреса выполните
ip address add 172.16.132.136/24 dev ens160
Для удаления:
ip address delete 172.16.132.136/24 dev ens160
-
Для просмотра списка интерфейсов выполните
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:0c:29:0f:42:25 brd ff:ff:ff:ff:ff:ff altname enp2s0
-
Для изменения параметров используется команда
set
. Соответственно, для включения и выключения интерфейсов используются командыip link set dev <имя_интерфейса> up
иip link set dev <имя_интерфейса> down
:ip link set dev ens160 down
Если выполнить эту команду по SSH, ожидаемо оборвётся соединение. Для изменения MTU (maximum transmission unit) — максимального размера передаваемых пакетов — выполните следующую команду:
ip link set mtu 4000 dev ens160
Для изменения MAC-адреса необходимо выключить интерфейс, выполнить
ip link set dev ens160 address AA:BB:CC:DD:EE:FF
и после этого включить интерфейс.
-
Для просмотра кэшированной ARP-таблицы выполните
ip neigh show
172.16.132.2 dev ens160 lladdr 00:50:56:eb:12:07 REACHABLE 172.16.132.1 dev ens160 lladdr 9e:76:0e:34:2f:65 REACHABLE
Для ручного добавления записи в эту таблицу выполните
ip neigh add 172.16.132.2 lladdr 23:f6:72:44:2a:c1 dev ens160
-
Для просмотра таблицы маршрутизации хоста выполните
ip route show
default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.10 metric 101
Объясните значение вывода. Выведите таблицу маршрутизации
local
. -
Для добавления маршрута выполните
ip route add <подсеть>/<маска> via <шлюз>
илиip route add <подсеть>/<маска> dev <интерфейс>
:sudo ip route add 169.255.0.0 dev ens160
Соответственно, удаление маршрута:
sudo ip route del 169.255.0.0 dev ens160
-
Установите SSH-сервер:
dnf install openssh-server
Чтобы зайти на сервер используйте команду
ssh username@server
-
Для изменения настроек
sshd
конфигурационный файл/etc/ssh/sshd_config
. В нём можно изменить стандартный порт (Port
), запретить вход по паролю (PasswordAuthentication
), убрать возможность входа от лица суперпользователя (PermitRootLogin
), разрешить вход только определённым пользователям (AllowUsers
) или только пользователям определённых групп (AllowGroups
). Изменим порт SSH на2222
. После изменения порта необходимо добавить его в SELinux (об этом позже в курсе). Для этого необхдимо выполнитьsemanage port -a -t ssh_port_t -p tcp 2222
Также необходимо настроить правило межсетевого экрана:
firewall-cmd --zone public -–add-port 2222/tcp -–permanent && firewall-cmd --reload
Перезапустить службу
sshd
:systemctl restart sshd
Теперь доступ к SSH будет производиться по порту
2222
. Для этого при подключении необходимо явно указывать порт:ssh -p 2222 ...
. -
Для создания ключа SSH используется команда
ssh-keygen
:ssh-keygen -t ed25519 -C comment -f ~/.ssh/rocky
Эту команду необходимо выполнить на клиенте.
Для того, чтобы поместить ключ на сервер, используется команда
ssh-copy-id
:ssh-copy-id -p 2222 -i ~/.ssh/rocky.pub username@server
После этого необходимо запретить вход по паролю. Выполните это самостоятельно, не забыв перезапустить службу.
Далее, созданному ключу
rocky
необходимо установить соответствующие права доступа:chmod 400 ~/.ssh/rocky
-
С учётом выполненных выше команд для подключения к серверу необхдимо выполнить
ssh -i ~/.ssh/rocky -p 2222 username@server
Чтобы не запоминать такое множество настроек, существует конфигурационный файл
~/.ssh/config
. Заполнив его содержимымHost rocky HostName server IdentityFile ~/.ssh/rocky User username Port 2222
мы можем подключаться к серверу, вводя
ssh rocky
- Какие адреса идентифицируют устройство в сети?
- На каком уровне модели OSI работает ARP?
- Что такое таблица маршрутизации?
- Какие методы аутентификации присутствуют в SSH?
Для защиты работы необходимо ответить на вопросы по теме работы.