Любопытно...
Jul. 22nd, 2025 05:12 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Интересно, как испортилось понятие VPN. Почти так же как испортилось понятие телефонный звонок. В наше время, "у меня зазвонил телефон" это почти эквивалентно "спам пришел". А когда-то еще пару-тройку десятилетий назад телефон был средством общения людей, у которых есть не только что сказать друг другу. но и что совместно делать.
Электронная почта, что характерно, испортилась в меньшей степени. Хотя тоже испортилась.
VPN исходно это Virtual Private Network. Способ объединить компьютеры принадлежащие кому-то (человеку, фирме, сообществу), подключенныхе через разных провайдеров и находящиеся в физически разных местах, для того чтобы они могли взаимодействовать между собой. Особенно актуально в связи с тем что интернет тоже испортилися и из peer-to-peer сети превратился в сочетание серверов и фактически терминалов. Поэотому удаленно работать с компьютером, подключенным через другого провайдера, за парой NAT-ов и файрволлов не получается без наложения на общедоступную сеть виртуальной частной.
Но сейчас VPN в масовом сознании это "средство обхода цензуры". А не средство взаимодействия между удаленными компьютерами. Компьютеров в этой модели нет. Есть веб-странички и бразуеры.
X-Post to LJ
Интересно, а у какого хостера в России сейчас имеет смысл покупать VPS?
Требования:
Количество ядер, объем памяти и т.д. некритичны пары ядер и пары гигов вполне хватит, php-шные вебсайты мне хостить не надо.
X-Post to LJ
Закончил филологический факультет Саратовского университета в 1964. В 1973 защитил в ЛГПИ им. А.И. Герцена кандидатскую диссертацию ""Пиковая дама" Пушкина и "Преступление и наказание" Достоевского (о преемственности нравственно-философской проблематики и жанровой традиции)". В 1966-1987 гг. работал на литературоведческих кафедрах различных провинциальных вузов (в Пржевальске, Елабуге, Keмерово). С 1987 г. - в Mocкве: в Полиграфическом институте, в НИИ художественного воспитания АПН и, наконец, с 1991 г. - в Российском государственном гуманитарном университете (РГГУ). В 1990 защитил в ИМЛИ докторскую диссертацию "Реалистический тип романа (на материале классических образцов жанра в русской литературе XIX века)". Принимал участие в ряде международных конференций в Москве, Билефельде и Ольденбурге (Германия), в Taмпере (Финляндия), Гданьске и Кракове (Польша), в Будапеште, во Фрибурге (Швейцария) и во множестве различных конференций в провинциальных вузах России. Участвовал в работе специализированных Советов по присуждению ученых степеней по филологии, в редколлегии "Болдинских чтений".
Область научных интересов первоначально - русский реалистический роман и в этой связи - теория романа. Отсюда - монография "Русский классический роман ХIХ века. Проблемы поэтики и типологии жанра" (M., 1997; первое изд. - Kрaсноярск, 1988). Затем в центре внимания оказались проблемы преподавания литературы в школе. В результате появились - в соавторстве - 7 школьных учебников (1993-2000 гг.) и ряд публикаций теоретико-методического характера (программы, статьи). С конца 1970-х гг. работал над проблемами теории литературы в наследии Бахтина, в частности - над философскими основаниями "эстетики словесного творчества". Результат - ряд статей (вплоть до публикации в "Вопросах литературы" за 2008 г.), докладов и книга ""Эстетика словесного творчества" Бахтина и русская религиозная философия" (2001). Параллельно занимался исторической поэтикой сюжета, проблемой повествования, а также теорией и историей повести (книга "Русская повесть Серебряного века" - 2007) и некоторых других эпических жанров (авантюрно-исторический роман, детектив). Написал несколько глав в III томе академической "Теории литературы" (2004), посвященном родам и жанрам (одна из них - "Эпика"); руководил подготовкой коллективной монографии "Готическая традиция в русской литературе" (РГГУ, 2008). В последнее время обратился к изучению русской неканонической поэмы XIX-XX вв. Занимался также изучением соотношений и взаимосвязей прозы Пушкина, Тургенева, Л. Толстого, Достоевского, Чехова. В этом контексте наиболее значимая публикация - глава о "позднем" Толстом в книге "Русская литература рубежа веков" (ИМЛИ, 2001). Иногда писал и о драматургических текстах ("Гроза" Островского и некот. др.).
Все это сопровождалось работами учебно-методического характера: переизданием классического учебника по поэтике Б.В. Томашевского с предисловием Н.Д.Тамарченко и комментариями С.Н. Бройтмана, (1996, 1999, 2001 и др.), участием в учебнике "Введение в литературоведение" ("Высшая школа", несколько изданий), созданием серии учебных пособий - хрестоматий по теоретической поэтике и анализу прозаического художественного текста (изд-ва РГГУ и "Академия") и учебника "Теория литературы" (2004, 2007), а также исследованием терминологии современной поэтики, которое привело к участию в создании словаря "Поэтика" (2008) - в роли главного научного редактора и одного из авторов. Работал над учебником по теории литературных жанров. Всего около 400 публикаций.
Руководил аспирантами (16) и докторантами (5). Участвовал в разработке учебного плана историко-филологического факультета (создание системы теоретико-литературных дисциплин, включая занятия по анализу художественного текста и курсы по истории науки). Читал лекции по теоретической поэтике и (один год) по истории русского литературоведения, а также целый ряд спецкурсов (около 10); последний из них - о поэтике русской повести XIX-XX вв. Все годы работы в РГГУ вел практикум по анализу прозы. Самым важным для себя видом занятий считал спецсеминар "Поэтика русской классической прозы" с одновременным участием студентов 3-5 курсов и аспирантов.
Библиография:
О жанровой структуре "Преступления и наказания" // Роман Ф.М. Достоевского "Преступление и наказание" в литературной науке ХХ в. Хрестоматия. Ижевск, 1993. С. 126-147.
Спор о Боге и личности в эпоху утраченной простоты (о романе М. Берга "Вечный жид") // Новое литературное обозрение. 1995. № 11. С. 245-255.
Русский классический роман XIX века: Проблемы поэтики и типологии жанра. М.: Изд. РГГУ, 1997. 203 с.
"Капитанская дочка" Пушкина и жанр авантюрно-исторического романа // Russian Language Journal (Michigan State University). 1999. Vol. 53, nos. 174-176. P. 119-139.
Лев Толстой // Русская литература рубежа веков (1890-е - начало 1920-х годов). Кн. 1. М., 2000. С. 336-389.
"Эстетика словесного творчества" Бахтина и русская религиозная философия (пособие по спецкурсу). М.: РГГУ, 2001. 201 с.
Точка зрения персонажа и авторская позиция в реалистической драме "Гроза" А.Н. Островского // Русская трагедия: пьеса А.Н. Островского "Гроза" в русской критике и литературоведении. СПб.: Азбука-классика, 2002. С. 396-415.
Проблема рода и жанра в поэтике Гегеля. Методологические проблемы теории рода и жанра в поэтике ХХ века. Эпика // Теория литературы. Том III. Роды и жанры (основные проблемы в историческом освещении). М.: ИМЛИ, 2003. С. 33-63, 81-98, 219-244.
Роман и гротеск (о значении идей М.М. Бахтина для современной теории романа) // Изв. РАН. Серия лит. и яз. 2005. №6. С. 3-12.
Русская повесть Серебряного века. (Проблемы поэтики сюжета и жанра). Монография. М.: Intrada, 2007. 256 с.
Теория литературы: В 2 томах. Т. 1. Теория художественного дискурса. Теоретическая поэтика. М.: Академия, 2007 (Общ. ред.; Предисловие ко второму изданию, Введение; Ч. 2. Теоретическая поэтика).
Готическая традиция в русской литературе / Под ред. Н.Д. Тамарченко М., 2008. 346 с. (Предисловие - с. 9-13; разделы в главах о Пушкине - с. 57-67 в соавт. с В.Б. Зусевой; с. 67-78; о Достоевском - с. 199-212; о Чехове - в соавт. с А.А. Поляковой - с. 239-249; Заключение - с. 297-302).
М. Бахтин и П. Медведев: судьба "Введения в поэтику" // Вопросы литературы. Сентябрь-Октябрь 2008. С. 160-184.
Поэтика: Словарь актуальных терминов и понятий. М., 2008. (Редактирование. Предисловие. Около 70 статей).
Разобрался тут, как использовать опцию -w у ssh. Надо будет в рассказку дописать.
Токен %T в LocalCommand вполне работает. А на серверной стороне у команды которая передана в командной строке ssh есть переменная среды SSH_TUNNEL.
Получилось следующее:
```
# !/bin/sh
# Config file for ssh vpn
# DNS name of server to connect to (required)
SERVER=example.com
# IP of this computer in VPN (required)
MY_IP=192.168.217.194
# IP of server in VPN (required)
SERVER_IP=192.168.217.193
# network to route via server (optional)
NET=192.168.217.128/25
# Port for dynamic port forwarding (optional)
SOCKS_PORT=1080
```
SERVER - это имя сервера куда ходить по ssh в открытом интернете. А MY_IP и SERVER_IP - "серые" адреса внутри vpn. SOCKS_PORT - это чтобы не держать отдельной ssh-сессии для ssh -D, NET - это если нам сеть нужна не для обхода блокировок. а как виртуальная частная сеть, объединяющая наши компьютеры, вошедшие в интернет через разных провайдеров. На каждом клиенте для рута генерируется ключевая пара ssh и открытый ключ помещается руту на сервер.
На этом настройка заканчивася. Дальше запускаем sshvpn, оно устанавливает соединение и voila.
Скрипт sshvpn имеет следующий вид:
#!/bin/sh
if [ "$(id -u)" -ne 0 ]; then
sudo "$0"
exit "$?"
fi
if ! [ -f /etc/ssh/vpn.conf ]; then
echo "No /etc/ssh/vpn.conf found"
exit 1
fi
. /etc/ssh/vpn.conf
ssh -w "any:any" -o LocalCommand="sshnetclient %T" ${SOCKS_PORT:+-D "localhost:$SOCKS_PORT" }"$SERVER" sshnetsetup "$MY_IP"
Собственно интересны тут две последние строчки - прочитать конфиг и запустить ssh c кучей параметров из этого конфига. На клиенте в резулаьте выполнится следующий скрипт
#!/bin/sh
. /etc/ssh/vpn.conf
DEVICE="$1"
ip addr add dev "$DEVICE" local "$MY_IP" peer "$SERVER_IP"
ip link set "$DEVICE" up
[ -n "$NET" ] && ip route add "$NET" via "$SERVER_IP"
Он прочитает тот же конфиг и сконфигурирует интерфейс, имя которого ему передано в командной строке через токен %T (см раздел TOKENS в man ssh_config)
На сервере выполняется вот такой скрипт:
#!/bin/sh
client=$1
if [ -z "$client" ]; then
client="${SSH_ORIGINAL_COMMAND##* }"
fi
ip addr add 192.168.217.193 peer $client dev $SSH_TUNNEL
ip link set $SSH_TUNNEL up
# now wait until other side would break connection
cat
Он конфигурирует интерфпейс указанный в переменной среды SSH_TUNNEL в переданный ему в командной строке из клиентского sshvpn IP-адрес, а потом запускает команду cat, т.е. ждет ввода на stdin до упора. Пока SIGINT не прилетит. Если в authorized_keys мы пропишем command=/usr/local/bin/sshnetsetup, то параметр $MY_IP sshd в скрипт не передаст. Зато засунет оригинальную команду в SSH_ORIGINAL_COMMAND, откуда этот адрес мы и выкусываем. Особые параноики могут там использовать какой-нибудь sed, чтобы убедиться что ORIGINAL_COMMAND это действительно sshnetsetup ip-address.
При таком сетапе, когда IP-адреса клиентам назначаются явным образом и прописываются на клиентах же в конфиг, нет необходимости что-то делать с динамическим DNS можно всех клиентов статически прописать.
Теперь бы еще разобраться как совместить это дело с SessionType=none (aka -N) и RemoteCommand.
У ssh есть, как известно, ключик -w который позволяет аллоцировать на обоих концах виртуальный сетевой интерфейс и гонять через свое ssh-соединение любой траффик.
К сожалению никакого удобного сервиса, аналогичного тому что есть почти у всех прочих фич ssh вокруг этой опции не сложилось.
Получается следующее
Соответсвенно встает задача как организовать работу по схеме "звезда". Т.е. когда есть n девайсов, которые могут ходить по ssh на некий центральный сервер, и данный сервер должен им устроить полноценную виртуальную сеть, вне зависимости от того, сколько из них и в каком порядке пришли. Полноценную, это значит что они видят не только сервер и выполняющиеся на нем серверные процессы (dovecot, postfix, http-proxy), но и друг друга. Поичем друг друга полноценным способом.
Ну собственно, очевидный вариант - прописать каждому девайсу при его настройке номер tun-интерфейса, который оно должно запрашивать на сервере, а дальше в зависимости от этого номера плясатьj, назначая IP.
Интерфейс у них там по умолчанию point-to-point но можно включить режим ethernet. Правда не совсем понятно есть ли в этом хоть какой-то смысл.
Этот вариант мне не нравится, но сойдет для сельской местности.
Далее, у команды которая выполняется в ssh-сессии может быть переменная вреды SSH_USER_AUTH, указывающая на файлик, где лежит инфрмация о пользовательском ключе. (Чтобы ее включить, в sshd_config напишите ExposeAuthInfo yes) можно взять этот файлик, прочитать его, потом поискать сооответствующий ключ в authorized_keys и найти там последним полем комментарий, который как правило, содержит имя машины, на которой сгенерена ключевая пара. Дальше уже танцевать от имени машины. Это удобно, если все клиенты - линуксовые машины и админ серевра все равно знает их по имени (что, впрочем, необхдимо и для того, чтобы пользователи могли с одной машины к другой обращаться по имени).
Все примерны, которые мне удалось нагуглить в интернете, используют ifconfig. Он у нас вроде как deprecated, хотя в пакет net-tools в trixie поставляется.
Но аналогичных результатов можно добиться и с использованием iproute2.
ip addr set $address peer $serveraddress dev $device
ip link set $device up
на клиенте
ip addr set $serveraddress peer $adddess dev $device
ip link set $device up
на сервере.
Вообще, видимо, самое логичное - запускать ssh с ключиком -w из скрипта передавая на сервер в параметрах и номер интерфейса и ip-адрес. Это несколько менее удобно чем хранить всю конфигурацию на сервере, но что делать.
Что-то мобильные операторы совсем невзлюбили мой сервер (с проводного Ростелекома из московской квартиры imap и smtp вполне работают).
Теперь уже и на 443 порту все плохо - Фотку кисоньки по вебдав не выложишь - большие POST и PUT запросы по https таймаутятся. Что, кстати, мешает отправлять письма через webmail.Если письмо больше нескольких килобайт, например как нынче любят - с топквотигном, отправка не проходит. Фактически единственное что (пока) работает это ssh. И то только на 22 порту. На 443 уже как-то не очень.
Отдельный квест в этих условиях - почитать почту с нерутованного смартфона. Я этот квест решил, но ход решения, пожалуй, здесь описывать не буду.
Видимо, надо хостинг-провайдера менять. Возможно, на российского. Поскольку есть подозрение что там хостинговый датацентр запретами специально обложен. А для фото кисонек и текущей почты российский провайдер не сильно хуже нероссийского. И с оплатой проще. Или найти какого-нибудь провайдера в стране против которой РКН ничего не имеет - в Бразилии, например или Вьетнаме?
Жалко, конечно что ipv6 так толком и не взлетел. Я тут в мегафоне подключил эту услугу - а шиш. Из трех роутеров только один сумел получить ipv6 адрес - Huawei-вский travel router. Причем он это как-то сам, после чего я полез смотрерть, нельзя ли на других симках это включить. Но ни openwrt на TN MR6400, ни Olax c родной прошивкой не видят ipv6. Насколько я понимаю, там до OpenWRT дело не доходит. Получить какой-то префикс должен QMI-модем с проприетарной прошивкой.
Был бы везде IPv6 можно было бы почту опять держать под кроватью как я на протяжении полутора десятилетий делал. Правда с моим нынешним образом жизни, когда моя квартира по полгода стоит с отключенным электричеством тут тоже есть проблемы.
UPD. У МТС теперь в Тверской области IPv6 есть. Но зато сигнала во всей округе нет.