Сетевые настройки на сервере Debian. Задачи Сконфигурировать сетевой интерфейс с помощью команды ip
Скачать 1.09 Mb.
|
Сетевые настройки на сервере Debian В ходе выполнения лабораторной работы все этапы подкрепляются скриншотами. Задачи: Сконфигурировать сетевой интерфейс с помощью команды IP Указать ip адрес 192.168.14.x Маска 255.255.0.0 Шлюз 192.168.249.206 DNS:192.168.251.1 Проверить наличие интернета Выполнить nslookup ya.ru Сказать преподавателю IP адрес Сконфигурировать сетевой интерфейс с помощью GUI Указать ip адрес 192.168.x.x Маска 255.255.0.0 Шлюз 192.168.249.201 DNS:8.8.8.8 Проверить наличие интернета Выполнить nslookup ya.ru Выставить динамическое получение ip адреса Изменить имя хоста Воспользоваться утилитой tcpdump. В одном терминале запустить прослушивание пакетов, в другом запустить команду ping отловить: Все пакеты протокола icmp Все пакеты, исходящие на сервера ya.ru Изучить возможности команды route, netstat, traceroute в Linux и составьте краткое описание работы и функциональности. ТЕОРИТИЧЕСКАЯ ЧАСТЬ Настройка статического IP Вы установили сервер и во время установки указали какие-то сетевые параметры, или не указали, не важно. Но сейчас вы решили, что вам нужно назначить статический ip (static ip) адрес. Воспользуемся для этого утилитой ip. Сначала посмотрим список всех сетевых интерфейсов: # ip a В данном случаи в системе 1 сетевой интерфейс eth0 и он каким-то образом уже сконфигурирован. Назначим ему еще один статический адрес: # ip addr add 192.168.1.35/24 dev eth0 Этот адрес будет добавлен к уже существующему адресу. Проверим это: # ip a Теперь сервер будет доступен по обоим адресам. Текущая настройка сохранится только до перезагрузки сервера. Чтобы она применялась во время загрузки, нужно либо каким-то образом добавить команду на изменение настроек в автозагрузку, например в /etc/rc.local, но это будет костыль. Правильнее отредактировать файл, который отвечает за сетевые настройки в debian - /etc/network/interfaces. Для того, чтобы назначить постоянный статический ip адрес, его нужно привести к следующему виду: # mcedit /etc/network/interfaces source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.35 gateway 192.168.1.1 netmask 255.255.255.0
Для проверки перезагружаем сервер и смотрим, все ли в порядке с настройкой статического ip адреса. Если вам нужно сменить ip адрес в debian, то вы можете временно изменить его с помощью команды ip, либо постоянно, отредактировав параметр address в файле сетевых настроек interfaces. Получение сетевых настроек по DHCP Теперь рассмотри вариант, когда вам необходимо получить динамический ip адрес в Debian. Здесь по аналогии с предыдущими настройками можно пойди двумя путями: Получить ip адрес по dhcp в консоли с помощью программы dhclient, который будет работать до перезагрузки. Отредактировать файл конфигурации сетевых интерфейсов. Смотрим снова на текущую конфигурацию сети: # ip a Выполним команду на получение ip адреса по dhcp и проверим сеть: # dhclient # ip a В качестве второго ip мы получили адрес от dhcp сервера. Если у вас несколько сетевых интерфейсов, то необходимо добавлять название после команды, например вот так: # dhclient eth0 Для того, чтобы сбросить адрес, нужно воспользоваться следующим ключом: # dhclient -r Обратим внимание, что эта команда сбросит все ip адреса интерфейса, в том числе и статические. Чтобы снова запросить адрес, нужно выполнить предыдущую команду на получение ip с указанием сетевого интерфейса eth0. Все изменения, сделанные в консоли после перезагрузки, исчезнут. Чтобы их сохранить, приведем файл /etc/network/interfaces к следующему виду: # mcedit /etc/network/interfaces source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp Установка шлюза по-умолчанию (default gateway) Теперь разберемся со шлюзом по-умолчанию. В предыдущих примерах со статическим ip адресом и настройками по dhcp у нас не было необходимости указывать отдельно default gateway. Мы его устанавливали вместе с остальными настройками. Чтобы посмотреть установленный по-умолчанию шлюз в debian, можно воспользоваться следующей командой в консоли: # ip r sh default via 192.168.1.1 dev eth0 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.24 Это шлюз по-умолчанию (default gateway). Можно воспользоваться другими, более популярными и привычными командами: # route # netstat -nr Если получите ошибки: -bash: route: command not found -bash: netstat: command not found Значит у вас не установлен пакет net-tools. Установить его можно следующей командой. # apt install net-tools Если нам нужно сменить default gateway, то сначала надо удалить текущий шлюз, а потом назначить новый. # route del default gw 192.168.1.1 # route add default gw 192.168.1.50 То же самое, только с помощью ip: # ip route del default # ip route add default via 192.168.1.50 Проверяем, что получилось: # ip r sh default via 192.168.1.50 dev eth0 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.24 Все получилось. Эта настройка будет действовать до перезагрузки. Чтобы ее сохранить, либо меняйте конфигурационный файл interfaces, либо, при необходимости, придумывайте что-то еще. Как указать DNS сервер Для того, чтобы указать dns сервер, достаточно его записать в файл /etc/resolv.conf в следующем виде: # mcedit /etc/resolv.conf nameserver 192.168.1.1 nameserver 77.88.8.1 nameserver 8.8.8.8 nameserver 1.1.1.1
Если у вас стоит resolvconf, то в случае ненадобности, удалите его командой: # apt-get remove resolvconf После этого сервер надо перезагрузить и удалить сломавшуюся символьную ссылку /etc/resolv.conf, а вместо нее создать файл с нужным содержанием, которое я привел выше. Если же вам по какой-то причине необходима указанная выше программа, она у вас стоит и вы не хотите ее удалять, то адрес dns сервера необходимо указать в файле /etc/network/interfaces, добавив к параметрам интерфейса еще один: dns-nameservers 192.168.1.1 77.88.8.1 8.8.8.8 1.1.1.1 Этот параметр нужно установить сразу после указания шлюза gateway. Несколько адресов разделяются пробелом. Изменить hostname (имя хоста) Во время установки debian вы указывали имя хоста. Посмотреть его текущее значение можно в консоли: # hostname debian Это значение записано в файле /etc/hostname. Есть 2 способа изменить hostname в debian: Простой и быстрый с помощью консольной команды. Результат работает только до перезагрузки компьютера. Потом вернется старое имя. С помощью изменения конфигурационного файла результат сохраняется и после перезагрузки. Чтобы сразу применить изменение, потребуется выполнить системный скрипт. Для первого способа достаточно в консоли ввести команду: # hostname debian10 Теперь проверим, что получилось: # hostname debian10 Имя хоста изменилось, но в файле /etc/hostname по-прежнему указано прошлое значение. После перезагрузки hostname снова примет старое значение debian. Чтобы сделать постоянное изменение, необходимо ввести новое значение в файл вручную: # mcedit /etc/hostname debian10 Изменение вступит в силу после перезагрузки. Если воспользоваться командой: # hostnamectl set-hostname debian10 то изменения применятся сразу же. Tcpdump Утилита tcpdump позволяет проверять заголовки пакетов TCP/IP и выводить одну строку для каждого из пакетов. Она будет делать это до тех пор, пока не нажать Ctrl + C. Давайте рассмотрим одну строку из примера вывода: 20:58:26.765637 IP 10.0.0.50.80 > 10.0.0.1.53181: Flags [F.], seq 1, ack 2, win 453, options [nop,nop,TS val 3822939 ecr 249100129], length 0 Каждая строка включает: Метка времени Unix (20: 58: 26.765637) протокол (IP) имя или IP-адрес исходного хоста и номер порта (10.0.0.50.80) имя хоста или IP-адрес назначения и номер порта (10.0.0.1.53181) Флаги TCP (Flags [F.]). Указывают на состояние соединения и могут содержать более одного значения: o S — SYN. Первый шаг в установлении соединения F — FIN. Прекращение соединения — ACK. Пакет подтверждения принят успешно P — PUSH. Указывает получателю обрабатывать пакеты вместо их буферизации R — RST. Связь прервалась Порядковый номер данных в пакете. (seq 1) Номер подтверждения. (ack 2) Размер окна (win 453). Количество байтов, доступных в приемном буфере. Далее следуют параметры TCP Длина полезной нагрузки данных. (length 0) Установка tcpdumpВ дистрибутивах на основе Debian tcpdump можно установить с помощью команды APT: # apt install tcpdump -y Опции tcpdumpЗапускать tcpdump нужно с правами root. Tcpdump включает в себя множество опций и фильтров. При запуске tcpdump без каких-либо параметров произойдет перехват всех пакетов, проходящих через интерфейс по умолчанию. Вывести список доступных системе сетевых интерфейсов, в которых tcpdump может захватывать пакеты: # tcpdump -D или # tcpdump --list-interfaces 1.eth0 2.nflog (Linux netfilter log (NFLOG) interface) 3.nfqueue (Linux netfilter queue (NFQUEUE) interface) 4.eth1 5.any (Pseudo-device that captures on all interfaces) 6.lo [Loopback] Очень полезно для систем, в которых нет команды для вывода списка интерфейсов. Для захвата пакетов, проходящих через определенный интерфейс, используйте -i с именем интерфейса. Если не указать имя, тогда tcpdump подберет первый обнаруженный сетевой интерфейс. # tcpdump -i eth1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 01:06:09.278817 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 4761, seq 1, length 64 01:06:09.279374 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 4761, seq 1, length 64 01:06:10.281142 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 4761, seq 2, length 64 -v увеличивает количество отображаемой информации о пакетах -vv дает еще более подробную информацию По умолчанию tcpdump преобразует IP-адреса в имена хостов, а также использует имена служб вместо номеров портов. -n Если DNS не работает или вы не хотите, чтобы tcpdump выполнял поиск имени. # tcpdump –n listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 04:19:07.675216 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186733178:2186733278, ack 204106815, win 37232, length 100 04:19:07.675497 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 100, win 65535, length 0 04:19:07.675747 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 100:136, ack 1, win 37232, length 36 04:19:07.675902 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 136, win 65535, length 0 04:19:07.676142 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 136:236, ack 1, win 37232, length 100 -c захватывает только набор строк, например, 5: #tcpdump -c 5 04:19:07.675216 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186733178:2186733278, ack 204106815, win 37232, length 100 04:19:07.675497 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 100, win 65535, length 0 04:19:07.675747 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 100:136, ack 1, win 37232, length 36 04:19:07.675902 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 136, win 65535, length 0 04:19:07.676142 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 136:236, ack 1, win 37232, length 100 5 packets captured -tttt для использования более удобных временных меток (по умолчанию используются временные метки Unix) # tcpdump –tttt 2020-07-06 04:30:12.203638 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186734102:2186734138, ack 204107103, win 37232, length 36 2020-07-06 04:30:12.203910 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 36, win 65535, length 0 2020-07-06 04:30:12.204292 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 36:72, ack 1, win 37232, length 36 2020-07-06 04:30:12.204524 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 72, win 65535, length 0 2020-07-06 04:30:12.204658 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 72:108, ack 1, win 37232, length 36 Фильтры tcpdumpФильтр выраженийФильтр выражений выбирает, какие заголовки пакетов будут отображаться. Если фильтры не применяются, отображаются все заголовки пакетов. Самые распространенные фильтры : port host src dst tcp udp icmp Фильтр портовФильт портов используется для просмотра пакетов, поступающих на определенный порт: # tcpdump -i eth1 -c 5 port 80 23:54:24.978612 IP 10.0.0.1.53971 > 10.0.0.50.80: Flags [SEW], seq 53967733, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 256360128 ecr 0,sackOK,eol], length 0 23:54:24.978650 IP 10.0.0.50.80 > 10.0.0.1.53971: Flags [S.E], seq 996967790, ack 53967734, win 28960, options [mss 1460,sackOK,TS val 5625522 ecr 256360128,nop,wscale 6], length 0 23:54:24.978699 IP 10.0.0.1.53972 > 10.0.0.50.80: Flags [SEW], seq 226341105, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 256360128 ecr 0,sackOK,eol], length 0 23:54:24.978711 IP 10.0.0.50.80 > 10.0.0.1.53972: Flags [S.E], seq 1363851389, ack 226341106, win 28960, options [mss 1460,sackOK,TS val 5625522 ecr 256360128,nop,wscale 6], length 0 Фильтр хостовДля перехвата пакетов, приходящих или исходящих от определенного хоста. Например, IP-адрес 10.0.2.15: # tcpdump host 10.0.2.15 03:48:06.087509 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 3862934963:3862934999, ack 65355639, win 37232, length 36 03:48:06.087806 IP 10.0.2.2.50225 > 10.0.2.15.22: Flags [.], ack 36, win 65535, length 0 03:48:06.088087 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 36:72, ack 1, win 37232, length 36 03:48:06.088274 IP 10.0.2.2.50225 > 10.0.2.15.22: Flags [.], ack 72, win 65535, length 0 03:48:06.088440 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 72:108, ack 1, win 37232, length 36 Для перехвата пакетов определенных типов протоколов. Например, icmp, на интерфейсе eth1: # tcpdump -i eth1 icmp 04:03:47.408545 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 75, length 64 04:03:47.408999 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 2812, seq 75, length 64 04:03:48.408697 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 76, length 64 04:03:48.409208 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 2812, seq 76, length 64 04:03:49.411287 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 77, length 64 Комбинирование фильтровФильтры можно комбинировать с помощью операторов: AND OR NOT Это позволит писать команды, которые могут более точно изолировать пакеты. Например, пакеты с определенного IP-адреса и для определенного порта: # tcpdump -n -i eth1 src 10.0.0.1 and dst port 80 00:18:17.155066 IP 10.0.0.1.54222 > 10.0.0.50.80: Flags [F.], seq 500773341, ack 2116767648, win 4117, options [nop,nop,TS val 257786173 ecr 5979014], length 0 00:18:17.155104 IP 10.0.0.1.54225 > 10.0.0.50.80: Flags [S], seq 904045691, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 257786173 ecr 0,sackOK,eol], length 0 00:18:17.157337 IP 10.0.0.1.54221 > 10.0.0.50.80: Flags [P.], seq 4282813257:4282813756, ack 1348066220, win 4111, options [nop,nop,TS val 257786174 ecr 5979015], length 499: HTTP: GET / HTTP/1.1 00:18:17.157366 IP 10.0.0.1.54225 > 10.0.0.50.80: Flags [.], ack 1306947508, win 4117, options [nop,nop,TS val 257786174 ecr 5983566], length 0 Если нужно перехватить все пакеты кроме ICMP, используем оператор NOT: # tcpdump -i eth1 not icmp Сохранение заголовков в файлВывод tcpdump может довольно быстро перемещаться по экрану. В таких случаях можно сохранить заголовки пакетов в файле с опцией -w. Вывод сохраняется в файлы с расширением .pcap. Следующая команда сохраняет 10 строк вывода интерфейса eth1 в icmp.pcap. # tcpdump -i eth1 -c 10 -w icmp.pcap tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 10 packets captured 10 packets received by filter 0 packets dropped by kernel Прочитать этот файл можно с помощью опции -r # tcpdump -i eth1 -c 10 -w icmp.pcap reading from file icmp.pcap, link-type EN10MB (Ethernet) 05:33:20.852732 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 33, length 64 05:33:20.853245 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 3261, seq 33, length 64 05:33:21.852586 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 34, length 64 05:33:21.853104 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 3261, seq 34, length 64 05:33:22.852615 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 35, length 64 |