LINUX.ORG.RU

Задать системе чужой IP-адрес


0

2

Есть необходимость задать серверу чужой внешний адрес в тестовых целях. Сервер стоит далеко, но есть доступ через IP-KVM. Как лучше это сделать? Опустить eth0 и задать нужный адрес интерфейсу lo? Смысл в том, чтобы сервер был уверен, что у него IP к примеру 10.1.1.1, но никто извне по этому адресу его бы не видел, так как 10.1.1.1 - это совсем другой сервер.

★★★★

Смысл в том, чтобы сервер был уверен, что у него IP к примеру 10.1.1.1

Что это значит «сервер был уверен»?

$ sudo ifconfig lo:0 10.1.1.1 
$ /sbin/ifconfig lo:0
lo:0      Link encap:Local Loopback  
          inet addr:10.1.1.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
sdio ★★★★★
()

Вы хотите пилить сук на котором сидите.

kostik87 ★★★★★
()
Ответ на: комментарий от sdio

Ага, спасибо, что-то туплю сегодня. Пошёл проверять.

riki ★★★★
() автор топика

# ip a add 10.1.1.1/32 dev eth0

Ну или lo если так угодно.

azure ★★
()

Подними алиас интерфейса и задай ему нужный адрес. Затем привяжи требуемые сервисы к этому адресу или алиасу. Никто в локалке, кроме твоего сервера, не будет видеть новый интерфейс, пока им не будет указан маршрут к нему через твой сервер.

blexey ★★★★★
()

Замечу, что по умолчанию линукс отвечает на все arp запросы касательно всех его ip-адресов (на всех интерфейсах). Если 10.1.1.1 в одной ethernet сети, то, чтобы сервер не светил этот адрес в arp'е, неплохо бы сделать:

echo 1 > /proc/sys/net/ipv4/conf/ethX/arp_ignore

ethX --- интерфейс в сети 10.1.1.0.

mky ★★★★★
()
Ответ на: комментарий от mky

Замечу, что по умолчанию линукс отвечает на все arp запросы касательно всех его ip-адресов (на всех интерфейсах).

А вот вроде как нет. Для того, чтобы отвечал мне приходилось делать proxy_arp в свое время.

tazhate ★★★★★
()

Смысл в том, чтобы сервер был уверен, что у него IP к примеру 10.1.1.1, но никто извне по этому адресу его бы не видел, так как 10.1.1.1 - это совсем другой сервер.

Сейчас я угадаю - у тебя софт с привязкой лицензии к айпишке и ты хочешь его стартануть на другом сервере. Я угадал?

tazhate ★★★★★
()
Ответ на: комментарий от tazhate

Чтобы отключить отправку нужно:

#sysctl -w net/ipv4/conf/ifname/arp_ignore=1
#sysctl -w net/ipv4/conf/ifname/arp_announce=1

Array
()
Ответ на: комментарий от tazhate

Точно. Проверяли, норально ли прошёл процесс переноса софта с одного сервера на другой перед выпуском нового в бой.

Всё взлетело.

riki ★★★★
() автор топика
Ответ на: комментарий от tazhate

Может в самых новых ядрах что и поменяли, но 2.6.32 отвечает даже если адрес назначен на loopback интерфейс. Возможно, что в вашем дистрибутиве arp_ignore уже включён через sysctl.conf.

mky ★★★★★
()
Ответ на: комментарий от mky

2.6.32 отвечает даже если адрес назначен на loopback интерфейс.

Не даже, а только в этом :) Если не вешать на ло, то ничего отвечать не будет.

tazhate ★★★★★
()
Ответ на: комментарий от tazhate

Конечно, если ip-адрес вобще не назначать ни одному из интерфейсов то, только proxy-arp поможет.

Не даже, а только в этом :) Если не вешать на ло, то ничего отвечать не будет.

Откуда информация? /usr/src/linux/Documentation/networking/ip-sysctl.txt на предмет arp_ignore изучали?

По умолчанию ответы будут, даже если ip-адрес назначен на интерфейс, отличный от принявшего arp-запрос, даже, если интерфес с запрашиваемым адресом не поднят (down), даже, если это не ethernet-интерфейс (lo, ppp), даже если адрес «scope host».

mky ★★★★★
()
Ответ на: комментарий от tazhate

Странно.

В redhat'ах вобще не могу добиться описанного вами поведения, когда ответ на arp-запрос только по адресам, назначенным на принявший запрос интерфейс и loopback-интерфейс. Дебиан ставить для проверки лень.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.