Прошу прощение за потраченное время у тех кто ответит на мой вопрос.
В течении нескольких недель гуглил простой ответ на свою задачу, но как оказалось даже простые ответы требуют хуть какого-то понимания,которым я не обладаю.
Задача:
есть локальная сеть - 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 переадресовывать хосту"
> Нужно заставить запросы для портов(80/443/8080)из локальной сети на любой внешний адрес
> отправлять на удаленный хост.Объясните, чего вы хотите достичь в итоге.
На мой взгляд, вы просите (описали) не то, чего на самом деле хотите."
- Дайте мне вилку, вилку дайте. Только вилка спасет меня.
- Зачем?
- Видишь тарелку супа?(ложка)
"> Буквально на коленях прошу копипасту команд
Тьфу.
> из того что успел почитать, понял что задача тривиальная и решаетсяИз того, как я понимаю задачу - она так не решается вообще.
Могу ошибаться, т.к. это только догадки.
В конечном итоге : зайдя на любую страничку с компьютера в локальной сети, я хочу чтоб открывалась страничка удаленного хоста.Такое правило есть для шлюза "iptables-t nat-A PREROUTING-i eth1-p tcp--dport 80-j REDIRECT--to-port 8080" я прошу помочь перенаправить на удаленный хост. Но опять же я не уверен что одной строчки хватить должно, возможно нужны еще какие то правила.
> В конечном итоге : зайдя на любую страничку с компьютера в локальной
> сети, я хочу чтоб открывалась страничка удаленного хоста.
>Такое правило есть для шлюза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.
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 ?
> iptables -t nat -I PREROUTING -i eth1 -p tcp --dport 80 -j
> DNAT --to-destination=46.60.60.72:80
> а интерфейс какой нужно указывать ? локалки,внешний или пппое, хотя пробовал по
> разному и все же чего то не хватает.не получилось - ну значит не получилось.
нашел оригинальный пример правила:
iptables -t nat -A PREROUTING --dst $EXT_IP -p tcp --dport $SRV_PORT -j DNAT --to-destination $LAN_IP
Справедливо ли исходя из этого сделать вывод, что данное правило будет работать только для хостов в локальной сети, и нужно искать иное правило?
> нашел оригинальный пример правила:
> 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
т.е. пакет надо средиректить и за натить одновременно, учитывая что он еще и локальный я правильно понял?
http://serverfault.com/questions/153483/redirect-outbound-tr...