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

Перенаправление IP в IP с помощью iptables [centos]

У меня 2 сервера. Сервер 1 с ip 1.1.1.1 и сервер 2 с ip 2.2.2.2

Мой домен example.com сейчас указывает на 1.1.1.1, но очень скоро я перейду на ip 2.2.2.2. Я уже установил низкий TTL для домена example.com, но некоторые люди все равно будут использовать старый IP-адрес после того, как я изменю IP-адрес домена.

Теперь обе машины работают под управлением centos 5.8 с iptables и nginx в качестве веб-сервера.

Я хочу перенаправить весь трафик, который все еще попадает на сервер 1.1.1.1, на 2.2.2.2, чтобы не было простоев.

Теперь я нашел этот учебник: http://www.debuntu.org/how-to-redirecting-network-traffic-a-new-ip-using-iptables но я не могу заставить его работать.

Я включил переадресацию IP: echo "1" > /proc/sys/net/ipv4/ip_forward

После этого я выполнил эти 2 команды:

/sbin/iptables -t nat -A PREROUTING -s 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 2.2.2.2:80
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE

Но когда я загружаю http://1.1.1.1 в моем браузере я по-прежнему получаю страницы, размещенные на 1.1.1.1, а не содержимое 2.2.2.2. Что я делаю не так?

Попробуйте изменить -s 1.1.1.1 к -d 1.1.1.1

Вы хотите сопоставить адрес назначения, а не адрес источника ...

Вам также необходимо настроить правило MASQUERADE, чтобы включить интерфейс, который принимает трафик на обратном пути. (Скорее всего, eth0 или аналогичный).

Сделайте это с флагом -o. Например, так: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Находятся ли две машины в одной подсети и могут связываться друг с другом без прохождения через другие маршрутизаторы? В противном случае описанный метод не будет работать, даже если вы настроите его правильно.

При таких миграциях я часто использую Rinetd для пересылки случайных TCP-портов. Или Apache mod_proxy, если вы все равно используете Apache (чего вы не делаете, но я использую).