kvazimoda Опубликовано 9 августа, 2012 Жалоба Поделиться Опубликовано 9 августа, 2012 Есть некий компьютер под линуксом, он выполняет функцию роутера и на нём крутится некий сервер. Также настроен iptables таким образом, чтобы к этому серверу доступ был только извне. Извне клиенты прекрасно подключаются без каких-либо проблем. Одним из клиентов является мой ноут. Иногда мой ноут бывает во внутренней сети по отношению к этому компьютеру. И вот в таких случаях достучаться до сервера по внешнему адресу не получается. После трехчасового разбирательства было выяснено следующее. Если смотреть tcpdump'ом, то видно, что на внутренний интерфейс приходит пакет с внутренним IP источника и внешним IP-адресом сервера в качестве адреса назначения. На сколько я понял, в таком виде этот пакет и передаётся приложению. Соответственно, изначально у меня доступ к серверу с внутреннего IP был закрыт, при этом на клиенте ответов я никаких не получал, т.е. пакеты уходили в никуда. Когда я попробовал открыть порт на внутреннем интерфейсе, то на клиенте с помощью tcpdump'а увидел ответы, но ответы эти имели IP-адрес источника соответствующий внутреннему IP-адресу сервера. Пробовал играться с iptables, добавлять правила SNAT и DNAT. Результата это никакого не дало. На сколько я понял, ядро линукса воспринимает запросы от клиента не как транзитные, которые надо сначала натить на внешний интерфейс, а потом уже обрабатывать как пришедшие извне, а как просто входящие пакеты. Из-за этого, кстати, если слушать внешний интерфейс, то там вообще никаких запросов от клиента не появляется. А т.к. пакет обрабатывается как просто входящий, то я не могу ни поменять адрес источника для входящих пакетов, ни адрес получателя для исходящих. Пакеты просто не ходят по тем таблицам, где можно применять эти действия. Ну, и извечный русский вопрос, что делать? :) Как заставить ядро натить эти запросы? Ссылка на комментарий Поделиться на другие сайты Поделиться
kvazimoda Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 Сегодня решил эту проблему. Изначально на сервере не был указан IP-адрес, который должен принимать подключения, соответственно, он слушал все адреса. Сегодня прописал жёстко внешний IP и сервер начал отвечать только с него. Ссылка на комментарий Поделиться на другие сайты Поделиться
Timba Опубликовано 10 августа, 2012 Жалоба Поделиться Опубликовано 10 августа, 2012 На сколько я понял, ядро линукса воспринимает запросы от клиента не как транзитные, которые надо сначала натить на внешний интерфейс, а потом уже обрабатывать как пришедшие извне, а как просто входящие пакеты. Из-за этого, кстати, если слушать внешний интерфейс, то там вообще никаких запросов от клиента не появляется. Просто ремарка. Это не всегда так. Смотря как настроен сервер. На моем почтовике, например, по-барабану, как к нему обращаться к вэб-почте, можно просто по внутреннему IP, а можно по внешнему интернет-адресу URL. Результат будет одинаков. Если не считать скорости обращения внутри сети (естественно она будет выше). Так что дело не в ядре Линукса я думаю. Сам не углублялся в это дело (просто незачем было), но работает так. CentOS 5.7.1. Ссылка на комментарий Поделиться на другие сайты Поделиться
kvazimoda Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 @Timba, в том то и дело, что мне нужно было сделать так, чтобы я мог обратиться всегда по внешнему IP. Самое интересное, что SSH прерасно работает, видимо, SSH смотрит изначально адрес получателя и отсылает от него. А вот то, что у меня работало (openvpn) отсылал с того IP, который находился в одной сети в клиентом... В общем, как-то всё хитро, и похоже на глюк openvpn'а... Если бы я обращался по внутреннему IP, то у меня тоже всё работало бы... Ссылка на комментарий Поделиться на другие сайты Поделиться
Timba Опубликовано 10 августа, 2012 Жалоба Поделиться Опубликовано 10 августа, 2012 В общем, как-то всё хитро, и похоже на глюк openvpn'а... Здесь ничего не подскажу, потому что OpenVPN не использую. Использую РРТР для клиентских подключений и IPSec и EoIP для межсайтовых. Как-то пробовал использовать OpenVPN, но мне он не понравился. Это имхо конечно. Ссылка на комментарий Поделиться на другие сайты Поделиться
kvazimoda Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 (изменено) @Timba, я пробовал IPSec, но уж больно сложным в настройке мне показался. У IPSec заметил только один существенный плюс - поддержка виндой из коробки и адроидофонами. А из минусов - не смог построить туннель на ethernet уровне между двумя линукс-машинами, чтобы объединить две сети в одну. Только с использованием шлюза между ними. А при использовании шлюза не нашёл возможности автоматического прописывания маршрутов. Поэтому, поигравшись с L2TP и IPSec, решил всё же использовать OpenVPN. Ах, да, PPTP многие пишут, что не сильно криптостоек... Изменено 10 августа, 2012 пользователем kvazimoda Ссылка на комментарий Поделиться на другие сайты Поделиться
Timba Опубликовано 10 августа, 2012 Жалоба Поделиться Опубликовано 10 августа, 2012 я пробовал IPSec, но уж больно сложным в настройке мне показался. Уверяю, не сложнее OpenVPN. Я обычно использую PSK, но только из-за удобства. С сертификатами тоже можно, но сложнее. У IPSec заметил только один существенный плюс - поддержка виндой из коробки и адроидофонами. Не обязательно виндой. IPSec поддерживают практически все производители. В том числе и Cisco. Ах, да, PPTP многие пишут, что не сильно криптостоек... Этот протокол предназначен для клиентских подключений. И кому надо его ломать? А для клиента под вин он очень удобен. Посему пользуем. :) Но раз кажется удобнее OpenVPN, то почему нет? Я про EoIP недавно и понятия не имел, но он работает. Причем, при работе через него доступны вещи, которые ни IPSec ни OpenVPN не предоставят. Каждый сам выбирает. Ссылка на комментарий Поделиться на другие сайты Поделиться
kvazimoda Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 Уверяю, не сложнее OpenVPN. Я обычно использую PSK, но только из-за удобства. С сертификатами тоже можно, но сложнее. Да я же его настроил, поэтому представляю себе что это такое. Настраивал его первым, возможно из-за этого мне он показался сложнее чем OpenVPN В том числе и Cisco. Такого не держим :) Да и опять-таки, говорят есть проблемы с NAT'ом. Но не знаю какие проблемы, у меня оно завелось, пробовал тоже PSK, т.к. показалось удобнее. :) Этот протокол предназначен для клиентских подключений. И кому надо его ломать? А для клиента под вин он очень удобен. Посему пользуем. :) Ну, как говорится, никогда не стоит недооценивать своего врага. У меня вон, круглосуточно подбирают пороль к SSH. Когда впервые заметил, сделал настройку, что после трёх неудач IP идёт курить на полчаса. И кому нужен неизвестный компьютер с открытым наружу SSH? Надо попробовать поставить в виртуалке пароль примитивный и посмотреть что эти роботы будут делать с машиной :) А если учесть, что по этому туннелю я собираюсь управлять оборудованием и гонять инфу, которую не всем нужно знать, то пусть будет позащищеннее, так мне спокойнее :) Каждый сам выбирает. О том и речь :) Очень хорошо, что есть выбор :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Timba Опубликовано 10 августа, 2012 Жалоба Поделиться Опубликовано 10 августа, 2012 Ну, как говорится, никогда не стоит недооценивать своего врага. У меня вон, круглосуточно подбирают пороль к SSH. Когда впервые заметил, сделал настройку, что после трёх неудач IP идёт курить на полчаса. К тем серверам, которыми можно управлять по SSH, я вообще доступ запретил по этому протоколу извне, только изнутри. А если рассматривать РРТР, то мало того что сессия достаточно кратковременная, так и обычно не инфу гоняют, а подключаются по RDP. А там еще и своя SSL защита. Так что, РРТР я бы не сбрасывал со счетов, тем более этот протокол совершенствуется и не известно что будет с его криптозащитой. Ссылка на комментарий Поделиться на другие сайты Поделиться
kvazimoda Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 К тем серверам, которыми можно управлять по SSH, я вообще доступ запретил по этому протоколу извне, только изнутри. А мне как раз надо снаружи управлять, изнутри я и с консоли могу поуправлять, если что :) Так что, РРТР я бы не сбрасывал со счетов, тем более этот протокол совершенствуется и не известно что будет с его криптозащитой. А я и не говорю, что про PPTP надо забыть, каждый выбирает то что нужно. Ведь не даром все эти протоколы существуют. Просто у каждого есть свои плючы и свои минусы и в каждом конкретном случае самым оптимальным будет кто-то один из них. Я думаю, тему надо бы закрывать, т.к. проблему я решил, а мы с тобой уже уходим во флуд :) Если никто не против, то могу закрыть :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения