Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Последняя версия Следующая версия справа и слева | ||
wiki:stunnel [2014/12/30 21:33] [Настройка Stunnel на клиенте] |
wiki:stunnel [2016/02/20 23:28] [Настройка Stunnel на сервере] |
||
---|---|---|---|
Строка 39: | Строка 39: | ||
Все эти обратные порты открываются только для связи с другим портом (**netstat** такие порты отмечает статусом ESTABLISHED) и они не являются слушающими (LISTEN статус в выводе **netstat**) соединение (исходящие) от такого порта файерволом не блокируется. | Все эти обратные порты открываются только для связи с другим портом (**netstat** такие порты отмечает статусом ESTABLISHED) и они не являются слушающими (LISTEN статус в выводе **netstat**) соединение (исходящие) от такого порта файерволом не блокируется. | ||
- | И так, с механизмом встраивания **stunnel** в работу клиент-серверного приложения мы разобрались (возможно даже излишне глубоко копали, "от печки"). Посмотрим теперь как он устанавливается и настраивается. | + | И так, с механизмом встраивания **stunnel** в работу клиент-серверного приложения мы разобрались (возможно даже излишне глубоко - копали, "от печки"). Посмотрим теперь как он устанавливается и настраивается. |
===== Установка Stunnel ===== | ===== Установка Stunnel ===== | ||
Строка 70: | Строка 70: | ||
<code> | <code> | ||
[<service1>] | [<service1>] | ||
- | # Укажем, что это конфигурация серверной стороны (в принципе это не обязательно - stunel по умолчанию считает, что она работает как сервер) | + | # Укажем, что это конфигурация серверной стороны (в принципе это не обязательно - stunel по умолчанию считает, что работает как сервер) |
client = no | client = no | ||
accept = <ex.t.ser.ver>:<s2_port> | accept = <ex.t.ser.ver>:<s2_port> | ||
Строка 88: | Строка 88: | ||
</code> | </code> | ||
Созданный файл конфигурации закрываем и сохраняем.\\ | Созданный файл конфигурации закрываем и сохраняем.\\ | ||
- | Кроме конфигурации **stunnel** нужно разрешить. Для этого в файле **/etc/default/stunnel** нужно заменить | + | Кроме настройки конфигурационных файлов, нужно еще разрешить запуск **stunnel**. Для этого в файле **/etc/default/stunnel** нужно заменить |
<code> | <code> | ||
ENABLED=0 | ENABLED=0 | ||
Строка 158: | Строка 158: | ||
===== Особенности настроек приложений при работе через stunnel ===== | ===== Особенности настроек приложений при работе через stunnel ===== | ||
Нужно понимать, что указание в строке подключения клиента **localhost** вместо IP адреса или имени сервера может оказать влияние на работу сервиса.\\ | Нужно понимать, что указание в строке подключения клиента **localhost** вместо IP адреса или имени сервера может оказать влияние на работу сервиса.\\ | ||
- | К примеру, если вы решили обернуть трафик [[wiki:openvpn|OpenVPN]] в stunnel (довольно популярное решение при маскировке openVPN соединения под https трафик, для обмана умных файерволов), то в маршрутизацию клиента (**route**) при установленном соединении с OpnVPN сервером будет записан маршрут не на внешний сервер, а на localhost (ведь соединение было с localhost а не с удаленным сервером), что приведет к практически полной неработоспособности сети на клиенте. | + | |
- | Что бы исправить эту ситуацию, правильный маршрут нужно прописать в конфигурационный файл OpenVPN: | + | К примеру, вы решили обернуть трафик [[wiki:openvpn|OpenVPN]] в stunnel (довольно популярное решение при маскировке openVPN соединения под https трафик, для обмана умных файерволов). Для этого, в конфигурационном файле OpenVPN, строку с указанием адреса и порта сервера |
- | <code> | + | |
- | route аа.bb.cc.dd 255.255.255.255 net_gateway | + | |
- | </code> | + | |
- | здесь аа.bb.cc.dd - IP адрес внешнего сервера. | + | |
- | При этом строка соединения | + | |
<code> | <code> | ||
remote аа.bb.cc.dd 1194 | remote аа.bb.cc.dd 1194 | ||
</code> | </code> | ||
- | заменяется на соединение с localhost: | + | заменяем на соединение с localhost: |
<code> | <code> | ||
remote localhost <s1_port> | remote localhost <s1_port> | ||
</code> | </code> | ||
+ | |||
+ | Но это приведет к тому, что в маршрутизацию клиента (**ip route**), при установлении соединения с OpnVPN сервером, будет записан маршрут не на внешний сервер, а на localhost (ведь соединение было с localhost, а не с удаленным сервером), что приведет к практически полной неработоспособности сети на клиенте (из за возникшего цикла в правилах маршрутизации). | ||
+ | |||
+ | Что бы исправить эту ситуацию нужно "вручную" прописать правильный маршрут, а неверный маршрут - удалить. Для этого в конфигурационный файл OpenVPN добавляем строки: | ||
+ | <code> | ||
+ | route аа.bb.cc.dd 255.255.255.255 net_gateway | ||
+ | route-up "/bin/ip route del 127.0.0.1" | ||
+ | </code> | ||
+ | здесь аа.bb.cc.dd - IP адрес внешнего сервера. | ||
===== Ссылки ===== | ===== Ссылки ===== | ||
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ssl-tunnel-using-stunnel-on-ubuntu | https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ssl-tunnel-using-stunnel-on-ubuntu |