URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 5329
[ Назад ]

Исходное сообщение
"подмена конечного адреса"

Отправлено Гоша , 06-Июн-15 15:42 
Прошу прощение за потраченное время у тех кто ответит на мой вопрос.
В течении нескольких недель гуглил простой ответ на свою задачу, но как оказалось даже простые ответы требуют хуть какого-то понимания,которым я не обладаю.
Задача:
есть локальная сеть - 192.168.0.0/24
есть dd-wrt-роутер - 192.168.0.1 (все правила в iptables по умолчанию)
в интернет роутер выходит через pppoe
есть удаленный хост - apache.no-ip.biz
Нужно заставить запросы для портов(80/443/8080)из локальной сети на любой внешний адрес отправлять на удаленный хост.
Есть конечно еще задачка как в dd-wrt настроить cron чтобы потом периодически включать правила iptables, но мне кажется это лучше спросить в другом месте.

Буквально на коленях прошу копипасту команд для iptables которая позволит реализовать задачу, из того что успел почитать, понял что задача тривиальная и решается буквально в 4 строчки, но увы сам никак не могу сложить 2+2, уж простите дурака. Нужно что-то типо:"ипитаблес создай правило 1-м в цепочке для исходящих относительно интерфейса ппп0 или сети по портам 80,8080,443 адресованных в 0.0.0.0/0 переадресовывать хосту"  


Содержание

Сообщения в этом обсуждении
"подмена конечного адреса"
Отправлено PavelR , 06-Июн-15 16:18 
> Нужно заставить запросы для портов(80/443/8080)из локальной сети на любой внешний адрес
> отправлять на удаленный хост.

Объясните, чего вы хотите достичь в итоге.
На мой взгляд, вы просите (описали) не то, чего на самом деле хотите.

"
- Дайте мне вилку, вилку дайте. Только вилка спасет меня.
- Зачем?
- Видишь тарелку супа?

(ложка)
"

> Буквально на коленях прошу копипасту команд

Тьфу.


> из того что успел почитать, понял что задача тривиальная и решается

Из того, как я понимаю задачу - она так не решается вообще.
Могу ошибаться, т.к. это только догадки.


"подмена конечного адреса"
Отправлено Гоша , 07-Июн-15 06:37 
В конечном итоге : зайдя на любую страничку с компьютера в локальной сети, я хочу чтоб открывалась страничка удаленного хоста.Такое правило есть для шлюза "iptables-t nat-A PREROUTING-i eth1-p tcp--dport 80-j REDIRECT--to-port 8080" я прошу помочь перенаправить на удаленный хост. Но опять же я не уверен что одной строчки хватить должно, возможно нужны еще какие то правила.

"подмена конечного адреса"
Отправлено PavelR , 07-Июн-15 08:05 
> В конечном итоге : зайдя на любую страничку с компьютера в локальной
> сети, я хочу чтоб открывалась страничка удаленного хоста.
>Такое правило есть для  шлюза

iptables -t nat -I PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination=46.60.60.72:80

ну и должно быть (оно у вас наверняка есть) общее правило SNAT/MASQUERADE в POSTROUTING.

Если айпи у хоста сменится, правило надо поменять.
Хостнейм "apache.no-ip.biz" в правило прописывать бессмысленно, т.к. перенаправление идет на IP.


Вы можете прописать правило в скрипте в виде

iptables -t nat -I PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination=apache.no-ip.biz:80

Это даст резолв хостнейма в айпи при выполнении команды,
а работать оно будет всё равно по IP.

Если удаленный хост имеет несколько сайтов, то открываться всегда будет "первый"/"дефолтный на айпи". Если нужна конкретная страница/конкретный сайт, то надо менять _данные в запросе_, которые отправляет компьютер локальной сети.

Для этого надо поставить, например, nginx, настроить на нем проксирование на нужный _сайт_, завернуть все запросы из локальной сети на этот nginx.


"и вновь продолжается бой"
Отправлено Гоша , 09-Июн-15 09:59 
iptables -t nat -I PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination=46.60.60.72:80
а интерфейс какой нужно указывать ? локалки,внешний или пппое, хотя пробовал по разному и все же чего то не хватает.И еще вопрос под общим правилом вы подразумеваете это - iptables -t nat -A POSTROUTING -o {интерфейс внешний} -j MASQUERADE ?

"и вновь продолжается бой"
Отправлено PavelR , 09-Июн-15 12:43 
> iptables -t nat -I PREROUTING -i eth1 -p tcp --dport 80 -j
> DNAT --to-destination=46.60.60.72:80
> а интерфейс какой нужно указывать ? локалки,внешний или пппое, хотя пробовал по
> разному и все же чего то не хватает.

не получилось - ну значит не получилось.


"и вновь продолжается бой"
Отправлено Гоша , 09-Июн-15 14:57 
нашел оригинальный пример правила:
iptables -t nat -A PREROUTING --dst $EXT_IP -p tcp --dport $SRV_PORT -j DNAT --to-destination $LAN_IP
Справедливо ли исходя из этого сделать вывод, что данное правило будет работать только для хостов в локальной сети, и нужно искать иное правило?

"и вновь продолжается бой"
Отправлено reader , 10-Июн-15 11:47 
> нашел оригинальный пример правила:
> iptables -t nat -A PREROUTING --dst $EXT_IP -p tcp --dport $SRV_PORT -j
> DNAT --to-destination $LAN_IP
> Справедливо ли исходя из этого сделать вывод, что данное правило будет работать
> только для хостов в локальной сети, и нужно искать иное правило?

для любых хостов , кроме самого роутера.

добавте условие -i внутренний_инткрфейс и
уберите условие --dst $EXT_IP.

--to-destination apache.no-ip.biz


"и вновь продолжается бой"
Отправлено Pahanivo , 11-Июн-15 22:34 
т.е. пакет надо средиректить и за натить одновременно, учитывая что он еще и локальный я правильно понял?



"подмена конечного адреса"
Отправлено Peace1 , 11-Сен-15 21:00 
http://serverfault.com/questions/153483/redirect-outbound-tr...