The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как зафорвардить запросы к внутреннему серверу на внешний че..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от Hg email(ok) on 29-Июн-06, 08:28 
Есть такая сеть:
Интернет <-> 213.145.XX.XX =[DSL-модем, он же firewall]= 10.0.0.1 <-> 10.0.0.2(eth1)=[Linux SlackWare 10.2]=192.168.0.1(eth0) <-> 192.168.0.0/24(локалка)
Во внешней сети есть SMTP-сервер, скажем 214.100.1.1:25, а в локальной сети есть компы, которые знать не знают о его существовании и считают сервером комп с внутренним адресом 192.168.0.1 и коннектятся к нему. Вопрос: как и можно ли вообще средствами iptables сделать прозрачный форвардинг через сервер + модем(адрес его шлюза 10.0.0.1), т.е. полноценную замену 192.168.0.1:25 на 214.100.1.1:25 и, соответственно, обратно?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от lapweed (??) on 29-Июн-06, 13:07 
а если в почтовых клиентах указать SMTP 214.100.1.1 ????
или не судьба?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от Hg email(ok) on 29-Июн-06, 13:46 
>а если в почтовых клиентах указать SMTP 214.100.1.1 ????
>или не судьба?

Увы, в этом все и дело - адрес сервера невозможно сменить.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от vt (ok) on 29-Июн-06, 13:36 
>Интернет <-> 213.145.XX.XX =[DSL-модем, он же firewall]= 10.0.0.1 <-> 10.0.0.2(eth1)=[Linux SlackWare 10.2]=192.168.0.1(eth0) <-> 192.168.0.0/24(локалка)

>можно ли вообще средствами iptables сделать прозрачный форвардинг через сервер
>+ модем(адрес его шлюза 10.0.0.1), т.е. полноценную замену 192.168.0.1:25 на 214.100.1.1:25

Если на [DSL-модем, он же firewall] есть source NAT, то можно -
надо настроить destination NAT на [Linux SlackWare 10.2] -
man iptables про DNAT

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от Hg email(ok) on 29-Июн-06, 13:56 
>Если на [DSL-модем, он же firewall] есть source NAT, то можно -
>
>надо настроить destination NAT на [Linux SlackWare 10.2] -
>man iptables про DNAT

Да я его уже зачитался... :(
Мне вот что непонятно - ведь TCP-пакеты предназначены локально для 192.168.0.1, и приходят на интерфейс eth0. А их надо переслать на выход интерфейса eth1, на модем-шлюз, предварительно проNATив dest-адрес на 214.100.1.1 ну и обратно, естетсвенно; а вот как увязать оба интерфейса? Логика работы iptables мне тут неясна...

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от vt (ok) on 29-Июн-06, 14:16 
>Да я его уже зачитался... :(
Тогда читайте документацию на iptables.org )

>Мне вот что непонятно - ведь TCP-пакеты предназначены локально для 192.168.0.1, и
>приходят на интерфейс eth0. А их надо переслать на выход интерфейса
>eth1, на модем-шлюз, предварительно проNATив dest-адрес на 214.100.1.1 ну и обратно,
>естетсвенно; а вот как увязать оба интерфейса? Логика работы iptables мне
>тут неясна...

Подмена адреса происходит до маршрутизации,
затем присходит обычная маршрутизация.
Поскольку новый адрес не попадает ни в одну
из явно указанных в таблице маршрутизации сетей,
то пакет отправляется в маршрут по умолчанию - в eth1

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от lapweed (??) on 29-Июн-06, 14:20 
что-то я никак не пойму.
у вас поднят в локалке почтовый сервер который должен быть виден в наружи?
или юзера должны отправлять почту через вшешний сервер?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от vt (ok) on 29-Июн-06, 14:25 
Вы, вообще-то, кого спрашиваете ?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от Hg email(ok) on 29-Июн-06, 14:56 
>что-то я никак не пойму.
>у вас поднят в локалке почтовый сервер который должен быть виден в
>наружи?
>или юзера должны отправлять почту через вшешний сервер?

Второе - из локалки видеть внешний сервер, считая, что он "внутренний".

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

10. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от lapweed (??) on 29-Июн-06, 15:04 
вам через него надо почту отправлять или просто его видеть как внутренний?
если почту отплавлять то настроить клиентов.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

13. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от Hg email(ok) on 29-Июн-06, 15:22 
>вам через него надо почту отправлять или просто его видеть как внутренний?
>
>если почту отплавлять то настроить клиентов.

Почту отправлять. В любом случае нужно полноценное TCP соединение.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от Hg email(ok) on 29-Июн-06, 14:54 
>Подмена адреса происходит до маршрутизации,
>затем присходит обычная маршрутизация.
>Поскольку новый адрес не попадает ни в одну
>из явно указанных в таблице маршрутизации сетей,
>то пакет отправляется в маршрут по умолчанию - в eth1

#iptables -A INPUT -t nat -s 192.168.0.0/24 -d 192.168.0.1 -p tcp --destination-port 25 -j DNAT --to-destination 214.100.1.1:25

Логически так выходит... Правда, насчет синтаксиса не уверен. Может, не "-A INPUT" а "-A PREROUTING" ?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

11. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от vt (ok) on 29-Июн-06, 15:07 
>#iptables -A INPUT -t nat -s 192.168.0.0/24 -d 192.168.0.1 -p tcp --destination-port
>25 -j DNAT --to-destination 214.100.1.1:25
>
>Логически так выходит... Правда, насчет синтаксиса не уверен.
Только не INPUT, а PREROUTING и можно добавить -i eth0


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

12. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от Hg email(ok) on 29-Июн-06, 15:19 
>Только не INPUT, а PREROUTING и можно добавить -i eth0

А как увидеть цепочку PREROUTING ? "iptables -L" только "INPUT", "OUTPUT" и "FORWARD" выдает. Или еще как-то это все к INPUT'у прикрутить надо?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

14. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от xxxxxxxxxx on 29-Июн-06, 18:50 
>>Только не INPUT, а PREROUTING и можно добавить -i eth0
>
>А как увидеть цепочку PREROUTING ? "iptables -L" только "INPUT", "OUTPUT" и
>"FORWARD" выдает. Или еще как-то это все к INPUT'у прикрутить надо?
>
iptables -t nat -L
https://www.opennet.ru/docs/RUS/iptables/
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

15. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от Den (??) on 30-Июн-06, 02:37 
Мда, сегодня делал такое же у себя, даже удивился что кому-то  понадобилось аналогичное. У меня была цель выдавать  внтутреннюю машину за smtp,pop3,imap сервер который находится в другом месте (колокейшн у провайдера). Смысл всего этого в том, чтобы сделать юзерам бесплатную почту (без подключения к инету через vpn). Итого имеем:
Пограничный рутер внтутренний ип - 10.1.1.1, внешний 123.123.123.123
Почтовый сервер в инете ип - 200.200.200.200

на рутере пишем:
iptables -t nat -A PREROUTING -d 10.1.1.1 -p tcp --dport 25 -j DNAT --to-destination 200.200.200.200:25
iptables -t nat -A PREROUTING -d 10.1.1.1 -p tcp --dport 110 -j DNAT --to-destination 200.200.200.200:110

Аналогично проделать с портами 143,465,993,995 - imap,smtps,imaps,pop3s

Теперь делаем нат внутренней сети:
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -d 200.200.200.200 -o vlan3 -p tcp --dport 25 -j SNAT --to-source 123.123.123.123
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -d 200.200.200.200 -o vlan3 -p tcp --dport 110 -j SNAT --to-source 123.123.123.123
и так далее ..

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

16. "Как зафорвардить запросы к внутреннему серверу на внешний че..."  
Сообщение от Hg email(??) on 30-Июн-06, 13:39 
>Мда, сегодня делал такое же у себя, даже удивился что кому-то  
>понадобилось аналогичное. У меня была цель выдавать  внтутреннюю машину за
>smtp,pop3,imap сервер который находится в другом месте (колокейшн у провайдера). Смысл
>всего этого в том, чтобы сделать юзерам бесплатную почту (без подключения
>к инету через vpn). Итого имеем:
>Пограничный рутер внтутренний ип - 10.1.1.1, внешний 123.123.123.123
>Почтовый сервер в инете ип - 200.200.200.200
>
>на рутере пишем:
>iptables -t nat -A PREROUTING -d 10.1.1.1 -p tcp --dport 25 -j
>DNAT --to-destination 200.200.200.200:25
>iptables -t nat -A PREROUTING -d 10.1.1.1 -p tcp --dport 110 -j
>DNAT --to-destination 200.200.200.200:110
>
>Аналогично проделать с портами 143,465,993,995 - imap,smtps,imaps,pop3s
>
>Теперь делаем нат внутренней сети:
>iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -d 200.200.200.200 -o vlan3 -p
>tcp --dport 25 -j SNAT --to-source 123.123.123.123
>iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -d 200.200.200.200 -o vlan3 -p
>tcp --dport 110 -j SNAT --to-source 123.123.123.123
>и так далее ..

Заработало! В моем случае скрипт таков:

#!/bin/bash
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d 192.168.0.1 -p tcp --dport 25 -j DNAT --to-destination 214.100.1.1:25
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 214.100.1.1 -o eth1 -p tcp --dport 25 -j SNAT --to-source 10.0.0.1
echo "1" > /proc/sys/net/ipv4/ip_forward

1Help   2UnWrap 3Quit   4Hex    5Line   6RxSrch 7Search 8Raw    9Unform

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру