Можно ли задать реальный IP-адрес (не из диапазона 127.xxx) для петлевого устройства?
решение1
В качестве альтернативы использованию lo:0
вы также можете использовать dummy
интерфейсы в Linux, например:
ifconfig dummy0 10.0.0.1/32
ifconfig dummy1 10.1.1.1/24
В дополнение к другим ответам:
- Я не рекомендую менять обычный/официальный адрес интерфейса обратной связи, так как от него зависит значительная часть функциональности;
- Однако вы можете иметь/создать несколько петлевых/фиктивных интерфейсов — от lo:0 до lo:255 или интерфейсы dummyX;
- следует учитывать, что lo:0 – lo:255 являются псевдонимами, а dummyX – полными интерфейсами;
- более того, одна из обычных тактик в Linux для создания виртуальных IP-адресов через BGP или OSPF — это назначение их петлевым/фиктивным интерфейсам и создание путей к ним через маршрутизацию;
- опять же, у некоторых демонов возникают проблемы с объявлением адресов в псевдонимах (например, quagga) — поэтому в таких случаях рекомендуется использовать интерфейсы dummyX;
- Я хотел бы подчеркнуть, что без маршрутизации в инфраструктуре такие адреса известны/могут использоваться только на соответствующем сервере;
- Назначение частного/публичного адреса интерфейсу обратной связи без надлежащей маршрутизации может быть малозатратной мерой для внесения коммуникаций в черный список.временнос IP-адресом/сетью.
Более подробную информацию можно найти, например, в руководстве по настройке BIND anycast, выполненном с помощью Quagga/BIRD.
подсказки по маршрутизации здесь:OSPF: Миграция Quagga в BIRD
P.S. Linux по умолчанию создает только dummy0 и dummy1 и должен быть настроен на создание большего количества фиктивных интерфейсов.
решение2
На текущем ядре Linux с помощью ip
утилиты это довольно просто:
ip addr add 10.0.1.8 dev lo
Это может быть полезно, когда у вас есть служба, которая привязывает порт к интерфейсу, и вы хотите запустить другую программу на том же порту и в той же сети. Я использую это, чтобы включить оба bind
и dnsmasq
сосуществовать на одном сервере.
Если вы используете /etc/network/interfaces
для настройки интерфейсов, обновите lo
раздел, включив в него:
up ip addr add 10.0.1.8 dev lo
решение3
Ничто не запрещает это сделать.
#ifconfig lo:1 10.0.0.1/8 #ifconfig lo:1 lo:1 Ссылка encap:Локальная петля inet addr:10.0.0.1 Маска:255.0.0.0 UP LOOPBACK ВЫПОЛНЯЕТСЯ MTU:65536 Метрика:1 #пинг -с 1 10.0.0.1 PING 10.0.0.1 (10.0.0.1) 56(84) байт данных. 64 байта из 10.0.0.1: icmp_seq=1 ttl=64 время=0,025 мс --- Статистика пинга 10.0.0.1 --- 1 пакет передан, 1 получен, 0% потерь пакетов, время 0 мс rtt мин/средн/макс/мдев = 0,025/0,025/0,025/0,000 мс
Обновлять:
Чтобы этот адрес сохранился после перезагрузки Ubuntu 16.04, вы можете изменить свой /etc/network/interfaces
файл с помощью следующих ethtool
команд:
auto lo lo:1
iface lo inet loopback
iface lo:1 inet static
address 10.0.0.1
network 10.0.0.0
netmask 255.0.0.0
решение4
Да, но это не значит, что это хорошая идея. Если вы используете IP, к которому когда-либо будет иметь доступ ваша система, любые данные, которые она попытается туда отправить, будут перенаправлены на локальную систему, что может вызвать всевозможные странные сетевые проблемы. Это означает, в частности, что вы не можете безопасно использовать что-либо за пределами следующих диапазонов:
127.0.0.0/8
192.0.2.0/24
198.51.100.0/24
203.0.113.0/24
240.0.0.0/4
За возможным исключением любого из следующих случаев в зависимости от того, как настроены другие сетевые интерфейсы:
10.0.0.0/8
192.168.0.0/16
172.16.0.0/12
169.254.0.0/16
Это тот случай, когдаЗапрос на предложение 1925, применяется раздел 2, пункт 3.