LINUX.ORG.RU
ФорумAdmin

Правило для redirect


0

2

Добрый вечер! Для того чтобы делать редирект использую iptables. Выполняю:

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 91.223.180.157:80

почему же пишет при заходе на сервер: Невозможно подключиться к удалённому серверу

Если удалить правило, то сервер работает как и надо.


с локального компа (где ты фаервол правишь) не заходит или с удалённого? Я бы ещё -m tcp добавил на всякий случай.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

И с локального и с удаленного, когда прописал правило. И так пробовал, такой же результат:

iptables -t nat -A PREROUTING -d IP_SERVER -p tcp -m tcp --dport 80 -m set --set ban src -j DNAT --to-destination IP_DEST

ZorG
() автор топика
Ответ на: комментарий от true_admin

Прошу:

# Generated by iptables-save v1.4.8 on Fri Nov 23 17:32:06 2012
*nat
:PREROUTING ACCEPT [51:3373]
:POSTROUTING ACCEPT [2:120]
:OUTPUT ACCEPT [2:120]
-A PREROUTING -d  XX -p tcp -m tcp --dport 80 -m set --match-set ban src -j DNAT --to-destination 91.223.180.157
COMMIT
# Completed on Fri Nov 23 17:32:06 2012
# Generated by iptables-save v1.4.8 on Fri Nov 23 17:32:06 2012
*filter
:INPUT ACCEPT [38036:7125246]
:FORWARD ACCEPT [197:9888]
:OUTPUT ACCEPT [33487:9194442]
COMMIT
# Completed on Fri Nov 23 17:32:06 2012

ZorG
() автор топика
Ответ на: комментарий от ZorG

ммм, может пока убрать ipset вообще? В том виде что ты изначально привёл у меня 100% работает.

давай начнём издалека. Вставляем правило без всяких ipset. Потом пытаемся подключиться извне и смотрим увеличиваются ли каунтеры этого правила в sudo iptables -t nat -L -v

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Выполнил правило:

iptables -t nat -A PREROUTING -d SERVER_IP -p tcp -m tcp --dport 80 -j DNAT --to-destination 91.223.180.157

wofl:~# iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 8 packets, 388 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       tcp  --  any    any     anywhere             domain.ru        tcp dpt:www to:91.223.180.157

Chain POSTROUTING (policy ACCEPT 1 packets, 72 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1 packets, 72 bytes)
 pkts bytes target     prot opt in     out     source               destination

через некоторое время:

Chain PREROUTING (policy ACCEPT 114 packets, 7261 bytes)
pkts bytes target     prot opt in     out     source               destination
    6   304 DNAT       tcp  --  any    any     anywhere             domain.ru         tcp dpt:www to:91.223.180.157

Хочу заметить, что в destination, «domain.ru», указан домен которого на сервере даже близко нету на данном севрере. Может ли это быть проблемой?

ZorG
() автор топика
Ответ на: комментарий от ZorG

Я вижу что трафик хотя бы доходит. А ты уверен что с твоего сервера 91.223.180.157:80 доступен? У сервера сколько сетевых карт?

Следующий этап отладки это сидеть со снифером.

Может ли это быть проблемой?

нет

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Прошу:

wofl:~# telnet 91.223.180.157 80
Trying 91.223.180.157...
Connected to 91.223.180.157.
Escape character is '^]'.
Connection closed by foreign host.

ZorG
() автор топика
Ответ на: комментарий от true_admin
wofl:~# telnet 91.223.180.157 80
Trying 91.223.180.157...
Connected to 91.223.180.157.
Escape character is '^]'.
GET /

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at if100.ru Port 80</address>
</body></html>
Connection closed by foreign host.

Этот IP, 91.223.180.157, является случайным выбором, могу попробовать на другой скинуть коннект.

ZorG
() автор топика
Ответ на: комментарий от true_admin

Попробовал скинуть коннект на другой IP, который через telnet отдает правильный ответ, например Welcome to nginx! Такая же проблема, не хочет переходить дальше, правило выглядит так: iptables -t nat -A PREROUTING -d IP -p tcp -m tcp --dport 80 -j DNAT --to-destination IP:80

ZorG
() автор топика

Тебе нужно порт за нат пробросить?

iptables -A PREROUTING -d <external ip> -p tcp -m tcp --dport <external port> -j DNAT --to-destination <internal ip>:<internal port>
iptables -A POSTROUTING -d <internal ip> -p tcp -m tcp --dport <external port> -j SNAT --to-source <external ip>

erfea ★★★★★
()
Ответ на: комментарий от erfea

Мне нужно сделать редирект при заходе на IP 195.195.195.195, должно перекидывать на 195.192.195.192. IP указал случайные.

ZorG
() автор топика
Ответ на: комментарий от ZorG

Тебе нужен редирект http? При чём тогда тут netfilter с iptables?! Для этого есть средства в http и html, а так же существую обратные прокси...
Или ты таки хочешь порт пробросить? Определись с задачей, а потом уже насилуй технику.

erfea ★★★★★
()
Ответ на: комментарий от erfea

два правила не нужны, ядро само знает как обратно пакеты слать ибо stateful firewall. Я бы скорее заподозрил net.ipv4.conf.all.rp_filter. Т.е. я думаю что проблема в том что два интерфейса и что-то с роутингом. Поэтому надо смотреть 1) куда реально уходят пробрасываемые пакеты 2) куда приходит ответ.

true_admin ★★★★★
()

в общем, нужна конфигурация сети.

true_admin ★★★★★
()
Ответ на: комментарий от erfea

у меня работало как ТС сказал, я пробрасывал порты на виртуалку которая была во «внутреннем» бридже когда мы в ya.root играли.

Ты включил net.ipv4.ip_forward ?

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

echo «1» > /proc/sys/net/ipv4/ip_forward

Насколько я помню, то оно включает ip_forward

ZorG
() автор топика
Ответ на: комментарий от erfea

Я понял, у меня до виртуалок форвардинг был настроен, оттого всё и работало. А так одного ip_forward=1 -j DNAT мало , тачка должна ещё в сторону этого хоста явно уметь форвардить трафик.

Посыпаю голову пеплом.

true_admin ★★★★★
()
Ответ на: комментарий от ZorG

А разве правилом iptables нельзя?

Redirect (аки перенаправление) таки определение более близкое http... А проброс порта это уже NAT, технология другого качества, свойства и порядка... Что ты хочешь из стартового поста не ясно, говоришь про перенаправление и тут же iptables.

erfea ★★★★★
()
Ответ на: комментарий от erfea

Давайте тогда рассмотрим задачу перенаправления IP.

ZorG
() автор топика
Ответ на: комментарий от ZorG

Пользователь зашел на 195.195.195.195 и его сразу перекинуло на 155.155.155.155.155.

Это фантастика. Как такового редиректа на уровне ip/tcp нет. А вот в http есть.

true_admin ★★★★★
()
Ответ на: комментарий от ZorG

Хотяя, посмотри icmp redirect. Я уже не помню что это такое.

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.