Руководство по организации удалённого подключения к промышленному плк посредством openvpn
Содержание:
Core
PHP Version | 7.2.32 |
Directive | Local Value | Master Value |
---|---|---|
allow_url_fopen | On | On |
allow_url_include | On | On |
arg_separator.input | & | & |
arg_separator.output | & | & |
auto_append_file | no value | no value |
auto_globals_jit | On | On |
auto_prepend_file | no value | no value |
browscap | no value | no value |
default_charset | UTF-8 | UTF-8 |
default_mimetype | text/html | text/html |
disable_classes | no value | no value |
disable_functions | symlink,shell_exec,exec,popen,system,dl,passthru,escapeshellarg,escapeshellcmd,show_source,pcntl_exec | symlink,shell_exec,exec,popen,system,dl,passthru,escapeshellarg,escapeshellcmd,show_source,pcntl_exec |
display_errors | Off | Off |
display_startup_errors | Off | Off |
doc_root | no value | no value |
docref_ext | no value | no value |
docref_root | no value | no value |
enable_dl | Off | Off |
enable_post_data_reading | On | On |
error_append_string | no value | no value |
error_log | error_log | error_log |
error_prepend_string | no value | no value |
error_reporting | 32767 | 32767 |
expose_php | On | On |
extension_dir | /opt/alt/php72/usr/lib64/php/modules | /opt/alt/php72/usr/lib64/php/modules |
file_uploads | On | On |
hard_timeout | 2 | 2 |
highlight.comment | #FF8000 | #FF8000 |
highlight.default | #0000BB | #0000BB |
highlight.html | #000000 | #000000 |
highlight.keyword | #007700 | #007700 |
highlight.string | #DD0000 | #DD0000 |
html_errors | On | On |
ignore_repeated_errors | On | On |
ignore_repeated_source | On | On |
ignore_user_abort | Off | Off |
implicit_flush | Off | Off |
include_path | .:/opt/alt/php72/usr/share/pear | .:/opt/alt/php72/usr/share/pear |
input_encoding | no value | no value |
internal_encoding | no value | no value |
log_errors | Off | Off |
log_errors_max_len | 1024 | 1024 |
mail.add_x_header | Off | Off |
mail.force_extra_parameters | no value | no value |
mail.log | no value | no value |
max_execution_time | 30 | 30 |
max_file_uploads | 20 | 20 |
max_input_nesting_level | 64 | 64 |
max_input_time | 60 | 60 |
max_input_vars | 1000 | 1000 |
memory_limit | 128M | 128M |
open_basedir | no value | no value |
output_buffering | 1 | 1 |
output_encoding | no value | no value |
output_handler | no value | no value |
post_max_size | 8M | 8M |
precision | 14 | 14 |
realpath_cache_size | 4096K | 4096K |
realpath_cache_ttl | 120 | 120 |
register_argc_argv | Off | Off |
report_memleaks | On | On |
report_zend_debug | On | On |
request_order | no value | no value |
sendmail_from | no value | no value |
sendmail_path | /usr/sbin/sendmail -t -i | /usr/sbin/sendmail -t -i |
serialize_precision | 100 | 100 |
short_open_tag | On | On |
SMTP | localhost | localhost |
smtp_port | 25 | 25 |
sys_temp_dir | no value | no value |
track_errors | Off | Off |
unserialize_callback_func | no value | no value |
upload_max_filesize | 128M | 128M |
upload_tmp_dir | /tmp | /tmp |
user_dir | no value | no value |
user_ini.cache_ttl | 300 | 300 |
user_ini.filename | .user.ini | .user.ini |
variables_order | EGPCS | EGPCS |
xmlrpc_error_number | ||
xmlrpc_errors | Off | Off |
zend.assertions | 1 | 1 |
zend.detect_unicode | On | On |
zend.enable_gc | On | On |
zend.multibyte | Off | Off |
zend.script_encoding | no value | no value |
zend.signal_check | Off | Off |
standard
Dynamic Library Support | enabled |
Path to sendmail | /usr/sbin/sendmail -t -i |
Directive | Local Value | Master Value |
---|---|---|
assert.active | 1 | 1 |
assert.bail | ||
assert.callback | no value | no value |
assert.exception | ||
assert.quiet_eval | ||
assert.warning | 1 | 1 |
auto_detect_line_endings | ||
default_socket_timeout | 60 | 60 |
from | no value | no value |
session.trans_sid_hosts | no value | no value |
session.trans_sid_tags | a=href,area=href,frame=src,form= | a=href,area=href,frame=src,form= |
url_rewriter.hosts | no value | no value |
url_rewriter.tags | a=href,area=href,frame=src,input=src,form=fakeentry | a=href,area=href,frame=src,input=src,form=fakeentry |
user_agent | no value | no value |
SPL
SPL support | enabled |
---|---|
Interfaces | OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject |
Classes | AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException |
mysqli
MysqlI Support | enabled |
---|---|
Client API library version | mysqlnd 5.0.12-dev — 20150407 — $Id: 3591daad22de08524295e1bd073aceeff11e6579 $ |
Active Persistent Links | |
Inactive Persistent Links | |
Active Links |
Directive | Local Value | Master Value |
---|---|---|
mysqli.allow_local_infile | Off | Off |
mysqli.allow_persistent | On | On |
mysqli.default_host | no value | no value |
mysqli.default_port | 3306 | 3306 |
mysqli.default_pw | no value | no value |
mysqli.default_socket | no value | no value |
mysqli.default_user | no value | no value |
mysqli.max_links | Unlimited | Unlimited |
mysqli.max_persistent | Unlimited | Unlimited |
mysqli.reconnect | Off | Off |
mysqli.rollback_on_cached_plink | Off | Off |
mysqlnd
mysqlnd | enabled |
---|---|
Version | mysqlnd 5.0.12-dev — 20150407 — $Id: 3591daad22de08524295e1bd073aceeff11e6579 $ |
Compression | supported |
core SSL | supported |
extended SSL | supported |
Command buffer size | 4096 |
Read buffer size | 32768 |
Read timeout | 86400 |
Collecting statistics | Yes |
Collecting memory statistics | No |
Tracing | n/a |
Loaded plugins | mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password |
API Extensions | mysqli,pdo_mysql |
mysqlnd statistics | |
---|---|
bytes_sent | 21202 |
bytes_received | 272808 |
packets_sent | 652 |
packets_received | 9086 |
protocol_overhead_in | 36344 |
protocol_overhead_out | 2608 |
bytes_received_ok_packet | |
bytes_received_eof_packet | |
bytes_received_rset_header_packet | 2277 |
bytes_received_rset_field_meta_packet | |
bytes_received_rset_row_packet | 2110 |
bytes_received_prepare_response_packet | 61622 |
bytes_received_change_user_packet | 204182 |
packets_sent_command | 313 |
packets_received_ok | |
packets_received_eof | |
packets_received_rset_header | 253 |
packets_received_rset_field_meta | |
packets_received_rset_row | 300 |
packets_received_prepare_response | 876 |
packets_received_change_user | 7631 |
result_set_queries | 253 |
non_result_set_queries | 47 |
no_index_used | 99 |
bad_index_used | |
slow_queries | |
buffered_sets | 253 |
unbuffered_sets | |
ps_buffered_sets | |
ps_unbuffered_sets | |
flushed_normal_sets | |
flushed_ps_sets | |
ps_prepared_never_executed | |
ps_prepared_once_executed | |
rows_fetched_from_server_normal | 7378 |
rows_fetched_from_server_ps | |
rows_buffered_from_client_normal | 7378 |
rows_buffered_from_client_ps | |
rows_fetched_from_client_normal_buffered | 161 |
rows_fetched_from_client_normal_unbuffered | |
rows_fetched_from_client_ps_buffered | |
rows_fetched_from_client_ps_unbuffered | |
rows_fetched_from_client_ps_cursor | |
rows_affected_normal | 32 |
rows_affected_ps | |
rows_skipped_normal | 7378 |
rows_skipped_ps | |
copy_on_write_saved | |
copy_on_write_performed | |
command_buffer_too_small | |
connect_success | 13 |
connect_failure | |
connection_reused | |
reconnect | |
pconnect_success | |
active_connections | 18446744073709551603 |
active_persistent_connections | |
explicit_close | 13 |
implicit_close | |
disconnect_close | |
in_middle_of_command_close | |
explicit_free_result | 253 |
implicit_free_result | |
explicit_stmt_close | |
implicit_stmt_close | |
mem_emalloc_count | |
mem_emalloc_amount | |
mem_ecalloc_count | |
mem_ecalloc_amount | |
mem_erealloc_count | |
mem_erealloc_amount | |
mem_efree_count | |
mem_efree_amount | |
mem_malloc_count | |
mem_malloc_amount | |
mem_calloc_count | |
mem_calloc_amount | |
mem_realloc_count | |
mem_realloc_amount | |
mem_free_count | |
mem_free_amount | |
mem_estrndup_count | |
mem_strndup_count | |
mem_estrdup_count | |
mem_strdup_count | |
mem_edupl_count | |
mem_dupl_count | |
proto_text_fetched_null | |
proto_text_fetched_bit | |
proto_text_fetched_tinyint | 56 |
proto_text_fetched_short | |
proto_text_fetched_int24 | |
proto_text_fetched_int | 7332 |
proto_text_fetched_bigint | 4 |
proto_text_fetched_decimal | 2 |
proto_text_fetched_float | |
proto_text_fetched_double | |
proto_text_fetched_date | |
proto_text_fetched_year | |
proto_text_fetched_time | |
proto_text_fetched_datetime | |
proto_text_fetched_timestamp | |
proto_text_fetched_string | 7697 |
proto_text_fetched_blob | |
proto_text_fetched_enum | |
proto_text_fetched_set | |
proto_text_fetched_geometry | |
proto_text_fetched_other | |
proto_binary_fetched_null | |
proto_binary_fetched_bit | |
proto_binary_fetched_tinyint | |
proto_binary_fetched_short | |
proto_binary_fetched_int24 | |
proto_binary_fetched_int | |
proto_binary_fetched_bigint | |
proto_binary_fetched_decimal | |
proto_binary_fetched_float | |
proto_binary_fetched_double | |
proto_binary_fetched_date | |
proto_binary_fetched_year | |
proto_binary_fetched_time | |
proto_binary_fetched_datetime | |
proto_binary_fetched_timestamp | |
proto_binary_fetched_string | |
proto_binary_fetched_json | |
proto_binary_fetched_blob | |
proto_binary_fetched_enum | |
proto_binary_fetched_set | |
proto_binary_fetched_geometry | |
proto_binary_fetched_other | |
init_command_executed_count | |
init_command_failed_count | |
com_quit | 13 |
com_init_db | |
com_query | 300 |
com_field_list | |
com_create_db | |
com_drop_db | |
com_refresh | |
com_shutdown | |
com_statistics | |
com_process_info | |
com_connect | |
com_process_kill | |
com_debug | |
com_ping | |
com_time | |
com_delayed_insert | |
com_change_user | |
com_binlog_dump | |
com_table_dump | |
com_connect_out | |
com_register_slave | |
com_stmt_prepare | |
com_stmt_execute | |
com_stmt_send_long_data | |
com_stmt_close | |
com_stmt_reset | |
com_stmt_set_option | |
com_stmt_fetch | |
com_deamon | |
bytes_received_real_data_normal | 158537 |
bytes_received_real_data_ps |
hash
hash support | enabled |
Hashing Engines | md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b fnv132 fnv1a32 fnv164 fnv1a64 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 |
MHASH support | Enabled |
MHASH API Version | Emulated Support |
Приступаем к настройке
Схема сети
ipsecgw.example.commamakeeneticroad-warriorsrkn.example.com
auto = route
Убеждаемся что все работает:
Шаг второй. Появление Keenetic
Настройки компонентов KeeneticOSIPSec VPN
Интернет → Подключения →
Другие подключения
(3 изображения)
crypto engine hardwarecrypto engine software
Все работает:
Шаг третий. Защищаем мобильные устройства
- в директории /etc/strongswan/ipsec.d/cacerts создаем 2 символические ссылки: одну на корневое хранилище доверенных сертификатов в /etc/pki/tls/certs; и вторую с названием ca.pem, указывающую на /etc/letsencrypt/live/ipsecgw.example.com/chain.pem
- В директории /etc/strongswan/ipsec.d/certs также создаются два симлинка: первый, с именем certificate.pem, ссылается на файл /etc/letsencrypt/live/ipsecgw.example.com/cert.pem. И второй, с именем fullchain.pem, ссылающийся на /etc/letsencrypt/live/ipsecgw.example.com/fullchain.pem
- В директории /etc/strongswan/ipsec.d/private размещаем симлинк key.pem, указывающий на закрытый ключ, сгенерированный certbot и лежащий по пути /etc/letsencrypt/live/ipsecgw.example.com/privkey.pem
ipsec.conf
профиль
Проверяем:
Часть четвертая, финальная. Прорубаем окно в Европу
Готовим VPS
- left/rightsubnet = %dynamic — инструктирует Strongswan применять политики ко всем типам трафика между пирами
- В каждом из конфигов указан параметр rightrsasigkey. Без него попытка установки IKE SA всегда будет оканчиваться ошибкой IKE AUTH ERROR в логе, поскольку Strongswan не сможет подписать сообщение без знания открытой части RSA-ключа удаленного пира. Для получения открытых ключей мы можем воспользоваться openssl. На каждом из хостов (ipsecgw и RKN) выполняем sudo /usr/bin/openssl rsa -in /etc/letsencrypt/live/ipsecgw.example.com/privkey.pem -pubout > ~/ipsecgw.example.com.pem и sudo /usr/bin/openssl rsa -in /etc/letsencrypt/live/rkn.example.com/privkey.pem -pubout > ~/rkn.example.com.pem, после чего при помощи scp перекрестно копируем их между серверами в расположения, указаные в конфиге
под спойлером
Настройка NAT для IPSec
На этом можно и попрощаться, но, если вы попробуете пингануть любое устройства в сети с Москвы в Питер, то скорее всего этого у вас не получится. Как же так спросите вы? А я отвечу, это связано с тем что оба маршрутизатора имеют правила NAT (masquerade), которые изменяют адрес источника перед шифрованием пакета (это можно посмотреть на диаграмме прохождения пакетов предоставляемой производителем). Mikrotik не может зашифровать трафик, поскольку адрес источника не соответствует адресу указанному в конфигурации политики. Чтобы это исправить нужно настроить правило обхода для туннеля.
Делаем все как у меня, единственное во вкладке Actions выставите accept, просто скриншот этой строчки не стал делать. Замечу что данное правило должно стоять на первом месте так как они здесь обрабатываются сверху вниз.
На сегодня все, если будет вопросы задавайте их в нашей группе Телеграмм.
Phar
Phar: PHP Archive support | enabled |
---|---|
Phar EXT version | 2.0.2 |
Phar API version | 1.1.1 |
SVN revision | $Id: ba76a9b0e06d536a9b602c782e38e6826cb4ee02 $ |
Phar-based phar archives | enabled |
Tar-based phar archives | enabled |
ZIP-based phar archives | enabled |
gzip compression | enabled |
bzip2 compression | enabled |
OpenSSL support | enabled |
Phar based on pear/PHP_Archive, original concept by Davey Shafik.Phar fully realized by Gregory Beaver and Marcus Boerger.Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle. |
Directive | Local Value | Master Value |
---|---|---|
phar.cache_list | no value | no value |
phar.readonly | On | On |
phar.require_hash | On | On |
ionCube Loader
ionCube Loader developed by ionCube Ltd. Visit ioncube.com for latest Loaders and support. This Loader also includes features for real-time error reporting and malware protection. Visit ioncube24.com for more details. |
Loader version | 10.4.0 |
ionCube24 features | unconfigured |
Directive | Local Value | Master Value |
---|---|---|
ic24.api.log_msg_errors | ||
ic24.api.max_timeout | 7 | 7 |
ic24.api_access_key | ******** | ******** |
ic24.api_check_ip | 1 | 1 |
ic24.enable | ||
ic24.home_dir | no value | no value |
ic24.phperr.enable | auto | auto |
ic24.phperr.ignore | ||
ic24.sec.block_stdin | 1 | 1 |
ic24.sec.block_uploaded_files | 1 | 1 |
ic24.sec.enable | auto | auto |
ic24.sec.exclusion_key | ******** | ******** |
ic24.sec.initial_action | block | block |
ic24.sec.initial_cache_all | 1 | 1 |
ic24.sec.initial_notify | always | always |
ic24.sec.initial_state | 1 | 1 |
ic24.sec.stop_on_error | 1 | 1 |
ic24.sec.trusted_include_paths | ******** | ******** |
ic24.slt | 7 | 7 |
ic24.update_domains_retry_interval | 30 | 30 |
ioncube.loader.encoded_paths | no value | no value |
Zend OPcache
Opcode Caching | Up and Running |
Optimization | Enabled |
SHM Cache | Enabled |
File Cache | Disabled |
Startup | OK |
Shared memory model | mmap |
Cache hits | 430743 |
Cache misses | 104 |
Used memory | 20555960 |
Free memory | 113661768 |
Wasted memory | |
Interned Strings Used memory | 716392 |
Interned Strings Free memory | 7672216 |
Cached scripts | 104 |
Cached keys | 146 |
Max keys | 16229 |
OOM restarts | |
Hash keys restarts | |
Manual restarts |
Directive | Local Value | Master Value |
---|---|---|
opcache.blacklist_filename | no value | no value |
opcache.consistency_checks | ||
opcache.dups_fix | Off | Off |
opcache.enable | On | On |
opcache.enable_cli | Off | Off |
opcache.enable_file_override | Off | Off |
opcache.error_log | no value | no value |
opcache.file_cache | no value | no value |
opcache.file_cache_consistency_checks | 1 | 1 |
opcache.file_cache_only | ||
opcache.file_update_protection | 2 | 2 |
opcache.force_restart_timeout | 180 | 180 |
opcache.huge_code_pages | Off | Off |
opcache.inherited_hack | On | On |
opcache.interned_strings_buffer | 8 | 8 |
opcache.lockfile_path | /tmp | /tmp |
opcache.log_verbosity_level | 1 | 1 |
opcache.max_accelerated_files | 10000 | 10000 |
opcache.max_file_size | ||
opcache.max_wasted_percentage | 5 | 5 |
opcache.memory_consumption | 128 | 128 |
opcache.opt_debug_level | ||
opcache.optimization_level | 0x7FFFBFFF | 0x7FFFBFFF |
opcache.preferred_memory_model | no value | no value |
opcache.protect_memory | ||
opcache.restrict_api | no value | no value |
opcache.revalidate_freq | 2 | 2 |
opcache.revalidate_path | Off | Off |
opcache.save_comments | 1 | 1 |
opcache.use_cwd | On | On |
opcache.validate_permission | Off | Off |
opcache.validate_root | Off | Off |
opcache.validate_timestamps | On | On |
mbstring
Multibyte Support | enabled |
Multibyte string engine | libmbfl |
HTTP input encoding translation | disabled |
libmbfl version | 1.3.2 |
oniguruma version | 6.3.0 |
mbstring extension makes use of «streamable kanji code filter and converter», which is distributed under the GNU Lesser General Public License version 2.1. |
---|
Multibyte (japanese) regex support | enabled |
Multibyte regex (oniguruma) backtrack check | On |
Multibyte regex (oniguruma) version | 6.3.0 |
Directive | Local Value | Master Value |
---|---|---|
mbstring.detect_order | no value | no value |
mbstring.encoding_translation | Off | Off |
mbstring.func_overload | ||
mbstring.http_input | no value | no value |
mbstring.http_output | no value | no value |
mbstring.http_output_conv_mimetypes | ^(text/|application/xhtml\+xml) | ^(text/|application/xhtml\+xml) |
mbstring.internal_encoding | no value | no value |
mbstring.language | neutral | neutral |
mbstring.strict_detection | Off | Off |
mbstring.substitute_character | no value | no value |
exif
EXIF Support | enabled |
EXIF Version | 7.2.32 |
Supported EXIF Version | 0220 |
Supported filetypes | JPEG, TIFF |
Multibyte decoding support using mbstring | enabled |
Extended EXIF tag formats | Canon, Casio, Fujifilm, Nikon, Olympus, Samsung, Panasonic, DJI, Sony, Pentax, Minolta, Sigma, Foveon, Kyocera, Ricoh, AGFA, Epson |
Directive | Local Value | Master Value |
---|---|---|
exif.decode_jis_intel | JIS | JIS |
exif.decode_jis_motorola | JIS | JIS |
exif.decode_unicode_intel | UCS-2LE | UCS-2LE |
exif.decode_unicode_motorola | UCS-2BE | UCS-2BE |
exif.encode_jis | no value | no value |
exif.encode_unicode | ISO-8859-15 | ISO-8859-15 |
session
Session Support | enabled |
Registered save handlers | files user |
Registered serializer handlers | php_serialize php php_binary wddx |
Directive | Local Value | Master Value |
---|---|---|
session.auto_start | Off | Off |
session.cache_expire | 180 | 180 |
session.cache_limiter | nocache | nocache |
session.cookie_domain | no value | no value |
session.cookie_httponly | no value | no value |
session.cookie_lifetime | ||
session.cookie_path | ||
session.cookie_secure | ||
session.gc_divisor | 1000 | 1000 |
session.gc_maxlifetime | 1440 | 1440 |
session.gc_probability | 1 | 1 |
session.lazy_write | On | On |
session.name | PHPSESSID | PHPSESSID |
session.referer_check | no value | no value |
session.save_handler | files | files |
session.save_path | /opt/alt/php72/var/lib/php/session | /opt/alt/php72/var/lib/php/session |
session.serialize_handler | php | php |
session.sid_bits_per_character | 4 | 4 |
session.sid_length | 32 | 32 |
session.upload_progress.cleanup | On | On |
session.upload_progress.enabled | On | On |
session.upload_progress.freq | 1% | 1% |
session.upload_progress.min_freq | 1 | 1 |
session.upload_progress.name | PHP_SESSION_UPLOAD_PROGRESS | PHP_SESSION_UPLOAD_PROGRESS |
session.upload_progress.prefix | upload_progress_ | upload_progress_ |
session.use_cookies | 1 | 1 |
session.use_only_cookies | 1 | 1 |
session.use_strict_mode | ||
session.use_trans_sid |
Преимущества прокси
- В условиях реальной сети с потерями практическая скорость прокси зачастую выше, чем у VPN-решений. Это вызвано тем, что при проксировании TCP-соединений ретрансмиты на участках клиент-прокси и прокси-целевой узел происходят независимо. Прокси имеет свои TCP-буферы и кратковременные задержки ввода-вывода в обе стороны не сказываются на передаче с противоположной стороны. VPN же работает только на сетевом уровне (IP) и потерянные сегменты TCP будут пересылаться по всей длине пути от VPN-клиента до целевого сервера.
- Гибкость. Проще настроить избирательное проксирование. Использование прокси можно ограничить конкретными приложениями, в браузере — конкретными доменами. Можно использовать несколько разных прокси для разных адресов назначения одновременно.
- Трудно обнаружить с помощью DPI, в том числе DPI осуществляющими активные пробы. Однако, для этого необходима некоторая донастройка. В случае с прокси через TLS, такое соединение можно выдать за обычное HTTPS-соединение. В случае с VPN факт его использования виден даже пассивному DPI. Даже если это Wireguard.
- Нет целого класса проблем с внезапно прервавшимся VPN-соединением. В худшем сценарии VPN-соединение может прерваться и пользователь не заметит, что его трафик уже не защищён и/или он уже работает со своего «домашнего» IP-адреса. В случае с прокси такие проблемы исключены.
- Не нужны высокие привилегии в системе ни для клиента прокси, ни для сервера. Это может быть весьма полезно в случаях, когда у Вас нет высоких прав в системе.