Поиск по сайту:

Назначьте несколько IP-адресов одной сетевой карте в Linux

Некоторые из вас могут задаться вопросом, зачем нам назначать несколько IP-адресов одной сетевой карте. Причин может быть много. Скажем, например, вы проводите тестирование на своем компьютере с Linux, для которого требуются две или более сетевых карты. Вы бы купили новый? Нет, это не обязательно! Вы можете установить несколько серий IP-адресов, например 192.168.1.0, 192.168.2.0, 192.168.3.0 и т. д., для сетевой карты и использовать их все одновременно. Звучит полезно? Конечно, это является! Этот метод может быть полезен при настройке серверов общего доступа к Интернету, таких как прокси-сервер Squid. Я сделал это для одного из моих клиентов много лет назад. У них в сети были компьютерные лаборатории с разными сериями IP и только один прокси-сервер Squid. Итак, я создал несколько серий IP-адресов на прокси-сервере squid и предоставил доступ к Интернету разным сетям. Если вы когда-либо оказывались в подобной ситуации, просто следуйте этому руководству.

Назначьте несколько IP-адресов одной сетевой карте в системах на базе DEB.

Я тестировал это руководство на серверной версии Ubuntu 16.04 LTS. Однако это будет работать в Debian и других системах на базе DEB, таких как Linux Mint, Elementary OS и т. д.

Как вы, возможно, уже знаете, мы можем найти IP-адрес в Ubuntu с помощью команды:

ifconfig

Или

ip addr

Пример вывода:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host 
 valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 link/ether 08:00:27:12:f8:c1 brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.105/24 brd 192.168.1.255 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet6 fe80::a00:27ff:fe12:f8c1/64 scope link 
 valid_lft forever preferred_lft forever

Как вы видите выше, IP-адрес моей сетевой карты enp0s3 - 192.168.1.105.

Очевидно, что я назначил своей сетевой карте IP-серию типа A, то есть 192.168.1.0. Что делать, если мне нужна другая серия, например 192.168.2.0?

Просто запустите следующую команду, чтобы установить дополнительный IP-адрес.

sudo ip addr add 192.168.2.105/24 dev enp0s3

Здесь 24 указывает маску сети, т.е. 255.255.255.0.

Теперь давайте проверим, присвоен ли новый IP или нет.

ip addr

Пример вывода:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host 
 valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 link/ether 08:00:27:12:f8:c1 brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.105/24 brd 192.168.1.255 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet 192.168.2.105/24 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet6 fe80::a00:27ff:fe12:f8c1/64 scope link 
 valid_lft forever preferred_lft forever

Как вы видите в приведенном выше выводе, моя сетевая карта теперь имеет два IP-адреса, то есть 192.168.1.105 и 192.168.2.105. Аналогичным образом вы можете назначить столько дополнительных IP-адресов, сколько захотите, например 192.168.3.105, 192.168.4.105 и т. д.

Давайте пропингуем новый IP-адрес:

sudo ping -c 3 192.168.2.105

Пример вывода:

PING 192.168.2.105 (192.168.2.105) 56(84) bytes of data.
64 bytes from 192.168.2.105: icmp_seq=1 ttl=64 time=0.040 ms
64 bytes from 192.168.2.105: icmp_seq=2 ttl=64 time=0.067 ms
64 bytes from 192.168.2.105: icmp_seq=3 ttl=64 time=0.066 ms

--- 192.168.2.105 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.040/0.057/0.067/0.015 ms

Поздравляем! Работает!!

Подожди, я еще не закончил. На данный момент мы временно назначили новый IP-адрес. После перезагрузки системы новый IP-адрес исчезнет. Как сделать это навсегда? Это тоже просто.

Назначьте несколько IP-адресов навсегда:

Отредактируйте файл /etc/network/interfaces:

sudo nano /etc/network/interfaces

Теперь добавьте дополнительный IP-адрес, как показано ниже:

iface enp0s3 inet static
  address 192.168.2.105/24

Сохраните и закройте файл.

Выполните следующую команду, чтобы сохранить сохраненные изменения.

sudo ifdown enp0s3 && sudo ifup enp0s3

Пример вывода:

Killed old client process
Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp0s3/08:00:27:12:f8:c1
Sending on LPF/enp0s3/08:00:27:12:f8:c1
Sending on Socket/fallback
DHCPRELEASE on enp0s3 to 192.168.1.1 port 67 (xid=0xe3877d4)
RTNETLINK answers: Cannot assign requested address
Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp0s3/08:00:27:12:f8:c1
Sending on LPF/enp0s3/08:00:27:12:f8:c1
Sending on Socket/fallback
DHCPDISCOVER on enp0s3 to 255.255.255.255 port 67 interval 3 (xid=0x3080e44d)
DHCPDISCOVER on enp0s3 to 255.255.255.255 port 67 interval 7 (xid=0x3080e44d)
DHCPREQUEST of 192.168.1.105 on enp0s3 to 255.255.255.255 port 67 (xid=0x4de48030)
DHCPOFFER of 192.168.1.105 from 192.168.1.1
DHCPACK of 192.168.1.105 from 192.168.1.1
bound to 192.168.1.105 -- renewal in 42937 seconds.

Теперь давайте запустим следующую команду, чтобы проверить, назначен ли новый IP-адрес или нет.

ip addr

Пример вывода:

Назначьте несколько IP-адресов в Ubuntu

Вот и все. Также Вы можете проверить после перезагрузки системы. Вы увидите, что новый IP-адрес присвоен навсегда.

Назначьте несколько IP-адресов одной сетевой карте в системах на базе RPM.

Я тестировал это на 64-битной серверной версии CentOS 7. Однако те же шаги должны работать и в других системах на базе RPM, таких как Fedora, Red Hat Linux и Scientific Linux.

Просто выполните следующую команду, чтобы временно добавить дополнительный IP-адрес.

sudo ip addr add 192.168.2.150/24 dev enp0s3

Вы можете сразу начать использовать новый IP.

Чтобы добавить постоянный IP-адрес, просто отредактируйте файл конфигурации сетевой карты от имени пользователя root:

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

Добавьте новый IP-адрес, как показано ниже.

IPADDR1="192.168.2.150"

Для другого IP-адреса добавьте строку «IPADDR2="192.168.3.150". Вы можете добавить любое количество IP-адресов один за другим.

Назначьте несколько IP-адресов в CentOS

Сохраните и закройте файл.

Перезапустите сетевую службу с помощью команды:

systemctl restart network

Проверьте новый IP-адрес с помощью команды:

ip addr

Пример вывода:

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
 inet6 ::1/128 scope host 
 valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
 link/ether 08:00:27:80:63:19 brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.150/24 brd 192.168.1.255 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet 192.168.2.150/24 brd 192.168.2.255 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet6 fe80::a00:27ff:fe80:6319/64 scope link 
 valid_lft forever preferred_lft forever

Аналогичным образом добавьте столько IP-адресов, сколько захотите.

Назначайте IP-адреса разных классов

Существует пять классов доступных диапазонов IP-адресов, а именно: класс A, класс B, класс C, класс D и класс E. Обычно используются классы A, B и C.

ClassAddress RangeSupports
Class A1.0.0.1 to 126.255.255.254Supports 16 million hosts on each of 127 networks.
Class B128.1.0.1 to 191.255.255.254Supports 65,000 hosts on each of 16,000 networks.
Class C192.0.1.1 to 223.255.254.254Supports 254 hosts on each of 2 million networks.
Class D224.0.0.0 to 239.255.255.255Reserved for multicast groups.
Class E240.0.0.0 to 254.255.255.254Reserved for future use, or Research and Development Purposes.

Источник: http://www.computerhope.com/jargon/i/ip.htm

Как вы могли заметить, в этом руководстве я использовал адреса типа C.

Я хочу назначить IP-адрес другого класса, например класса A (серия 1.0.0.0). Является ли это возможным? Конечно, это является.

Просто добавьте IP-адрес по вашему выбору в файл конфигурации сетевой карты.

Назначьте IP-адреса разных классов в системах на базе Ubuntu/Debian:

В системах на базе DEB отредактируйте файл /etc/network/interfaces:

sudo nano /etc/network/interfaces

Добавьте IP-адрес:

iface enp0s3 inet static
  address 10.0.0.105/16

Назначьте IP-адреса разных классов в Ubuntu

Сохраните и закройте файл.

Выполните следующую команду, чтобы изменения вступили в силу.

sudo ifdown enp0s3 && sudo ifup enp0s3

Проверьте, добавлен ли новый IP, с помощью команды:

ip addr

Пример вывода:

Пропингуйте новый IP-адрес командой:

sudo ping -c 3 10.0.0.105

Пример вывода:

PING 10.0.0.105 (10.0.0.105) 56(84) bytes of data.
64 bytes from 10.0.0.105: icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from 10.0.0.105: icmp_seq=2 ttl=64 time=0.070 ms
64 bytes from 10.0.0.105: icmp_seq=3 ttl=64 time=0.055 ms

--- 10.0.0.105 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.042/0.055/0.070/0.014 ms

Таким образом, мы можем добавить несколько IP-адресов к одной сетевой карте в Ubuntu, Debian и их производных, таких как Linux Mint, Elementary OS и т. д.

Назначьте IP-адреса разных классов в системах на базе CentOS/RHEL/Scientific Linux:

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

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

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

Добавим IP типа класса А. например 10.0.0.150.

IPADDR2="10.0.0.150"
[...]
PREFIX2=16

Убедитесь, что номер IPADDR (IPADDR2) и номер ПРЕФИКСА (PREFIX2) одинаковы для каждой сети.

Назначьте IP-адреса разных классов в CentOS

Сохраните и закройте файл. Перезапустите сетевую службу, чтобы изменения вступили в силу.

systemctl restart network

Проверьте новый IP с помощью команды:

ip addr

Пример вывода:

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
 inet6 ::1/128 scope host 
 valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
 link/ether 08:00:27:80:63:19 brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.150/24 brd 192.168.1.255 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet 192.168.2.150/24 brd 192.168.255.255 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet 10.0.0.150/16 brd 10.255.255.255 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet6 fe80::a00:27ff:fe80:6319/64 scope link 
 valid_lft forever preferred_lft forever

Пропингуем IP:

ping -c 3 10.0.0.150

Пример вывода:

PING 10.0.0.150 (10.0.0.150) 56(84) bytes of data.
64 bytes from 10.0.0.150: icmp_seq=1 ttl=64 time=0.097 ms
64 bytes from 10.0.0.150: icmp_seq=2 ttl=64 time=0.100 ms
64 bytes from 10.0.0.150: icmp_seq=3 ttl=64 time=0.105 ms

--- 10.0.0.150 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.097/0.100/0.105/0.012 ms

Новый IP-адрес добавлен и работает. Не нужно покупать новую карту, выполнять сложную настройку маршрутизатора или что-то еще. Используя этот метод, мы можем легко добавить несколько разных серий IP-адресов за считанные минуты.

Рекомендуется к прочтению:

  • Как изменить MAC-адрес в Linux

Статьи по данной тематике