Обнаружение сетевых устройств

Настройка сети

Изучить файл с перечнем задействованных интерфейсов можно с помощью команды

Далее настройка зависит от версии Linux, которую Вы используете.

На новых версиях

Debian
.
Например, на Debian 9 используется

Iproute2

Если Вам нужно настроить сеть на старой версии Debian с помощью утилит

ifconfig

пролистайте страницу вниз или перейдите по

ссылке

Команда ifconfig

В новых версиях CentOS утилита ifconfig не установлена и при вводе одноименной команды можно увидеть ошибку «Команда не найдена». Необходимо либо воспользоваться командой ip (ip address), либо установить утилиту ifconfig.

а) в CentOS 7:

yum install ifconfig

а) в CentOS 8:

yum install net-tools

Использование NFS

В этом разделе приводятся шаги по простой установке NFS.
В этом примере описывается NFS-сервер в LAN с клиентами из LAN.
Здесь не обсуждаются вопросы безопасности NFS. Мы считаем, что вы уже установили
фильтрацию пакетов или другую защиту с помощью фаервола для предотвращения
доступа извне.

Настройка NFS сервера

portmap(8)

mountd(8)

nfsd(8)

# rcctl enable portmap mountd nfsd

В этом примере наш сервер имеет адреc 10.0.0.1.
Этот NFS-сервер обслуживает только клиентов из своей сети.
Первый шаг в установке NFS – настройка файла
exports(5):

$ cat /etc/exports
/docs -alldirs -ro -network=10.0.0 -mask=255.255.255.0

/docs

-alldirs

/docs

-ro

10.0.0.0

255.255.255.0

Теперь можно запустить сервисы на сервере.

# rcctl start portmap mountd nfsd

/etc/exports

# rcctl reload mountd

Подключение ФС через NFS

mount(8)

mount_nfs(8)

Для монтирования ФС /docs, которая находится на машине 10.0.0.1,
к себе в /mnt, сделайте:

# mount -t nfs 10.0.0.1:/docs /mnt

fstab(5)

# echo '10.0.0.1:/docs /mnt nfs ro,nodev,nosuid 0 0' >> /etc/fstab

0 0

fsck(8)

При обращении к монтируемому каталогу от пользователя root, сервер
автоматически отображает root доступ к имени пользователя nobody
и группе nobody. Это важно знать при рассмотрении прав доступа
к файлам. Например, возьмем файл с таким набором прав:

-rw-------    1 root     wheel           0 Dec 31 03:00 _daily.B20143

Пользователи и группы, которые должны иметь root-доступ, настраиваются при помощи
файла exports(5) на стороне сервера.

Проверка состояния NFS

rpcinfo(8)

$ rpcinfo -p 10.0.0.1
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp    633  mountd
    100005    3   udp    633  mountd
    100005    1   tcp    916  mountd
    100005    3   tcp    916  mountd
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs

showmount(8)

nfsstat(1)

Базовая настройка сети

Смотрим все установленные сетевые адаптеры в системе:

В результате получаем что-то подобное:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    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: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:81:28:3c brd ff:ff:ff:ff:ff:ff
    inet 192.168.156.22/22 brd 192.168.159.255 scope global ens32
       valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:81:3f:22 brd ff:ff:ff:ff:ff:ff
    inet 10.243.254.68/26 brd 10.243.254.127 scope global ens34
       valid_lft forever preferred_lft forever

* Из примера видно, что в моем CentOS есть 3 сетевых карты — lo (локальная петля), ens32 и ens34 — сетевые Ethernet адаптеры.

Если нужно настроить сеть для адаптера ens32, открываем на редактирование следующий конфигурационный файл:

И приводим его к следующему виду:

Основные опции

Чтобы настройки применились, перезапускаем сетевую службу.

а) для CentOS 7:

systemctl restart network

б) для Rocky Linux и CentOS 8 вводим 2 команды:

systemctl restart NetworkManager

nmcli networking off; nmcli networking on

* в большей степени, это основное отличие версий 7 и 8. Чтобы команды смогли поменять настройки, для интерфейсов необходима настройка NM_CONTROLLED=yes.

Дополнительные опции (не обязательны для работы сети)

Настройка сети в CentOS и Rocky Linux

Что такое CentOS простыми словами.

Инструкция применима к Rocky Linux, CentOS версий 7 и 8, CentOS mini (минимальная сборка), Fedora.

Изменить Gateway

Удаление старого gateway

route delete default

Добавление нового gateway

route add default gw IP_Address

Если старых gateway много, то нужно указать какой конкретно IP с какого интерфейса
удалить

route delete default gw 10.0.0.1 eth0

Для создания тоже можно указать конкретные данные

route add default gw 192.168.0.1 eth0

Беспроводные сети (Wireless Networking)

ряд wireless чипсетов

usb(4)

pci(4)

Следующие карты поддерживают режим Host-based Access Point (HostAP), что позволяет их
использовать в качестве точки доступа:

  • acx(4)
    – TI ACX100/ACX111
  • ath(4)
    – Atheros 802.11a/b/g
  • athn(4)
    – Atheros 802.11/a/g/n devices
  • pgt(4)
    – Conexant/Intersil Prism GT Full-MAC 802.11a/b/g
  • ral(4)
    и ural(4)
    – Ralink Technology RT25x0 802.11a/b/g
  • rtw(4)
    – Realtek 8180 802.11b
  • rum(4)
    – Ralink Technology RT2501USB
  • wi(4)
    – Prism2/2.5/3

ifconfig(8)

media

hostap

ibss

monitor

ath0

$ ifconfig ath0 media

fw_update(1)

свободное

Еще один способ включения OpenBSD в беспроводную сеть состоит в совместном
использовании обычной сетевой карты и внешней точки доступа.
Очевидное преимущество: подобная схема позволяет удобно расположить антенну в месте,
где сигнал будет наиболее качественным, что зачастую отнюдь не является местом
непосредственно рядом с машиной.

Настройка вашего беспроводного адаптера (Wireless Adapter)

ifconfig(8)

Пример hostname.if(5) файла,
когда используется wireless в качестве клиента:

nwid puffyuberalles wpakey passwordhere
dhcp
join home-net wpakey passwordhere
join work-net wpakey passwordhere
join cafe-wifi
dhcp

dhcp

Использование trunking

bge0

iwn0

trunk(4)

Для этого мы сначала активируем два физических порта, а затем переназначаем их для
trunk0.

# echo up > /etc/hostname.bge0
$ cat /etc/hostname.iwn0
nwid puffynet wpakey mysecretkey
up
$ cat /etc/hostname.trunk0
trunkproto failover trunkport bge0
trunkport iwn0
dhcp

failover

bge0

Читайте также

1. Управление сетевыми маршрутами в CentOS 

2. Настройка Интернет шлюза на CentOS

SSH

Чтобы подключиться к удалённой машине по

SSH

нужно, например, знать
IP машины, имя пользователя, пароль

Если вы подключаетесь впервые, то получите предупреждение

Это предупреждение отображается, потому что в файле

known_hosts

, отвечающем за
ивестные хосты нет записи о 192.168.0.2

Файл

known_hosts

находится в директории

Он содержит строки такого вида:

После того как вы выберете
yes вы увидите сообщение

Warning: Permanently added ‘192.168.0.2’ (ECDSA) to the list of known hosts.
ssh_dispatch_run_fatal: Connection to 192.168.0.2 port 22: Broken pipe

А в файле

known_hosts

появится новая запись

Если вы подключаетесь к хосту не в первый раз

Нужно будет ввести пароль

Last login: Wed Jun 06 17:55:40 2022

Ping

Чтобы пользоваться ping нужно установить iputils-ping

sudo apt install -y iputils-ping

Затем можно пользоваться командой ping и пинговать по IP

PING 10.15.253.191 (10.15.253.191) 56(84) bytes of data.
64 bytes from 10.15.253.191: icmp_seq=1 ttl=63 time=0.996 ms
64 bytes from 10.15.253.191: icmp_seq=2 ttl=63 time=0.944 ms
64 bytes from 10.15.253.191: icmp_seq=3 ttl=63 time=0.741 ms

Или по доменному имени

PING urn.su (87.236.16.134) 56(84) bytes of data.
64 bytes from ssl.talon.beget.com (87.236.16.134): icmp_seq=1 ttl=53 time=34.4 ms
64 bytes from ssl.talon.beget.com (87.236.16.134): icmp_seq=2 ttl=53 time=47.9 ms
64 bytes from ssl.talon.beget.com (87.236.16.134): icmp_seq=3 ttl=53 time=54.0 ms

Dynamic Host Configuration Protocol

DHCP клиент

dhclient(8)

hostname.if(5)

беспроводным сетям

dhcp

Eсли вы хотите получить IP от DHCP сервера в интерактивном режиме, просто
запустите клиент в консоли:

# dhclient xl0

xl0

Файл resolv.conf будет перезаписан клиентом
dhclient(8), если ответ DHCP
сервера будет включать в себя информацию о domain-name, domain-search или
domain-name-servers.
Каждый пераметр может быть проигнорирован, переопределен или изменен в
соответствии с настройками в
dhclient.conf(5).
Например, если вы хотите использовать DNS сервер 1.2.3.4, а не тот, который
предоставлен DHCP сервером, добавьте следующее:

supersede domain-name-servers 1.2.3.4;

/etc/resolv.conf.tail

dhclient(8)

resolv.conf

DHCP сервер

dhcpd(8)

# rcctl enable dhcpd

dhcpd.conf(5)

# rcctl set dhcpd flags em1 em2

/etc/dhcpd.conf

# Home
subnet 192.168.1.0 netmask 255.255.255.0 {
	option domain-name-servers 192.168.1.2;
	option routers 192.168.1.1;
	range 192.168.1.3 192.168.1.50;
}

# Guests
subnet 172.16.0.0 netmask 255.255.255.0 {
	option domain-name-servers 209.244.0.3, 8.8.8.8;
	option routers 172.16.0.1;
	range 172.16.0.2 172.16.0.254;
}

dhcp-options(5)

Загрузка при помощи PXE (i386, amd64)

процесса загрузки

pxeboot(8)

tftpd(8)

Настройка сети из консоли (командами)

Настройка из консоли будет работать только до перезагрузки системы. Ее удобно применять для временного конфигурирования или проведения тестов.

ip a add 192.168.0.156/24 dev ens32

* в данном примере к сетевому интерфейсу ens32 будет добавлен IP 192.168.0.156.

ip a change 192.168.0.157/24 dev ens32

* однако, по факту, команда отработает также, как add.

ip a del 192.168.163.157/24 dev ens32

Добавление маршрута по умолчанию:

ip r add default via 192.168.0.1

Добавление статического маршрута:

ip r add 192.168.1.0/24 via 192.168.0.18

ip r del default via 192.168.160.1

ip r del 192.168.1.0/24 via 192.168.0.18

Подробнее про управление маршрутами в CentOS.

Статический IP

Сперва нужно узнать имена интерфейсов

Далее можно воспользоваться утилитой ip либо настроить через

netplan

ip

Пример присвоения интерфейсу enp0s31f6 IP адреса 10.0.2.16/24

sudo ip addr add 10.0.2.16/24 dev enp0s31f6

netplan

Нужно зайти в директорию

и посмотреть как называется файл с настройками

cd /etc/netplan

ls -la

Отредактируем файл

01-network-manager-all.yaml

sudo vi 01-network-manager-all.yaml

Самое главное – это следить за отступами. Например, – перед IP должна быть ровно
под второй буквой d в слове addresses.

Делать отступы нужно пробелом, не табуляцией

nameservers: нужны не всегда, можете сперва их не указывать и посмотреть всё ли вас устраивает.

Применить новые настройки можно командой

sudo netplan apply

Проверить результат можно выполнив снова 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: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 30:f9:ed:d9:ea:d3 brd ff:ff:ff:ff:ff:ff
inet 192.0.2.131/24 brd 192.0.2.255 scope global enp3s0
valid_lft forever preferred_lft forever
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:76:3f:f5:c4:1f brd ff:ff:ff:ff:ff:ff
inet 192.168.43.4/24 brd 192.168.43.255 scope global dynamic noprefixroute wlp1s0
valid_lft 2822sec preferred_lft 2822sec
inet6 fe80::4deb:2d14:d1e8:8c7f/64 scope link noprefixroute
valid_lft forever preferred_lft forever

ВКЛЮЧИТЬ интерфейс enp0s25:

ip link
set dev enp0s25 up

ВЫКЛЮЧИТЬ интерфейс enp0s25:

ip link
set dev enp0s25 down

Прослушиваемые порты

Посмотреть к чему по умолчанию назначен определённый порт можно в файле
/etc/services

Например, порт 636

ldaps /tcp # LDAP over SSL
ldaps /udp

ss

Посмотреть список открытых портов можно утилитой ss которая входит в состав iproute2

sudo apt install -y iproute2

ss -lntup

Если нужно проверить используется ли определённый порт, например 5000

Если вывод пуст, значит порт не используется

О том как открывать порты в Ubuntu вы можете прочитать в статье

UFW: Ubuntu Firewall

:/>  Как настроить чувствительность мыши в Виндовс 7

Чтобы узнать какая программа слушает определённый порт нужно предварительно установить один из
инструментов:

Начнём с netstat

Netstat

Netstat входи в состав net-tools
который устанавливается командой

sudo apt -y install net-tools

С помощью команды
netstat
можно посмотреть список активных соединений по сети

Для изучения подключений по сети используются опции tupn

sudo netstat -tupn

Для изучения прослушиваемых портов netstat используют с набором опций tulpn

tcp 0 0 127.0.0.1:631 0.0.0.0:* 795/cupsd
tcp 0 0 127.0.0.53:53 0.0.0.0:* 664/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* 3955/sshd: /usr/sbi
tcp6 0 0 ::1:631 :::* 795/cupsd
tcp6 0 0 :::3389 :::* 3048/xrdp
tcp6 0 0 ::1:3350 :::* 3038/xrdp-sesman
tcp6 0 0 :::22 :::* 3955/sshd: /usr/sbi

lsof

Утилита lsof (list open files) позволяет посмотреть
все
открытые в системе соединения.

Чтобы изучить именно сетевые соединения воспользуйтесь опцией
i

Чтобы отображались именно порты, а не названия сетевых служб примените опцию
P

lsof -i -P

Команда ip доступна из утилиты iproute2, которую можно установить командой

sudo apt install -y iproute2

Чтобы получить список интерфейсов нужно воспользоваться командой

На выходе будет что-то похожее на

1: : <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 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 30:f9:ed:d9:ea:d3 brd ff:ff:ff:ff:ff:ff
inet brd 192.0.2.255 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::32f9:edff:fed9:ead3/64 scope link
valid_lft forever preferred_lft forever
3: : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:76:3f:f5:c4:1f brd ff:ff:ff:ff:ff:ff
inet brd 192.168.43.255 scope global dynamic noprefixroute wlp1s0
valid_lft 2800sec preferred_lft 2800sec
inet6 fe80::ba76:3fff:fef5:c41f/64 scope link noprefixroute
valid_lft forever preferred_lft forever

Раньше интерфейсы назывались eth0, eth1 и так далее, сейчас у них более разнообразные названия.

1: Первый интерфейс это

он направлен на локальную машину и имеет IP

2: Второй интерфейс
это моё поключение к по Ethernet к другому ПК.

В этом примере компьютер с Ubuntu(1) соединён с компьютером с

Windows

(2) напрямую через Ethernet кабель

Через это подключение я захожу на комп номер 1 по

SSH
.

IP компьютера с Ubuntu вы видите выше

, а у компа с Windows IP

его здесь, естественно не видно.

Как настроить этот IP читайте

дальше

3: Третий интефейс

это подключение к местному Wi-Fi от мобильного телефона.
IP получен динамически

Прослушиваемые порты

lsof

Утилита lsof позволяет посмотреть
все
открытые в системе соединения.

Чтобы изучить именно сетевые соединения воспользуйтесь опцией
i

Чтобы отображались именно порты, а не названия сетевых служб примените опцию
P

lsof -i -P

ss

На вопрос как посмотреть список открытых портов также может ответить утилита ss

Если нужно проверить используется ли определённый порт, например 5000

Если вывод пуст, значит порт не используется

Чтобы узнать какая программа слушает определённый порт нужно предварительно установить один из
инструментов:

Начнём с netstat

Netstat

sudo apt install net-tools

С помощью команды
netstat
можно посмотреть список активных соединений по сети

Обычно netstat используют с набором опций tulpn
который и позволяет понять какая программа слушает какой порт.

(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN –
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN –
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN –
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN –
tcp6 0 0 :::22 :::* LISTEN –
tcp6 0 0 ::1:631 :::* LISTEN –
tcp6 0 0 ::1:6010 :::* LISTEN –
tcp6 0 0 ::1:6011 :::* LISTEN –
tcp6 0 0 :::80 :::* LISTEN –
udp 0 0 0.0.0.0:52756 0.0.0.0:* –
udp 0 0 0.0.0.0:68 0.0.0.0:* –
udp 0 0 0.0.0.0:631 0.0.0.0:* –
udp 0 0 0.0.0.0:5353 0.0.0.0:* –
udp6 0 0 :::45815 :::* –
udp6 0 0 :::5353 :::* –

Изменить Gateway

Удаление старого gateway

route delete default

Добавление нового gateway

route add default gw IP_Address

Если старых gateway много, то нужно указать какой конкретно IP с какого интерфейса
удалить

route delete default gw 10.0.0.1 eth0

Для создания тоже можно указать конкретные данные

route add default gw 192.168.0.1 eth0

Настройка сети

/etc

во время установки

Поиск и настройка сетевых интерфейсов

dmesg(8)

fxp0 at pci0 dev 10 function 0 "Intel 82557" rev 0x0c: irq 5, address 00:02:b3:2b:10:f7
inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4

fxp(4)

Вы можете увидеть список всех найденных сетевых карт при помощи утилиты
ifconfig(8).
Эта комманда показывает все сетевые интрефейсы в системе.

$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33200
        index 3 priority 0 llprio 3
        groups: lo
        inet 127.0.0.1 netmask 0xff000000
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:02:b3:2b:10:f7
        index 1 priority 0 llprio 3
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 10.0.0.38 netmask 0xffffff00 broadcast 10.0.0.255
enc0: flags=0<>
        index 2 priority 0 llprio 3
        groups: enc
        status: active
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33200
        index 4 priority 0 llprio 3
        groups: pflog

fxp0

inet 10.0.0.38 netmask 0xffffff00 broadcast 10.0.0.255

UP

RUNNING

Скрипт netstart(8) настраивает
сетевые интерфейсы во время загрузки. Для этого он использует
hostname.if(5) конфигурационные
файлы, где “if” соответствует полному имени интерфеса, необходимого для настройки.
Для примера выше использовался бы файл /etc/hostname.fxp0,
содержащий следующее:

inet 10.0.0.38 255.255.255.0

hostname.fxp0

# ifconfig fxp0 10.0.0.38 255.255.255.0

create

ifconfig(8)

Имя машины (Hostname) и шлюз (Gateway)

/etc/myname

/etc/mygate

netstart(8)

/etc/mygate

myname(5)

Информация о DNS

resolv.conf(5)

$ cat /etc/resolv.conf
search example.com
nameserver 125.2.3.4
nameserver 125.2.3.5
lookup file bind

example.com

125.2.3.4

125.2.3.5

hosts(5)

Применение изменений настроек

netstart(8)

# sh /etc/netstart

ifconfig(8)

Хотя в OpenBSD возможна полная переконфигурация сетевых настроек системы без
перезагрузки, рестарт системы НАСТОЯТЕЛЬНО рекомендуется после значительного
изменения конфигурации.

Проверка маршрутизации (Routes)

netstat(1)

route(8)

$ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags     Refs     Use    Mtu  Prio Iface
default            10.0.0.1           UGS         4       16      -    12 fxp0
224/4              127.0.0.1          URS         0        0  32768     8 lo0
127/8              127.0.0.1          UGRS        0        0  32768     8 lo0
127.0.0.1          127.0.0.1          UH          2       15  32768     1 lo0
10.0.0/24          link#1             UC          1        4      -     4 fxp0
10.0.0.1           aa:0:4:0:81:d      UHL         1       11      -     1 fxp0
10.0.0.38          127.0.0.1          UGHS        0        0      -     1 lo0

$ route show
Routing tables

Internet:
Destination        Gateway            Flags     Refs     Use    Mtu  Prio Iface
default            10.0.0.1           UGS         4       16      -    12 fxp0
base-address.mcast localhost          URS         0        0  32768     8 lo0
loopback           localhost          UGRS        0        0  32768     8 lo0
localhost          localhost          UH          2       15  32768     1 lo0
10.0.0/24          link#1             UC          1        4      -     4 fxp0
10.0.0.1           aa:0:4:0:81:d      UHL         1       11      -     1 fxp0
10.0.0.38          localhost          UGHS        0        0      -     1 lo0

Настройка Aliases для интерфейсов

hostname.if(5)

$ cat /etc/hostname.dc0
inet 192.168.0.2 255.255.255.0
inet alias 192.168.0.3 255.255.255.255
inet alias 192.168.0.4 255.255.255.255

запустите netstart

ifconfig -A

Включить / Выключить сетевой интерфейс

ВКЛЮЧИТЬ интерфейс enp0s25:

ip link
set dev enp0s25 up

ВЫКЛЮЧИТЬ интерфейс enp0s25:

ip link
set dev enp0s25 down

Изменить netmask

Что такое netmask или маска подсети вы можете узнать в статье

«Компьютерные сети»

Узнать свою маску

default via 10.6.0.1 dev eth0
10.6.0.0/8 dev eth0 src 10.6.1.68

ip address del 10.6.1.100/8 dev eth0

ip address add 10.6.1.68/22 dev eth0

Nmcli

nmcli conn show

NAME UUID TYPE DEVICE
k3-5-bw4-udp-1196 754bf232-b384-4e41-944f-00b37e781ea3 vpn wlp0s20f3
NetGuest 09a61c52-6da7-4947-bcce-bd928c72ec04 wifi wlp0s20f3
tun0 749f87c0-2e48-48d6-a8b9-924e120b4e22 tun tun0
br-cb9e77c3b2f2 744bd9ed-dc76-4632-9bb7-47605e47d16e bridge br-cb9e77c3b2f2
docker0 717d7ef5-2bcf-493e-af17-ea858a83d7ce bridge docker0

Net2.4G cee7ba3b-2835-4383-ae97-70ed50ec6d41 wifi —
NetM 131ea9fd-ca46-4de6-b909-542ae1548894 wifi —
SKYnet 5faa88cd-b6a4-4b8d-aa16-d0c8a62425ea wifi —
S-office 5ca185cc-cd49-4451-99c8-42ae24aef077 wifi —
Wired connection 1 befcb047-1362-33bf-8819-96d783e30df5 ethernet —

Изменить netmask

Что такое netmask или маска подсети вы можете узнать в статье

«Компьютерные сети»

Узнать свою маску

default via 10.6.0.1 dev eth0
10.6.0.0/8 dev eth0 src 10.6.1.68

ip address del 10.6.1.100/8 dev eth0

ip address add 10.6.1.68/22 dev eth0

Настройка WiFi

Принцип настройки беспроводной сети на CentOS не сильно отличается от проводной.

Создаем конфигурационный файл со следующим содержимым:

* где dmoskwifi — название WiFi сети (SSID).

Настройка маршрутизации по двум провайдерам

Время на прочтение

Вчера столкнулся с небольшой проблемой — на машине с Win2k3 установлены 2 сетевых карты, 2 провайдера. Проблема оказалась следующая: подсети пересекаются (точнее — совпадают). Было решено использовать за основной шлюз 1го провайдера, а по внутрисетевым ресурсам гулять — через 2го. И всё бы ничего, но машина должна обслуживать входящие соединения с обоих интерфейсов. Но, благодаря статическим маршрутам, ответы на запросы из подсети 10.0.0.0/8, пришедшей со стороны первого провайдера уходили через канал второго провайдера, что было, мягко говоря, не тем, что нужно. Как решить эту проблему под линухом — я знал (и тоже поведаю в этой заметке). Немного погуглив был найден вариант решения (в msdn’e наткнулись на управления приоритетами соединений). Коллега (WAJIM, привет) подумал — и нашёл 2й вариант. Потом немного (совсем немного) подумал я — и по аналогии появился 2й вариант решения для линуха 🙂
Итого, под катом вас ожидает 4 варианта решения задачи маршрутизации по 2м провайдерам — 2 под виндовс и 2 под линукс.

Дано:

  • 2 физических фаервола, по совместительству являющихся шлюзами (192.168.1.10 и 192.168.2.10)
  • 2 сетевых интерфейса (lan1 — 192.168.1.101 и lan2 — 192.168.2.101)
  • желание заставить это добро работать так, как нужно нам
  • Windows
    • Управление приоритетом сетевых подключений:
      Необходимо создать 3 маршрута:

      route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.10 metric 1
      route -p add 10.0.0.0 mask 255.0.0.0 192.168.1.10 metric 1
      route -p add 10.0.0.0 mask 255.0.0.0 192.168.2.10 metric 1

      Далее идём в Сетевые подключения -> Дополнительно -> Дополнительные параметры, перемещаем lan2 вверх, чтобы это соединение оказалось выше lan1. Готово.

    • Приоритет в таблице маршрутизации:
      Опять же — создаём 3 маршрута. Только изменим метрики

      route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.10 metric 1
      route -p add 10.0.0.0 mask 255.0.0.0 192.168.1.10 metric 2
      route -p add 10.0.0.0 mask 255.0.0.0 192.168.2.10 metric 1

      И никаких танцев с приоритетом интерфейсов. Считаю этот метод оптимальным.
      UPD: метрика интерфеса, приоритет которого выше (см. предыдущий пункт) не должна быть наименьшей.

  • Linux
    • Приоритет в таблице маршрутизации:
      Тут почти тоже самое, что и в предыдущем пункте (только синтаксис чуток различается)

      route add default gw 192.168.1.10 metric 0
      route add -net 10.0.0.0/8 gw 192.168.1.10 metric 1
      route add -net 10.0.0.0/8 gw 192.168.2.10 metric 0

    • iproute2:
      Собственно, для этого решения необходимо наличие установленного пакета iproute2. В дебиане — apt-get install iproute.
      В этом случае нам понадобится 2 маршрута

      route add default gw 192.168.1.10 metric 0
      route add -net 10.0.0.0/8 gw 192.168.2.10 metric 0

      Создадим 2 таблицы маршрутизации:

      echo ’10 lan1′ >> /etc/iproute2/rt_tables
      echo ’11 lan2′ >> /etc/iproute2/rt_tables

      Добавляем в эти таблицы правила маршрутизации:

      ip route add default via 192.168.1.10 table lan1
      ip rule add from 192.168.1.101 table lan1
      ip route add 127.0.0.0/8 dev lo table lan1

      ip route add default via 192.168.2.10 table lan2
      ip rule add from 192.168.2.101 table lan2
      ip route add 127.0.0.0/8 dev lo table lan2

      Последние правила — для того, чтобы пакеты с локального интерфейса не терялись.

    Так же не стоит забывать, что линукс при перезагрузки очищает таблицы и правила маршрутизации, потому рекомендую создать хитрый скрипт в папке /etc/network/if-up.d. У меня там лежит скрипт такого содержания:

    #!/bin/sh -e

    case “$IFACE” in
      eth1)
       ip route add default via 192.168.1.10 table lan1
       ip rule add from 192.168.1.101 table lan1
       ip route add 127.0.0.0/8 dev lo table lan1
      ;;
      eth2)
       route del default gw 192.168.2.101
       route add -net 10.0.0.0/8 gw 192.168.2.10 1
       ip route add default via 192.168.2.10 table lan2
       ip rule add from 192.168.2.101 table lan2
       ip route add 127.0.0.0/8 dev lo table lan2
      ;;
    esac

    UPD: поправил косяки в указании метрики.

Выбор за вами. Скажу лишь что было решено остановиться на вторых вариантах для обоих систем (изменение метрики на windows и iproute2 на debian).
Кому интересна тема маршрутизации в линуксе — рекомендую почитать вот эту вещь lartc.org/howto
Надеюсь, кому‐ нибудь эта информация окажется полезной.

И ещё раз, коллеги — с праздником 🙂

DHCP

* в наших примерах выше данный параметр имеет значение static.

Переопределение DNS с помощью dhclient.conf

Также мы можем переопределять настройки для DHCP с помощью конфигурационного файла. Например, если мы хотим, чтобы адреса DNS были заданы определенные, а не полученны от DHCP, открываем конфиг:

* где enp0s3 — имя сетевого интерфейса, который будет получать адрес от сервера DHCP. 8.8.8.8, 8.8.4.4 — адреса, которые будут настоены на интерфейсе, независимо от того, какие предложит сервер DHCP.

Или мы можем использовать адреса от DHCP, но сделать приоритетными свои:

* в данном примере, мы зададим в качестве основного сервера DNS — 127.0.0.1.

Чтобы данный метод сработал в CentOS 8, необходимо открыть файл:

Переопределение DNS в NetworkManager (альтернативный способ)

Метод, описанный выше по переопределению DNS не подходит для NetworkManager без изменения настройки dhcp, так как адреса будут получены и обработаны с помощью встроенных методов. Выше, предоставлено решение в виде настройки dhcp=dhclient, однако мы рассмотрим альтернативный способ, на случай, если кому-то это пригодится.

* в данном примере мы создали скрипт, который сначала добавит нужную нам запись в файл /etc/resolv.conf, а после добавит туда значения, полученные от DHCP. Обратите внимание, что в конкретном примере:

  • адрес 127.0.0.1 задается в качестве приоритетного сервера DNS.
  • остальные настройки получаем от DHCP, которые NetworkManager помещает в файл /var/run/NetworkManager/resolv.conf.

Разрешаем запуск скрипта:

systemctl restart NetworkManager

Через 2 секунды проверяем:

DHCP

Если нужно получать ip автоматически

iface eth0 inet dhcp

Настройка сети с помощью ifconfig

Получить информацию об имеющихся интерфейсах на старых версиях Debian можно с помощью команды

Изучите вывод этой команды и посмотрите какой интерфейс Вам доступен. Обычно это eth0.
, если нужно получать ip автоматически

iface eth0 inet dhcp

Если нужно задать статический ip

iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0

Чтобы изменения пришли в силу нужно выполнить

ifconfig wlan0 down

ifconfig eth0 up/down

Перезапустить/остановить/запустить сетевые службы

Настроить DNS можно через файл /etc/resolv.conf

При

установке

нужно было запомнить какие сетевые интерфейсы
вам предлагает сконфигурировать Debian.

В старых версиях Dbian это было просто, они назывались eth0, eth1 и так далее.

Поэтому для включения сетевого интерфейса, в приведённой выше команде нужно менять 0 на 1 и т.д.

В новых версиях Debian и в других Unix-подобных дистрибутивах, например

OpenBSD

сетевые интерфейсы называются более разнообразно (msk0, sk0 и др.)

Для того, чтобы с этим не возникало сложностей – полезно записывать то, что предлагается сконфигурировать при
установке дистрибутива.

Включить автоматическое получение ip

Выключить автоматическое получение ip можно вытащив сетевой шнур и вставив обратно. Говорят, что
должно сброситься.

и изучить вывод.

Traceroute

Чтобы установить traceroute выполните

sudo apt-get install traceroute

Equal-cost Multipath Routing

0.0.0.0/0

Команда route(8) используется
для добавления/удаления/изменения маршрутов в таблице маршрутизации (routing
table). Аргумент -mpath используется при добавлении multipath
маршрутов.

# route add -mpath default 10.130.128.1
# route add -mpath default 10.132.0.1
# netstat -rnf inet | grep default
default     10.130.128.1      UGS       2      134      -     fxp1
default     10.132.0.1        UGS       0      172      -     fxp2

10.130.128.1

fxp1

10.132.0.1

fxp2

Так как mygate(5) до сих пор
не поддерживает multipath маршрутизацию по умолчанию, вышеуказанные команды
должны быть добавленны в конец
hostname.if(5) файлов для
fxp1 и fxp2 интерфейсов.
Файл /etc/mygate должен быть после этого удален.

$ tail -1 /etc/hostname.fxp1
!route add -mpath default 10.130.128.1
$ tail -1 /etc/hostname.fxp2
!route add -mpath default 10.132.0.1

sysctl(8)

# sysctl net.inet.ip.multipath=1
# sysctl net.inet6.ip6.multipath=1

sysctl.conf(5)

А теперь попробуем проверить работу разных маршрутов.
Ядро будет распределять трафик в режиме балансировки (load balance)
для каждого multipath маршрута.

# traceroute -n 154.11.0.4
traceroute to 154.11.0.4 (154.11.0.4), 64 hops max, 60 byte packets
 1  10.130.128.1  19.337 ms  18.194 ms  18.849 ms
 2  154.11.95.170  17.642 ms  18.176 ms  17.731 ms
 3  154.11.5.33  110.486 ms  19.478 ms  100.949 ms
 4  154.11.0.4  32.772 ms  33.534 ms  32.835 ms

# traceroute -n 154.11.0.5
traceroute to 154.11.0.5 (154.11.0.5), 64 hops max, 60 byte packets
 1  10.132.0.1  14.175 ms  14.503 ms  14.58 ms
 2  154.11.95.38  13.664 ms  13.962 ms  13.445 ms
 3  208.38.16.151  13.964 ms  13.347 ms  13.788 ms
 4  154.11.0.5  30.177 ms  30.95 ms  30.593 ms

RFC2992

Стоит заметить, если интерфейс, используемый при multipath маршрутизации,
потеряет соединение (например, нет carrier), ядро тем не менее все
равно будет пытаться отправить пакеты маршрутом, сконфигурированным для
этого интерфейса. Конечно, этот трафик никуда не попадет.
Очень рекомендуется использовать
ifstated(8) для проверки
доступности интерфейса и коррекции таблицы маршрутизации.

Несколько IP на одном сетевом адаптере

В зависимости от версии операционной системы, дополнительные адреса добавляются посредством:

  1. Псевдонимов — создание нового виртуального интерфейса с названием <имя интерфейса>:<номер>.
  2. Добавлением IPADDRx и NETMASKx в конфигурационном файле.

Рассмотрим оба варианта подробнее.

Создание псевдонимов (более ранние версии CentOS 7 и ниже)

Создаем новый конфигурационный файл для сетевого интерфейса:

* где ens32 — имя физического интерфейса, :1 — виртуальный номер.

Перезапускаем сетевые службы.

Настройка конфигурационного файла (поздние версии CentOS 7 и выше)

Открываем конфигурационный файл для сетевого интерфейса, например:

* где ens32 — имя физического интерфейса, дополнительные адреса задаются с помощью опций IPADDR1, IPADDR2, NETMASK1, NETMASK2.

Перезапускаем сетевые службы.

Настройка сетевого моста (bridge)

bridge(4)

Сетевой мост, использующийся в качестве DHCP сервера

vr(4)

vr0

vr3

vr1

vr2

vr3

vr0

Невозможно назначить IP адрес непосредственно bridge интерфейсу.
IP адрес должен быть добавлен к одному из интерфейсов, но мы не можем
использовать физический интерфейс, так как link может быть down, и в этом
случае адрес будет недоступен.
К счастью, есть драйвер vether(4)
(виртуальный Ethernet), который можно использовать для этой цели.
Мы добавим его к мосту, назначим ему IP адрес и скажем
dhcpd(8) использовать его.

  • Конфигурация DHCP сервера еще не описана в
    этом разделе, но схема адресации, используемая здесь, является
    той же самой.
  • Это также будет uplink роутер для вашей мостовой сети, поэтому мы будем
    использовать IP адрес 192.168.1.1 для соответствия
    конфигурации DHCP сервера.
  • Мы не будем рассматривать здесь конфигурацию входящей линии связи,
    маршрутизации или фаервола.

vr1

vr2

vr3

# echo up > /etc/hostname.vr1
# echo up > /etc/hostname.vr2
# echo up > /etc/hostname.vr3

vether0

# echo 'inet 192.168.1.1 255.255.255.0 192.168.1.255' > /etc/hostname.vether0
$ cat /etc/hostname.bridge0
add vether0
add vr1
add vr2
add vr3
up

vether0

# rcctl set dhcpd flags vether0

Фильтрация пакетов при помощи моста

Packet Filter

Пара советов

  • Используя опцию blocknonip
    ifconfig(8) или в
    hostname.bridge0,
    вы можете предотвратить утечку вашего не-IP-трафика (например, IPX
    или NETBEUI).
    Это может быть важно в некоторых ситуациях. Вы должны знать, что мосты
    работают для всех видов трафика, а не только для IP.
  • Соединение на мосту требует, чтобы NIC находились в promiscuous режиме.
    Они слушают весь сетевой трафик, а не только тот, который направлен
    на интерфейс. Это увеличит нагрузку на процессор и шину, как и следовало
    бы ожидать.

Как установить статический IP

Чтобы подлкючиться к другому компьютеру через Ethernet нужно в Windows выставить
параметры адаптера через контольную панель. То же самое нужно было сделать и
в Linux.

Для этого нужно выполнить команду

sudo vi /etc/network/interfaces

И добавить туда

auto enp3s0
iface enp3s0 inet static
address 192.0.2.131
netmask 255.255.255.0
dns-nameservers 8.8.8.8,8.8.4.4
auto wlp1s0
iface wlp1s0 inet dhcp

Обратите внимание, что gateway не указан.

И перезапустить сеть

sudo service networking restart

Второй вариант проще запомнить, но, чтобы он заработал
нужно наличие service

Теперь если у Вас установлен SSH можно зайти на компьютер с Linux по ssh с помощью

Putty

или

MobaXterm

Если нужно установить SSH выполните

sudo apt install openssh-server

sudo apt-get install openssh-client

Rsyslog

Часто бывает нужно следить за логами доступа в файле

auth.log

которые находятся по адресу

За этот лог отвечает

rsyslog

поэтому нужно сперва проверить установлена ли эта служба.
Если нет – установите командой

apt-get install rsyslog

Перейдите в /etc/init.d/ и запустите rsyslog командой

service start rsyslog

Остановить, перезапустить и проверить статус можно командами

service stop rsyslog
service restart rsyslog
service status rsyslog

Настроить уровень логов можно в файле

/etc/rsyslog.d/50-default.conf

# Some “catch-all” log files.

# auth,authpriv.none;\
# news.none;mail.none -/var/log/debug

# auth,authpriv.none;\
# cron,daemon.none;\
# mail,news.none -/var/log/messages

Обнаружение сетевых устройств

Время на прочтение

Сканирование сети с построением списка устройств и их свойств, таких как перечень сетевых интерфейсов, с последующим снятием данных в системах мониторинга, если не вникать в происходящее, может показаться особой, компьютерной, магией. Как же это работает — под катом.

Обнаружение сетевых устройств

Disclaimer
Автор не имеет профильного образования, связанного с администрированием сетей, поэтому наверняка имеются неточности и упомянуто не всё, что можно.

Обнаружение

  • ping сканирование
    Как ни странно, это самый простой и распространенный способ.
  • Проверка открытых TCP-портов
    Если на устройстве отключен ответ на ping, то можно попробовать установить соединение по какому-либо TCP-порту. В виду того, что портов много и проверка каждого занимает значительное время, обычно проверяются только самые распространенные, напр. 80 или 443, используемые для веб-интерфейса устройства.
  • Проверка работы UDP служб
    UDP протокол не отправляет подтверждения о получении запроса и поэтому в общем виде сканирование UDP-портов невозможно. Однако можно попробовать опросить службы, прослушивающие UDP-порт и отправляющие ответ на запрос, напр. SNMP (порт 161) или IPMI (порт 623). В случае, если получен ответ, отличный от таймаута, то устройство обнаружено.
  • ARP сканирование
    Помимо обычных ICMP запросов, которые используют утилиты ping, для устройств в том же широковещательном L2-домене можно воспользоваться более быстрым arping: по диапазону ip-адресов рассылаются широковещательные ARP пакеты вида «компьютер с IP-адресом XXX, сообщите свой MAC-адрес компьютеру с МАС-адресом запросившего», и если ответ получен, то устройство считается обнаруженным.
  • CDP/LLDP
    Если в сети используется протокол LLDP (или аналог CDP), то устройства могут собирать сведения о своих соседях, которые можно считать обнаруженными. Эти данные доступны по SNMP.

    Отмечу, что информация о соседях совместно с результатами traceroute может служить основой для построения физической карты сети.

  • NetBIOS сканирование
    Протокол NetBIOS может быть использован для поиска Windows-машин, например при помощи утилиты nbtscan.
  • Журналы DHCP (предложено alexanster)
    В журналах DHCP-серверов есть информация о выдачи ip-адресов по MAC-адресам. Для недавних записей в журнале можно считать, что эти устройства обнаружены.
  • ARPWatch (предложено alexanster, описано TaHKucT)
    Arpwatch отслеживает пары IP-адрес — MAC-адрес, записывая в лог новые, пропавшие и изменившиеся пары. Устройства, попавшие в лог, можно считать обнаруженными.
  • Анализ FDB-таблиц коммутаторов(предложено mickvav)
    FDB-таблицы (Forwarding DataBase) управляемых коммутаторов содержат данные о коммутации MAC-адресов абонентов и устройств, т.е. соответствии MAC-адрес устройства — порт коммутатора.

    Данные доступны по SNMP и telnet, и могут быть использованы при построении физической карты сети.

Сбор сведений

После того, как устройство обнаружено, можно переходить к сбору сведений о нем.
Используя ARP протокол, по ip можно получить MAC-адрес, а по нему вероятного производителя (часть оборудования допускает смену адреса, так что метод не очень надежен). Далее можно воспользоваться утилитой nmap, которая сканируя открытые порты, сверяется со своей базой отпечатков и делает предположение об используемой операционной системе, её версии и типе устройства.

Получение типа устройства и используемой ОС при помощи nmap

nmap -O -v 192.168.0.1

Starting Nmap 7.60 ( https://nmap.org ) at 2018-03-04 01:17 RTZ 2 (ceia)
Initiating ARP Ping Scan at 01:17
Scanning 192.168.0.1 [1 port]
Completed ARP Ping Scan at 01:17, 0.70s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 01:17
Completed Parallel DNS resolution of 1 host. at 01:17, 0.00s elapsed
Initiating SYN Stealth Scan at 01:17
Scanning 192.168.0.1 [1000 ports]
Discovered open port 80/tcp on 192.168.0.1
Discovered open port 49152/tcp on 192.168.0.1
Discovered open port 1900/tcp on 192.168.0.1
Completed SYN Stealth Scan at 01:17, 0.13s elapsed (1000 total ports)
Initiating OS detection (try #1) against 192.168.0.1
Retrying OS detection (try #2) against 192.168.0.1
WARNING: OS didn't match until try #2
Nmap scan report for 192.168.0.1
Host is up (0.00s latency).
Not shown: 997 closed ports
PORT      STATE SERVICE
80/tcp    open  http
1900/tcp  open  upnp
49152/tcp open  unknown
MAC Address: A0:F3:C1:35:21:58 (Tp-link Technologies)
Device type: WAP
Running: Linux 2.4.X
OS CPE: cpe:/o:linux:linux_kernel:2.4.36
OS details: DD-WRT v24-sp1 (Linux 2.4.36)
Network Distance: 1 hop

Чтобы получить более подробные сведения по устройству потребуется один из следующих способов:

  • SNMP
    Протокол SNMP почти всегда поддерживаем маршрутизаторами и коммутаторами; имеется в Windows (соответствующая служба по умолчанию отключена); для Linux требуется установка демона snmpd. По всей видимости последняя третья версия достаточно сложна в реализации, поэтому предыдущая версия 2с до сих пор актуальна, хотя и не рекомендуема из-за отсутсвия шифрования при передаче данных. Протолок работает на 161 UDP-порту устройства.

    Для работы с SNMP можно использовать пакет утилит Net-SNMP. Чтобы получить, к примеру, описание устройства, надо указать версию протокола, пароль на чтение (community read, по умолчанию public) и адрес, в нотации SNMP называемый OID (object identificator) и состоящий из чисел и точек. Все адреса устройства можно представить в виде дерева, где адреса отсортированы в лексикографическом порядке. Протокол позволяет запросить текущее значение по адресу, а также адреса следующие за текущим.

    Получение описания устройства при помощи snmpget

    snmpget -v 2c -c public 192.168.0.102 1.3.6.1.2.1.1.1.0
    
    SNMPv2-MIB::sysDescr.0 = STRING: Linux debian 3.16.0-4-586 #1 Debian 3.16.43-2+deb8u2 (2017-06-26) i686 

    Стандартный набор адресов весьма ограничен и содержит описание устройства, контакты, расположение и время работы (uptime). Остальные адреса зависят от производителя устройства и могут быть получены сканированием, например, утилитой snmpwalk. К счастью, Linux и Windows имеют типовые адреса для сетевых интерфейсов и загруженности процессоров/памяти, поэтому для них лишь знать (или уметь определить) используемую операционную систему.

    Получение описания дисков Linux при помощи snmpwalk

    snmpwalk -v 2c -c public 192.168.0.102 1.3.6.1.4.1.2021.9.1.2
    
    UCD-SNMP-MIB::dskPath.1 = STRING: /
    UCD-SNMP-MIB::dskPath.2 = STRING: /var
    UCD-SNMP-MIB::dskPath.3 = STRING: /
    UCD-SNMP-MIB::dskPath.4 = STRING: /run
    UCD-SNMP-MIB::dskPath.5 = STRING: /dev/shm
    UCD-SNMP-MIB::dskPath.6 = STRING: /run/lock
    UCD-SNMP-MIB::dskPath.7 = STRING: /sys/fs/cgroup

    Получение описания дисков Windows при помощи snmpwalk

    snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.25.2.3.1.3
    
    HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: C:\ Label:  Serial Number a65ceb77
    HOST-RESOURCES-MIB::hrStorageDescr.2 = STRING: D:\ Label:  Serial Number ded9f83e
    HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: E:\ Label:  Serial Number 8e764a1
    HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: I:\
    HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: Virtual Memory
    HOST-RESOURCES-MIB::hrStorageDescr.6 = STRING: Physical Memory
  • WMI
    Технология WMI — это расширенная и адаптированная под Windows реализация стандарта WBEM, позволяющая удаленно не только считывать параметры, но и управлять устройством. WMI работает поверх RPC (TCP порт 135) и DCOM (на произвольном TCP порту выше 1024), активно используется в скриптах Power Shell (ранее Windows Script Host).

    Данные можно запрашивать, разумеется, только с Windows машин.

    Получение информации об оперативной памяти в PowerShell

    Get-WmiObject win32_OperatingSystem |%{"Total Physical Memory: {0}KB`nFree Physical Memory : {1}KB`nTotal Virtual Memory : {2}KB`nFree Virtual Memory  : {3}KB" -f $_.totalvisiblememorysize, $_.freephysicalmemory, $_.totalvirtualmemorysize, $_.freevirtualmemory}
    
    Total Physical Memory: 2882040KB
    Free Physical Memory : 612912KB
    Total Virtual Memory : 5762364KB
    Free Virtual Memory  : 1778140KB

    Также имеется консольная утилита wmic и ее Linux-порт

    Получение производителя устройства при помощи wmic

    wmic /USER:admin /PASSWORD:mypassword /NODE:"192.168.0.100" computersystem get Manufacturer
    
    Manufacturer
    Gigabyte Technology Co., Ltd.
  • Агент системы мониторинга, напр. Zabbix или Check_MK
    Если имеется возможность, то на устройстве устанавливается небольшая программа, работающая в фоне и собирающая данные. Преимущество использования агентов в том, что получение данных унифицировано вне зависимости от используемого устройством оборудования и операционной системы, а также возможно собирать данные доступные только локально (к примеру результат работы консольной программы).
  • SSH
    Исходно данные по SSH можно получать с Linux и iOS устройств. Для Windows и Android потребуется установка SSH-сервера.

    Получение информации о CPU по SSH

    cat /proc/cpuinfo
    
    processor       : 0
    Processor       : AArch64 Processor rev 4 (aarch64)
    Hardware        : sun50iw1p1
    BogoMIPS        : 48.00
    Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
    CPU implementer : 0x41
    CPU architecture: 8
    CPU variant     : 0x0
    CPU part        : 0xd03
    CPU revision    : 4
    
    processor       : 1
    ...

  • Запрос данных у управляющего сервиса, такого как гипервизор виртуальных машин

Как это работает на примере Zabbix

Как известно Zabbix может самостоятельно обнаруживать новые устройства в сети и автоматически опрашивать некоторые их параметры. Называется это — Low Level Discovery.

Обнаружение устройств задается правилами сетевого обнаружения, которые комбинируют перечисленные ранее методы обнаружения, определяют доступно ли устройство и какой шаблон к нему применить (обычно исследуется описание устройства). Шаблон содержит список свойств, которые можно получить с устройства, а также правила для обнаружения и создания новых, выполняемые по таймеру.

В случае агента правило будет выглядеть немного иначе: запросить у агента одно из discovery-свойств, к примеру system.cpu.discovery, получить список процессоров в виде json

[
	{"NUMBER": 0, "STATUS": "online"},
	{"NUMBER": 1, "STATUS": "online"}
] 

Заключение

Как видно всё достаточно просто и никакой магии нет. Если вы знаете еще какие-либо способы обнаружения устройств или получения их свойств, то просьба сообщить о них.

Настройка сети с помощью Iproute2

Актуально для Debian 9 и выше.

Чтобы получить список интерфейсов нужно воспользоваться командой

На выходе будет что-то похожее на

1: : <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 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 30:f9:ed:d9:ea:d3 brd ff:ff:ff:ff:ff:ff
inet brd 192.0.2.255 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::32f9:edff:fed9:ead3/64 scope link
valid_lft forever preferred_lft forever
3: : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:76:3f:f5:c4:1f brd ff:ff:ff:ff:ff:ff
inet brd 192.168.43.255 scope global dynamic noprefixroute wlp1s0
valid_lft 2800sec preferred_lft 2800sec
inet6 fe80::ba76:3fff:fef5:c41f/64 scope link noprefixroute
valid_lft forever preferred_lft forever

1: Первый интерфейс это

он направлен на локальную машину и имеет IP

2: Второй интерфейс
это моё поключение к по Ethernet к другому ПК.

В этом примере компьютер с Debian (1) соединён с компьютером
с

Windows

(2) напрямую через Ethernet кабель

Через это подключение я захожу на комп номер 1 по SSH.

IP компьютера с Debian вы видите выше

, а у компа с Windows IP

его здесь, естественно не видно.

Как настроить этот IP читайте

дальше

3: Третий интефейс

это подключение к местному Wi-Fi от мобильного телефона.
IP получен динамически

Раньше интерфейсы назывались

eth0

,

eth1

и так далее, сейчас у них более разнообразные названия.

enp0s31f6: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 54:05:db:cd:b2:af txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 memory 0xef380000-ef3a0000

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2465 bytes 795656 (795.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2465 bytes 795656 (795.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vboxnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.1 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::800:27ff:fe00:0 prefixlen 64 scopeid 0x20<link>
ether 0a:00:27:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 678 bytes 51442 (51.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlp0s20f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.70.158 netmask 255.255.240.0 broadcast 10.1.79.255
inet6 fe80::9708:9f80:20b5:4777 prefixlen 64 scopeid 0x20<link>
ether 8c:8d:28:c5:a2:2e txqueuelen 1000 (Ethernet)
RX packets 1103516 bytes 1061399166 (1.0 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 320242 bytes 110222925 (110.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Оставьте комментарий