Как изменить IP-адрес, чтобы он указывал на localhost?

10

Среда «песочницы» веб-приложения доступна напрямую по IP-адресу: http://<my_ip_address>без имени для входа.

Есть ли способ создать виртуальный хост на моей локальной машине с именем as <my_ip_address>и изменить / etc / hosts, чтобы он «перенаправлял» на мой локальный хост ?

127.0.0.1 <my_ip_address>

Так, когда я загружу URL, http://<my_ip_address>браузер укажет на мой локальный хост? Способ, которым я уже могу перенаправить доменные имена.

Майк
источник

Ответы:

21

Файл Hosts может использоваться только для связи доменного имени с IP; он не может сопоставить IP с IP.

Изменение IP-адресов может быть сделано с помощью брандмауэра . В Linux брандмауэр по умолчанию управляется командами iptables . «man iptables» - это документация. Google "объяснить iptables" для вводных объяснений.

Некоторые ссылки:

http://linux.die.net/man/8/iptables

http://www.linuxnix.com/2009/12/iptables-in-linux-explained.html

http://blog.adityapatawari.com/2011/12/ip-packet-filtering-iptables-explained.html

В частности, вы хотите изменить OUTGOING запросы от вашего ПК на IP-адрес ( <my_ip_address>), чтобы вместо этого они переходили на другой IP-адрес, в данном случае 127.0.0.1. Вы хотите выполнить NAT ( преобразование сетевых адресов ), учитывая «IP-адрес назначения» ( <my_ip_address>например, 123.45.67.89), изменив его на другой «IP-адрес назначения» (127.0.0.1).

Попробуйте это (вместо 123.45.67.89 введите ip_address , который нужно изменить):

iptables -t nat -A OUTPUT -p all -d 123.45.67.89 -j DNAT --to-destination 127.0.0.1

Подробности:

-t nat = таблица для перевода одного адреса на другой

-A OUTPUT = добавить в список правил для локально сгенерированных исходящих пакетов. ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ: Убедитесь, что правило содержит эту директиву OUTPUT. Если вы этого не сделаете, правило создаст возможную дыру в безопасности, поскольку соответствующие входящие пакеты из удаленных местоположений также будут направлены на локальный хост.

-p all = применяется ко всем протоколам (tcp, udp и icmp).

-d 123.45.67.89 = исходный IP-адрес, на который собирался пакет (пункт назначения).

-j DNAT = если правило соответствует (в этом случае, если исходящий пакет имеет IP-адрес получателя 123.45.67.89), обработайте его с помощью DNAT, который изменяет пункт назначения.

--to-destination 127.0.0.1 = сообщает DNAT, что делать; замените первоначальный пункт назначения на «127.0.0.1».

(ПРИМЕЧАНИЕ. Если у вас возникла более сложная ситуация, например, перехват запросов для определенных веб-страниц, альтернативным решением может быть использование программного обеспечения «прокси».)

ToolmakerSteve
источник
Обратите внимание, что здесь есть проблема безопасности. 127.0.0.1 обычно считается недоступным с любого удаленного хоста. Если вы измените это без добавления фильтрации, вы можете непреднамеренно проигнорировать меру безопасности.
Slartibartfast
@Slartibartfast - Обратите внимание, что мы меняем только ВЫХОДНЫЕ запросы. И мы вносим изменения в брандмауэр на этом ПК. (Некоторые запросы, которые были бы отправлены на внешний сайт, мы возвращаемся к себе.) Это не меняет ВХОДЯЩИЕ запросы, поэтому не влияет на то, что любой удаленный пользователь может видеть / делать. Учитывая это, вы все еще видите проблему безопасности?
ToolmakerSteve
1
... важной мерой безопасности является включение в правило "-AUUTUT". В соответствии с вашим комментарием, люди должны знать, что ПУТЕШЕСТВУЮЩАЯ опасность, которую вы описываете. Я добавлю комментарий, чтобы подчеркнуть это.
ToolmakerSteve
3
Он работает нормально, но я нигде не вижу его в списке iptables --list или --list-rules. Как я могу перечислить его и впоследствии удалить, когда он больше не нужен?
Филипп Стефанов,
@FilipStefanov (немного поздно, я знаю!): Перечислите правила nat с номером рядом с ними: iptables -t nat --list --line-numbers затем удалите те, которые никогда не управляют этим числом: iptables -t nat -D OUTPUT <number>
Ричард Уолтон,