Як змінити IP-адресу, щоб вказати на localhost?


10

Навколишнє середовище пісочниці веб-програми доступне безпосередньо за IP-адресою: http://<my_ip_address>без імені для входу.

Чи є спосіб зробити віртуальний хост на моїй локальній машині, названий як <my_ip_address>, та змінити / etc / hosts, щоб він "переспрямовувався" на мій localhost?

127.0.0.1 <my_ip_address>

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

Відповіді:


21

Файл хостів може використовуватися лише для асоціації доменного імені з 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 ( Network Address Translation ) з урахуванням "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 = додати до списку правил для локально генерованих, вихідних пакетів. ПОПЕРЕДЖЕННЯ ПРО БЕЗПЕКА: Переконайтесь, що правило містить цю директиву про вихід. Якщо цього не зробити, правило створило б можливий отвір у захисті, оскільки відповідні вхідні пакети з віддалених місць також будуть спрямовані на localhost.

-p all = застосовується до всіх протоколів (tcp, udp та icmp).

-d 123.45.67.89 = початкова IP-адреса, до якої збирався пакет (його призначення).

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

--to-призначення 127.0.0.1 = повідомляє DNAT, що робити; замініть початкове місце призначення на "127.0.0.1".

(ПРИМІТКА. Якщо у вас склалася більш складна ситуація, наприклад перехоплення запитів на конкретні веб-сторінки, альтернативним рішенням може бути використання програмного забезпечення "проксі".)


Зауважте, що тут є стурбованість безпекою. 127.0.0.1 прийнято розуміти як недоступний для будь-якого віддаленого хоста. Якщо ви зміните це, не додаючи фільтрацію, ви можете ненавмисно перемогти запобіжний захід.
Slartibartfast

@Slartibartfast - Зауважте, що ми змінюємо лише запити OUTGOING. І ми вносимо зміни в брандмауер на цьому ПК. (Деякі запити, які вийшли б на зовнішній сайт, ми повертаємося до себе.) Це не змінює ВНУТИЛЬНІ запити, тому це не впливає на те, що хтось віддалений може бачити / робити. З огляду на це, чи все ще ви бачите питання безпеки?
ToolmakerSteve

1
... найважливішим заходом безпеки є включення в правило "-A OUTPUT". Згідно з вашим коментарем, люди повинні бути обізнані про те, що ОМИТТІНГУВАННЯ може бути небезпека, яку ви описуєте. Я додам коментар, щоб наголосити на цьому.
ToolmakerSteve

3
Він працює нормально, але я не бачу його в списку в будь-якому місці iptables --list або --list-правила. Як я можу перерахувати його та видалити після цього, коли це вже не потрібно?
Філіп Стефанов

@FilipStefanov (Трохи пізно я знаю!): Перерахуйте правила nat із числом поруч із ними: iptables -t nat --list --line-numbers Потім видаліть, які ніколи не править цим номером: iptables -t nat -D OUTPUT <number>
Річард Уолтон,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.