Вообще, чтобы брать значение переменных окружения, их лучше не раздумывая брать в фиг.скобки. Примерно по той же причине, по какой регекс-шаблоны берут в апострофы.
И кстати, хорошо бы писать не ${line}, а "${line}" - на случай наличия в переменной line пробелов и прочих спец.символов.
Было бы интересно пригласить в наш уютный чатик интроверта, который никогда ни у кого не учился вживую. Ну ладно, условие "никогда ни у кого" в формальном смысле - какое-то запредельное; поэтому поставим вопрос иначе:
У многих людей в жизни были Учителя (иногда их называют "гуру"). Речь о таких учителях, которые не просто откатали программу - а именно дали ученику уникальные знания, фундаментально повлиявшие на мировоззрение ученика.
(Похвастаюсь - у меня было несколько таких учеников.)
Так вот, я бы хотел увидеть хоть одного интраверта, достигшего значимых успехов, у которого в жизни не было ни одного Учителя-гуру.
PS: Из рассмотрения сразу выкидываем учителей начальной школы, учивших ребёнка читать/писать/считать. Тут без личного общения никуда. Учитель-гуру должен присутствовать в жизни ученика не ранее седьмого класса (появиться - он может раньше; но он должен продолжать учить в седьмом классе или позже). Как-то так.
Интравертов-лузеров не рассматриваем - они не интересны.
IP-адрес 78.XX.XX.19 - это адрес от провайдера; или это адрес на VPN-соединении?
Дайте мне таблицу маршрутизации до установления VPN-соединения и после.
IP-адрес на VPN-соединении можно публиковать открыто - извне он недоступен. Но можно пропускать вывод всех команд через что-то типа | sed s/81\.15\.211\./81.XX.YY./ Причём менять можно много адресов, задав много масок замены. Особенно актуально эта замена для провайдерского адреса сервера.
На VPN-соединении лусше вешать адреса типа 192.158.*.* .
У каждого компьютера с поддержкой Интернет-протоколов изначально есть IP-адрес 127.0.0.1 на loopback-интерфейсе.
После подключения к провайдеру (или к лок.сети, которая как бы провайдер) - на компьютере появляется второй IP-адрес на сетевой карте (выданный по DHCP или записанный статически).
После установления VPN-соединения - появляется третий IP-адрес на VPN-интерфейсе.
Итак, клиент (MacOS) устанавливает VPN-соединение с сервером (Linux), на котором крутятся DB-сервисы. По какому IP-адресу Вы обращаетесь к СУБД - по второму (LAN) или по третьему (VPN)?
Как выглядит таблица маршрутизации в моменты, "когда соединение правильное" и "когда соединение неправильное"?
nApoBo3, Есть такое слово. Но проблема - не в нём.
Пусть Виталий Соколов придёт и нас рассудит. Ведь проблема явно не в том, что его IP-адрес раскрывается ег серверу; а в том, что его сервисы доступны кому угодно.
nApoBo3, Ну, начнём с того, что Виталий Соколов и не просил что-либо скрывать. Перечитайте исходный вопрос: задача в том, чтобы "доступ к mongo, postgresql был разрешён только через VPN". Слово "скрывать" пустили в дискуссию Вы.
Манипуляции с default route Вам не помогут. Скорее Вы лишитесь доступа вообще.
Фраза "для ip-адреса сервера-1" показывает, что Вы невнимательно прочитали то, что я Вам пишу. У обоих серверов - по два IP-адреса: один от провайдера, второй для VPN (и ещё есть третий = 127.0.0.1/8).
Если MongoDB и PostgreSQL слушают провайдерский IP-адрес (принимают соединения на провайдерском IP-адресе) - то никакой VPN их не скроет от внешнего доступа. Пока Вы это не поймёте - Вы не сможете настроить систему.
Представьте себе, что у Вас есть некое здание, в котором есть ценные вещи. Чтобы защитить их - Вы прорыли подземный туннель в это здание из своего дома. Ну и фигли толку, если дверь в здание всё равно открыта? Максим - никто не видит, как Вы туда ходите; не видят, что Вы туда/оттуда носите. Но посторонние всё равно могут зайти. Вам надо в iptables запретить обращения к этим сервисам (к их портам), приходящие через провайдера (т.е. не через VPN).
Добавлю, что механизмы SrtUID и SetGID - очень мощные и гибкие, ибо позволяют делегировать практически произвольный набор прав: на сколько хватит фантазии и мастерства программиста. Однако, это и весьма опасный инструмент - им можно сильно накосячить.
Как-то давно мне надо было делегировать одному человеку право менять конфиг named и перезапускать его. То, что ему надо было менять - я вынес в отдельный файл; а для перезапуска написал одну программу, которая брала PID этого демона и слала ему SIGHUP.
Из популярных программ - я бы добавил в список ещё и ping.
И кстати, хорошо бы писать не
${line}
, а"${line}"
- на случай наличия в переменной line пробелов и прочих спец.символов.