Network-Scripts — Управление сетью.

Установка, настройка, эксплуатация.
Ответить
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Network-Scripts — Управление сетью.

Сообщение root »

Оглавление
Темы
Отключаем ipv6
Меняем имена интерфейсов в системе на ethX
Wake on Lan
Virtual Local Area Network — виртуальная локальная сеть
Фиктивный интерфейс
Использование смартфона как USB-модема
Изменение TTL пакетов TCP/IP
Пример для TunnelBroker Hurricane Electric 6in4
Дополнительные материалы
NetworkManager — Управление сетью
Systemd-networkd — Управление сетью
В настоящее время активного использования протокола ipv6 нет и в обычной работе он не нужен. Хотя нас уже много лет пугают, что свободных ip адресов уже практически не осталось, но на деле пока еще всем хватает. Так что с точки зрения практических соображений ipv6 в настоящее время на сервере не нужен и его можно отключить.
Перед отключением ipv6 необходимо на всякий случай проверить, какие программы его используют в своей работе. Это нужно для того, чтобы избежать ошибок в их работе, предварительно отключив ipv6 в конфигурациях. Для того, чтобы увидеть, какие программы висят на ipv6 интерфейсе воспользуемся командой netstat:

Код: Выделить всё

netstat -tulnp
Все строки с ::: это ipv6 протокол. В моем случае это sshd, postfix и chronyd. Отключим им ipv6 и оставим только ipv4.
Начнем с sshd. Открываем файл настроек /etc/ssh/sshd_config и находим строки:
e /etc/ssh/sshd_config

Код: Выделить всё

#AddressFamily any
#ListenAddress 0.0.0.0
Раскомментируем их и изменим. Должно получиться вот так:

Код: Выделить всё

AddressFamily inet
ListenAddress 1.2.3.4
Теперь открываем файл настроек Postfix /etc/postfix/main.cf. Ищем там строку:
e /etc/postfix/main.cf

Код: Выделить всё

#inet_protocols = all
Меняем на:
inet_protocols = ipv4
Отключаем ipv6 в chronyd. Для этого создаем файл /etc/sysconfig/chronyd и добавляем строку:

Код: Выделить всё

OPTIONS=-4
Теперь отключаем ipv6. Открываем файл в каталоге /etc/sysctl.d/40-ipv6.conf и добавляем туда строки:
e /etc/sysctl.d/40-ipv6.conf

Код: Выделить всё

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
Применяем изменённые параметры

Код: Выделить всё

sysctl --system
Редактируем файл /etc/sysconfig/network, добавляя туда:
e /etc/sysconfig/network

Код: Выделить всё

# Отключаем IPv6
NETWORKING_IPV6=no
IPV6INIT=no
#Удаляем маршруты 169.254.0.0 / 255.255.0.0
NOZEROCONF=yes
Перезапускаем сеть

Код: Выделить всё

systemctl restart network
Перезагружаемся и проверяем результат:

Код: Выделить всё

reboot
ifconfig
Нигде нет упоминания про inet6 и адреса формата ipv6. Значит все в порядке, мы отключили ipv6.
Теперь проверим список открытых портов:

Код: Выделить всё

netstat -tulnp
Все порты ipv4. Все в порядке, наша задача выполнена.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Изменить наименование интерфейсов в системе на схему ethX можно добавлением параметров "net.ifnames" и "biosdevname" в строку "GRUB_CMDLINE_LINUX" в файл /etc/default/grub. При указании параметра переименования будут производится только для встроенных интерфейсов:
e /etc/default/grub

Код: Выделить всё

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 .....
Обновляем конфигурацию grub

Код: Выделить всё

grub2-mkconfig -o /boot/grub2/grub.cfg
Последовательно переименовываем файлы типа ifcfg-enp0s3 ifcfg-ethX

Код: Выделить всё

cd /etc/sysconfig/network-scripts/
mv ifcfg-enp0s3 ifcfg-eth0
Меняем значения параметров NAME и DEVICE на ethX
e ifcfg-eth0

Код: Выделить всё

NAME="eth0"
DEVICE=eth0
Теперь переименовываем файлы описания статических маршрутов в соответствии с именами интерфейсов

Код: Выделить всё

mv /etc/sysconfig/network-scripts/route-enp0s3 /etc/sysconfig/network-scripts/route-eth0
mv /etc/sysconfig/network-scripts/route-enp0s8 /etc/sysconfig/network-scripts/route-eth1
и проверяем не указаны ли имена интерфейсов внутри файлов статических маршрутов
Теперь меняем имя интерфейса в скрипте iptables
e /etc/iptables_rules.sh

Код: Выделить всё

export WAN="eth0"
И теперь можно перезапустить сервер Отключение NetworkManager

Код: Выделить всё

systemctl stop NetworkManager 
systemctl disable NetworkManager
e /etc/sysconfig/network-scripts/ifcfg-XXXX
NM_CONTROLLED=no
Поиск пакета который содержит утилиту ifconfig

Код: Выделить всё

dnf whatprovides ifconfig
...
net-tools-2.0-0.17.20131004git.el7.x86_64 : Basic networking tools
...
dnf -y install net-tools
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »




Описание тут: Wake on Lan
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


# Обхожусь без этой утилиты

Код: Выделить всё

dnf install epel-release
dnf update
dnf install vconfig
cat /etc/sysconfig/network-scripts/ifcfg-eth0

Код: Выделить всё

TYPE="Ethernet"
BOOTPROTO="none"
NAME="eth0"
UUID="00d9f51e-fcf5-4ff4-9f27-634d94d1e546"
DEVICE="eth0"
ONBOOT="yes"
cat /etc/sysconfig/network-scripts/ifcfg-eth0.20

Код: Выделить всё

VLAN=yes
DEVICE=eth0.20
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.1
PREFIX=24
NETWORK=192.168.1.0
DNS1="127.0.0.1"
Configure 802.1Q VLAN Tagging Using ip Commands

Код: Выделить всё

ip link add link eth0 name eth0.20 type vlan id 20
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Для того чтобы создать фиктивный интерфейс нужно поменять/создать несколько файлов.
Добавить/создать в файл:
/etc/modules-load.d/dummy.conf

Код: Выделить всё

# load dummy interface module
dummy
количество поднимаемых интерфейсов указывается параметром "numdummies" в файле /lib/modprobe.d/systemd.conf

Код: Выделить всё

# Do the same for dummy0.
options dummy numdummies=1
Если необходимо иметь в списке сетевых устройств имя интерфейса отличное от dummy, то нужно добавить правило в конфигурацию UDEV. Для этого создаём или правим файл 70-persistent-net.rules по пути /etc/udev/rules.d/:
e /etc/udev/rules.d/70-persistent-net.rules

Код: Выделить всё

SUBSYSTEM=="net", KERNEL=="dummy0", NAME="eth2"
Создать файл:
e /etc/sysconfig/network-scripts/ifcfg-eth2

Код: Выделить всё

TYPE="Ethernet"
BOOTPROTO="static"
NAME="eth2"
DEVICE=eth2
ONBOOT=yes
NM_CONTROLLED="no"
IPADDR=192.168.1.254
PREFIX=24
Активация интерфейса без перезапуска
Запускаем модуль ядра

Код: Выделить всё

modprobe dummy
поднимаем интерфейс с заданными настройками в файле ifcfg-eth2

Код: Выделить всё

ifup eth2
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


  1. подключить смартфон через USB
  2. Выбрать в смартфоне тип подключения Сетевая настройка USB => Интернет-модем
  3. И получить IP на компьютере или ноутбуке для интерфейса usb0: dhcpcd usb0
  4. А так же не забываем включить мобильный интернет или WIFI на смартфон
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Временное измерение параметра (до перезапкска системы)

Код: Выделить всё

sysctl net.ipv4.ip_default_ttl=65
или
echo 65 | tee /proc/sys/net/ipv4/ip_default_ttl
или
bash -c 'echo 65 > /proc/sys/net/ipv4/ip_default_ttl'
Для внесения изменений на постоянной основе требуется изменить /etc/sysctl.d/30-network.conf

Код: Выделить всё

net.ipv4.ip_default_ttl=65
По умолчанию в системе TTL пакетов TCP/IP имеет значение 64. На пример, для провайдера Йота надо выставить именно 65, чтобы от телефона пакеты в сеть шли с TTL 64 иначе йота понимает, что помимо телефона через него другие устройства подключены и включает ограничение на 128 кбит\сек
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »

Туннель также можно настроить, как и любой другой физический интерфейс. После этого туннель можно запускать и останавливать с помощью команд ifup и ifdown, а интерфейс можно настроить на запуск при загрузке. Для этого, используя настройки из приведенного выше сценария, создайте файл /etc/sysconfig/network-scripts/ifcfg-he-ipv6 следующим образом:

Код: Выделить всё

DEVICE=he-ipv6
TYPE=sit
BOOTPROTO=none
ONBOOT=yes                         # установите значение «no», если вы предпочитаете запускать туннель вручную
IPV6INIT=yes
IPV6TUNNELIPV4=CHANGE!!!           # IPv4-адрес сервера
IPV6ADDR=CHANGE!!!                 # IPv6-адрес клиента
Также добавьте следующее в /etc/sysconfig/network:

Код: Выделить всё

NETWORKING_IPV6=yes
IPV6_DEFAULTDEV=he-ipv6
Это гарантирует, что трафик IPv6 будет отправляться через туннельный интерфейс.

Чтобы запустить интерфейс, выполните ifup he-ipv6. Чтобы отключить интерфейс, выполните ifdown he-ipv6.
Ответить