Member
Статус: Не в сети Регистрация: 04.12.2003 Откуда: Луганск
Значит ситуация такая:
Есть гейт с линуксом, на нем pptpd server и модем и второй комп соединеный по eth с ним.
Нужно:
При подключении по VPN со второго компа получить доступ в инет через ppp0.
В etc/ppp/if-up/ пишу скрипт определяющий подключение по ВПН(ppp1) и устанавливающий правила для IPTables
172.1.1.2 ИП впн сервера ; 172.1.1.1 ИП клиента
iptables -t nat -A POSTROUTING -s 172.1.1.1 -o ppp0 -j MASQUERADE - это нат для проброса пакетов с клиента
А вот как обратный сделать я что-то не пойму никак.
Пишу iptables -t nat -A PREROUTING -i ppp0 -d ! 192.168.1.2 -j DNAT --to-destination 172.1.1.1 - пакеты к клиенту приходят, но у них source ip не совпадает и ничего не работает.
Как сделать чтобы все пакеты приходящие с ppp0 шли в тоннель, а приходящие с тоннеля соответственно шли в ppp0 ?
Member
Статус: Не в сети Регистрация: 04.12.2003 Откуда: Луганск
Dima-1 Расскажите пожалуйста как.
Потому как он включен(default gateway), но даже пинги не ходят.
Сейчас вот так
iptables -t nat -A POSTROUTING -s 0/0 -o ppp0 -j MASQUERADE
iptables -t nat -A PREROUTING -i ppp0 --dport 80 -j DNAT --to-destination 172.1.1.1:80
Но увы с 80 портом клиента обмен данными не идет. Только видно пакеты приходящие к клиенту и все.
Мне надо чтобы, скажем, на гейте был доступен порт 21, а все остальные порты транслировались клиенту
Member
Статус: Не в сети Регистрация: 09.04.2004 Откуда: Москва
Ironfist писал(а):
Dima-1 Расскажите пожалуйста как. Потому как он включен(default gateway), но даже пинги не ходят. Сейчас вот так iptables -t nat -A POSTROUTING -s 0/0 -o ppp0 -j MASQUERADE iptables -t nat -A PREROUTING -i ppp0 --dport 80 -j DNAT --to-destination 172.1.1.1:80 Но увы с 80 портом клиента обмен данными не идет. Только видно пакеты приходящие к клиенту и все.
Мне надо чтобы, скажем, на гейте был доступен порт 21, а все остальные порты транслировались клиенту
Прочитай про NAT
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE
потом
echo 1 > /proc/sys/net/ipv4/ip_forward
запиши всё это в стартовые скрипты
если не знаешь как то пиши раскажу
А клиентам должен дать шлюз по умолчанию адрес твоего сервера VPN (ведь они через pptp к тебе лазиют?). Лучше раздай все настройки сети клиентам по DHCP чтоб не было вопросов как настроить сеть
а к провайдеру ты как цепляешься? Добавлено спустя 11 часов, 4 минуты, 44 секунды и если честно зачем нат когда они к тебе через pptp конектятся??? Объясни подробней что ты хочешь добиться?
Member
Статус: Не в сети Регистрация: 04.12.2003 Откуда: Луганск
Dima-1 писал(а):
Прочитай про NAT
Dima-1 писал(а):
запиши всё это в стартовые скрипты
Читал. Форвардинг включен.
Dima-1 писал(а):
А клиентам должен дать шлюз по умолчанию адрес твоего сервера VPN
Видимо тут ошибка, я использовал default gateway on remote network. DHCP мне не нужен, ибо клиент один И провайдер - не совсем провайдер, скажем так, модемное соединение, но через шлюз.
Dima-1 писал(а):
и если честно зачем нат когда они к тебе через pptp конектятся???
Да просто я пробую разные варианты, и подбираю что будет удобнее.
Dima-1 писал(а):
Объясни подробней что ты хочешь добиться?
Надо чтобы у клиента был полноценный доступ, т.е он мог коннектится, и к нему могли тоже по любому порту, за исключением портов 21,80,3128
Ну так как включить нат я те написал, Шлюз по умолчанию у клиерта должен быть адрес твоего сервера
А что стоит на машине клиенте?
Очевидно, винда со стандартным PPTP клиентом... Добавлено спустя 17 минут, 1 секунду Короче говоря, для того чтобы клиент прозрачно ходил по всем портм наружу, а также, чтобы он принимал все входящие соединения кроме как на порты 21/20(ftp-data), делаем следующее:
iptables -t nat -A POSTROUTING -s $CLIENT_FAKE_IP -j MASQUERADE
должны быть вгружены модули ядра ip_conntrack, iptable_nat, ipt_state, ipt_MASQUERADE
скорее всего, они загрузятся автоматически, но лучше проверить через "lsmod"
кроме этого, проверяем, чтобы эти же пакеты получали ACCEPT в след. цепочках:
FILTER/FORWARD, MANGLE/FORWARD, MANGLE/PREROUTING, MANGLE/POSTROUTING
таблица MANGLE наверняка не используется, но лучше проверить...
внимательно проверяем policy для всех таблиц, чтобы нужные пакеты нигде не рубились
и еще один момент - не путаем IP клиента в лок. сети (Ethernet) и его IP в PPTP соединении.
статический IP для PPTP клиента можно прибить так:
vasya pptpd "password" 172.16.0.10
т.е. Вася всегда будет получать IP 172.16.0.10
Member
Статус: Не в сети Регистрация: 04.12.2003 Откуда: Луганск
Dima-1 писал(а):
А что стоит на машине клиенте?
rm-rf писал(а):
Очевидно, винда со стандартным PPTP клиентом...
Да, вин2003.
rm-rf писал(а):
Короче говоря, для того чтобы клиент прозрачно ходил по всем портм наружу, а также, чтобы он принимал все входящие соединения кроме как на порты 21/20(ftp-data), делаем следующее:
Хех, может конечно, я что-то упустил, но я так и делал, и ничего не вышло, поэтому и спросил.
Все нужные модули подгружены. Правил для фаерволла вообще нет, только вышеописанное.
iptables -t nat -A POSTROUTING -s $CLIENT_FAKE_IP -j MASQUERADE
После этого, с клиента идут пинги, устанавливается коннект на удаленный комп и т.д , все работает.
iptables -t nat -A PREROUTING -d $PPP0_IP -j DNAT --to-destination $CLIENT_FAKE_IP (тут вместо PPP0_IP стоит 0/0 т.к ИП динамический)
После этого удаленный клиент может коннектится к клиенту, но не полноценно, скажем к http-серверу не может или к БД. А скажем телнетом может на порт подключится и послать че нить и у клиента это будет видно.
Попробую нарисовать схемку:
[удаленный клиент]-->ppp0--> ISPgate <--ppp0<--[мой гейт]<--ppp1<--[клиент]
[мой гейт] и [клиент] соединены по eth0, 192.168.1.1 , 192.168.1.2 соотв.
При pptp ip у сервера 172.1.1.2, у клиента - 172.1.1.1
ppp0 - динамический ип
pptp можно и не использовать, сейчас настроено без него, просто у клиента default gateway прописан
После этого удаленный клиент может коннектится к клиенту, но не полноценно, скажем к http-серверу не может или к БД. А скажем телнетом может на порт подключится и послать че нить и у клиента это будет видно.
Т.е. как я понял, всё работает, только WKS вроде HTTP или какого-нить MS-SQL недоступны.
Что в этот момент видно tcpdump'ом на ppp0 на твоем гейте?
например, "tcpdump -i ppp0 port 80"
может, входящие соединения на эти порты закрыты у твоего провайдера? такое бывает...
Member
Статус: Не в сети Регистрация: 04.12.2003 Откуда: Луганск
rm-rf писал(а):
Т.е. как я понял, всё работает, только WKS вроде HTTP или какого-нить MS-SQL недоступны.
Работет только то, что как бы "не нуждается в ответе" , т.е на порт можно послать что-нибудь, вот только ответа не будет. Вот например, если клиент подключается к удаленному клиенту через VNC , vnc виснет, т.к он похоже открывает порт и слушает его, а на него ничего не приходит или приходит не то.
rm-rf писал(а):
может, входящие соединения на эти порты закрыты у твоего провайдера?
Нет, в этом плане все ОК.
Дамп выложу чуть позже.
Через iptraf видно приблизительно такое:
[remote_ppp0_ip]:[port] Флаги -p--
[local_ppp0_ip]:80 Флаги -pa-
Работет только то, что как бы "не нуждается в ответе" , т.е на порт можно послать что-нибудь, вот только ответа не будет.
Не совсем так... Если ты говоришь, что можешь telnel'ом прицепиться в какой-то открытый порт, значит как минимум один пакет прошел в обратную сторону - TCP так устроен.
Советую всё-таки внимательно посмотреть tcpdump'ом трафик на обоих интерфейсах (ppp0/eth0) - я так понял, pptp - только в перспективе и пока его нету?
tcpdump у меня вообще молчит долго, и только потом, минут через 10 , начинает ловить пакеты. Поэтому смотрю iptraf, думаю разница не принципиальна ? Дело в том, что там все как надо. [remote_ip]:[port] - [myip]:[80] , передает 3 кб, и принимает 400-500 байт. У удаленного юзера в флагах стоит Done. Т.е вроде как передал все что нужно и закрыл соединение, но итог один.
rm-rf писал(а):
pptp - только в перспективе
pptp есть, просто сейчас за ненадобностью отключен.
Скажите пожалуйста, то , что я делаю в принципе возможно ? Я то уверен что да, но ....
Если я понимаю требования, то более, чем реально.
т.е. маскарад всех портов наружу + отдать все вход. порты, кроме определенных - это вообще не должно вызывать сложностей.
Думаю, чего-то где-то забыли, разберемся Сейчас некогда, бо сильно хочется домой и чтоб монитор не видеть до понедельника, если что - отпишу в начале след. недели.
А пока описывайте подробнее свои действия...
Member
Статус: Не в сети Регистрация: 04.12.2003 Откуда: Луганск
rm-rf писал(а):
т.е. маскарад всех портов наружу + отдать все вход. порты, кроме определенных - это вообще не должно вызывать сложностей.
Я тоже так думал Еще раз, по порядку:
1. iptables -F ; iptables -t nat -F
2. В if.up скрипт
iptables -t nat -A POSTROUTING -s 192.168.1.1 -j MASQUERADE
iptables -t nat -A PREROUTING -d 0/0 -j DNAT --to-destination 192.168.1.1
И все.
IP Forward > 1
У клиента в TCP/IP прописан Gateway 192.168.1.2 ; DNS 192.168.1.2
Пинги ходят, клиент может коннектится к httpd удаленного клиента, но иногда при аутентификации загрузка просто останавливается и все. Пробовал в играх - нет коннекта ни к клиенту, ни к удаленному клиенту.
с ДНС всё нормально? Он там на 192.168.1.2 есть и форвардит запросы?
с играми помочь немогу, т.к. особо не играюсь... во всяком случае по сети
да, и еще... проверь, что происходит с правилами iptables при переподключении ppp0... поидее, всё должно быть ок, но посмотри через iptables -L, iptables -t nat -L
Member
Статус: Не в сети Регистрация: 04.12.2003 Откуда: Луганск
rm-rf писал(а):
на 2003 случайно нету "IE enchanced security settings"?
Нет ничего такого нет, собственно IE вообще не используется.
Но главное не то, вчера все сделал.
Проблема была в разных mtu, опера , как я понял, сначало посылает пинг на порт , а потом только коннект делает, а телнет этого не делает, поэтому он и работал. Подправил мту - все заработало.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения