Назад | Перейти на главную страницу

Как перенаправить сайт с помощью IPtables?

Я сослался на следующие ссылки, прежде чем спрашивать этот вопрос.

Я показываю своим ученикам пример NAT - pre-routing. Здесь я пытаюсь заменить целевой IP-адрес тем, который мне нужен. Например, когда кто-то пытается получить доступ к www.facebook.com, будет подключен wwww.google.com.

Вот что я пытался сделать.

# host www.facebook.com
www.facebook.com is an alias for star.c10r.facebook.com.
star.c10r.facebook.com has address 31.13.79.65
star.c10r.facebook.com has IPv6 address 2a03:2880:f002:201:face:b00c:0:1
^C[root@shreyas joshis1]#

# host www.google.com
www.google.com has address 74.125.236.81
www.google.com has IPv6 address 2404:6800:4001:802::1014
[root@shreyas joshis1]# 

Теперь, вот правило таблицы IP.

# iptables -t nat -I PREROUTING -p tcp --dport 80  -d 31.13.79.65 -j DNAT --to-destination 74.125.236.81
# iptables -t nat -I PREROUTING -p tcp --dport 443  -d 31.13.79.65 -j DNAT --to-destination 74.125.236.81

Теперь приступайте к столу.

# iptables-save

Однако это не работает. Я знаю одно: разрешение DNS может происходить с несколькими IP-адресами в зависимости от региона и т. Д. Потому что на этих сайтах есть балансировщик нагрузки DNS.

Дело в том, что я могу заблокировать эти IP. я полагаю, что iptables работает на сетевом уровне. Таким образом, HTTP-запрос должен был прийти на этот уровень. По достижении этого уровня он должен быть предварительно маршрутизирован на другой IP-адрес. Например, когда IP-адрес назначения 31.13.79.65, измените его на IP-адрес назначения - 74.125.236.81.

Таким образом, после разрешения DNS, если браузер что-нибудь запросит для IP 31.13.79.65, сетевой уровень должен изменить его на 74.125.236.81. Однако это не работает. Может кто-нибудь объяснить, почему?

Имейте в виду, что я не специалист в области сетевых технологий. Я изо всех сил старался передать все свои знания о сетях.

Вот что вам нужно сделать:

iptables -t nat -A OUTPUT -p tcp --dport 80  -d 31.13.79.65 -j DNAT --to-destination 74.125.236.81
iptables -t nat -A OUTPUT -p tcp --dport 443  -d 31.13.79.65 -j DNAT --to-destination 74.125.236.81

Вы должны использовать цепочку OUTPUT, поскольку это посещение является исходящим трафиком.

Эта команда iptables предполагает, что эта команда запущена на машине, на которой вы будете демонстрировать правила. После применения этого правила весь трафик на www.facebook.com будет перенаправлен на IP-адрес Google.

Чтобы эффективно продемонстрировать это своим ученикам, вам также нужно будет создать записи хоста в /etc/hosts файл, чтобы www.facebook.com всегда разрешался как 31.13.79.65, а не как какой-то другой IP-адрес.

Чтобы правило стало постоянным, нужно оформить:

/etc/init.d/iptables save
/etc/init.d/iptables reload

Не iptables-save поскольку он просто распечатывает правила, упомянутые в предыдущем ответе.

Чтобы просмотреть это правило, вы должны отдельно упомянуть -t nat поскольку правило создается в таблице NAT:

iptables -t nat -L

Цепочка PREROUTING используется для пакетов, поступающих по сети на хост, на котором вы настроили iptables. Однако, если вы проводите тестирование с самого хоста, цепочка PREROUTING не используется. Чтобы охватить этот случай, вы можете вместо этого использовать цепочку OUTPUT.

Также команда iptables-save не выполняет то, что вы думаете. Ваши первые две команды iptables изменяют активные правила непосредственно в ядре. Как только вы выполните одну из этих команд, правило становится активным для новых подключений.

Команда iptables-save читает правила в ядре и записывает их в стандартный вывод. Вы можете перенаправить вывод iptables-save в файл, чтобы сохранить текущую конфигурацию на будущее. Позже вы можете прочитать эти правила в своем ядре с помощью команды iptables-restore.

Упомянутую вами проблему с динамическим IP-адресом лучше всего решить, изменив ответы DNS. Если вы измените ответы DNS, вам не нужно использовать правило DNAT. Если вы используете свой собственный преобразователь, вы можете заставить его поверить в то, что он является авторитетным для зоны, которую вы хотите перенаправить.

Однако для быстрого взлома проще выполнить перенаправление с помощью iptables или путем обновления файла hosts.

Вы можете использовать цепочку PREROUTING для маршрутизации любого трафика на желаемый IP-адрес и порт.

iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111