Назначьте несколько 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.
Class | Address Range | Supports |
---|---|---|
Class A | 1.0.0.1 to 126.255.255.254 | Supports 16 million hosts on each of 127 networks. |
Class B | 128.1.0.1 to 191.255.255.254 | Supports 65,000 hosts on each of 16,000 networks. |
Class C | 192.0.1.1 to 223.255.254.254 | Supports 254 hosts on each of 2 million networks. |
Class D | 224.0.0.0 to 239.255.255.255 | Reserved for multicast groups. |
Class E | 240.0.0.0 to 254.255.255.254 | Reserved 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