Отображение одного IP-адреса на другой в файле 'hosts'

Файл hosts (%SystemRoot%\system32\drivers\etc\hosts) позволяет google.com указывать, например, на 127.0.0.1 на вашем локальном компьютере, но что, если я хочу указать, например, 192.168.1.5 на 127.0.0.1 на моем локальном компьютере? Есть способ сделать это? Это можно сделать в файле hosts на Windows 7?

3 ответа

Вы не можете использовать файл hosts для этого.
Это сопоставляет только имена на IP-адресах.

Я не пробовал это сам, но я думаю, что вы можете злоупотребить командой маршрута для этого:

route add 192.168.1.5 127.0.0.1

Это указывает стеку IP направлять весь трафик для 192.168.1.5 к шлюзу 127.0.0.1. Конечно, там нет ворот, так что это служит только для движения черной дыры. Вы не можете сделать ничего полезного с трафиком.

Как все остальные заметили, вы не можете сделать это через файл hosts. Вам нужна некоторая форма переписывания пакетов: наиболее распространенной является трансляция сетевых адресов. NAT обычно используется, чтобы разрешить нескольким устройствам использовать один и тот же "общедоступный" IP-адрес (и это единственная форма, которую могут использовать многие дешевые домашние маршрутизаторы), но более полный механизм NAT, такой как в Cisco IOS или Linux IPTables, может сделать обобщенное переписывание.

Обратите внимание, что NAT не является универсальным решением для этого: некоторые протоколы, такие как FTP, включают IP-адреса в пакеты данных, а также в заголовок IP, и если механизм NAT не обрабатывает такие протоколы специально, просто переписать заголовок заставит вещи сломаться.

Вы не можете сопоставить IP-адрес с другим в файле hosts.

Вероятно, вы можете переписать IP-адреса в определенных программах брандмауэра на некоторых платформах (возможно, в Linux iptables или эквивалентном).

Другие вопросы по тегам