есть например почтовые сервисы с открытым исходным кодом (proton mail tutanota)Tutanota и Protonmail — сервисы с закрытым исходным кодом. Исходники предоставляются только для части компонентов, клиентских программ, и т.п., но серверная часть закрыта и не выкладывается.
но почему мы не можем их развернуть на своем сервере ?
И такой же вопрос только про vpn с открытым исходным кодом.Открытые решения не всегда подходят к корпоративной среде, не всегда полностью покрывают все задачи, или не всегда совместимы с уже имеющимся оборудованием.
route
в клиентском конфигурационном файле.route 8.8.8.8 255.255.255.255
Нельзя ли мне сделать аналогичный dns - сервер, используя мой сервер на Amazon'е, чтобы я мог вводить его адрес в поле "DNS-сервер" при настройках подключения к WI-FI?Да, такое вполне возможно. Вам необходимо установить и настроить рекурсивный DNS-резолвер таким образом, чтобы он выдавал IP-адрес вашего сервера для определённых доменных зон (netflix.com), а все остальные домены резолвил по-обычному. Далее необходимо настроить прозрачный прокси-сервер на портах 80 и 443. «Обычного» прозрачного прокси-сервера недостаточно, необходимо взять такой, который умеет вычленять домен из содержимого запроса. Такой функциональностью обладают, например, sniproxy и v2fly (v2ray).
apt install strongswan libcharon-extra-plugins
/etc/ipsec.d/certs/server.crt
, private.key в /etc/ipsec.d/private/server.key
, ca_bundle.crt в /etc/ipsec.d/cacerts/ca_bundle.crt
/etc/ipsec.conf
conn %default
dpdaction=clear
dpddelay=35s
dpdtimeout=300s
fragmentation=yes
rekey=no
ike=aes128gcm16-aes256gcm16-sha1-sha256-sha384-modp1024,3des-aes128-aes192-aes256-sha1-sha256-sha384-modp1024,aes256-sha1-sha256-sha384-modp2048
# left - local (server) side
left=%any
leftauth=pubkey
leftcert=server.crt
leftsendcert=always
leftsubnet=0.0.0.0/0
# right - remote (client) side
right=%any
rightauth=pubkey
rightsourceip=192.168.155.0/24
rightdns=8.8.8.8
conn ikev2-eap-mschapv2
keyexchange=ikev2
rightauth=eap-mschapv2
eap_identity=%any
auto=add
/etc/ipsec.secrets
:: RSA server.key
user1 : EAP "password1"
The following example shows a function that returns TRUE if the application is running in a remote session and FALSE if the application is running on the console.
C++
#include <windows.h>
#pragma comment(lib, "user32.lib")
BOOL IsRemoteSession(void)
{
return GetSystemMetrics( SM_REMOTESESSION );
}
Особенности VPN
Нестандартный способ маршрутизации
В отличие от обычных VPN, осуществляющих перенаправление отдельных IP-адресов или диапазонов средствами маршрутизации ОС, VPN АнтиЗапрета использует маршрутизацию на основе доменных имен, с помощью специального DNS-сервера, созданного для этой цели.
На VPN-сервере запущен специальный DNS-резолвер, устанавливающий отображение (соответствие, маппинг) настоящего IP-адреса домена в свободный IP-адрес большой внутренней подсети, и отдающий запрашиваемому клиенту адрес из внутренней подсети.
У такого подхода есть множество преимуществ:
- Клиенту устанавливается только один или несколько маршрутов, вместо десятков тысяч маршрутов;
- Маршрутизируются только заблокированные домены, а не все сайты на заблокированном IP-адресе;
- Возможность обновления списка заблокированных сайтов без переподключения клиента;
- Корректная работа с доменами, постоянно меняющими IP-адреса, и с CDN-сервисами;
- Корректная работа с провайдерами, блокирующими все поддомены заблокированного домена (блокировка всей DNS-зоны). Пример такого провайдера — Yota.
Но есть и минусы:
- Необходимо использовать только DNS-сервер внутри VPN. С другими DNS-серверами работать не будет.
- Работает только для заблокированных доменов и программ, использующих доменные имена. Для заблокированных IP-адресов необходимо использовать обычную маршрутизацию.