Настройка сети
Изучить файл с перечнем задействованных интерфейсов можно с помощью команды
Далее настройка зависит от версии 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
Чтобы узнать какая программа слушает определённый порт нужно предварительно установить один из
инструментов:
Начнём с 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 lan1ip 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
;;
esacUPD: поправил косяки в указании метрики.
- Приоритет в таблице маршрутизации:
Выбор за вами. Скажу лишь что было решено остановиться на вторых вариантах для обоих систем (изменение метрики на 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 на одном сетевом адаптере
В зависимости от версии операционной системы, дополнительные адреса добавляются посредством:
- Псевдонимов — создание нового виртуального интерфейса с названием <имя интерфейса>:<номер>.
- Добавлением 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