«Debian & intel GM965/GL960 Integrated Graphics Controller» и «Debian сертификаты openvpn»: разница между страницами

Материал из support.qbpro.ru
(Различия между страницами)
imported>Vix
(Новая страница: «Я являюсь "счастливым" обладателем интегрированного видеоадаптера GM965/GL960 Integrated Graphics Contro…»)
 
imported>Vix
Нет описания правки
 
Строка 1: Строка 1:
Я являюсь "счастливым" обладателем интегрированного видеоадаптера GM965/GL960 Integrated Graphics Controller, а так как я пользуюсь только системой Linux на своем ноутбуке, то крайне болезненно принимаю некоторые глюки этого поделия когда приходится например обновлять ПО, в данный момент установил ядро версии 3.6.9, и начались странности..
Описаний установки и настройки системы Open VPN в интернете очень много, но как правило все рекомендации сводятся или к общему описанию того как должна быть организована эта система или пошаговая настройка какого то конкретного дистрибутива Linux или BSD зачастую без толковых описаний своих действий.
периодически при непонятных но вычисляемых обстоятельствах ноут уходит в черный экран, при этом все продолжает работать, но изображение недоступно насмерть..
  Все что здесь будет описано выполнялось на '''Linux Debian Squeeze'''. Все действия я буду подробно описывать, что и зачем выполняется,
прикол в том что вызывает такое странное поведение именно тяжелые программы, например все от mozilla, иногда libreoffice, было и от virtualbox..
  в случае если кто то воспользуется этой статьей для настройки на другом дистрибутиве '''Linux''' или операционной системе.
при очередном таком глюке, вслепую перешел в консоль и сделал dmesg|tail > err.txt
* Первый этап это установка необходимых пакетов, в моем случае из стандартного репозитария: '''openvpn и openvpn-blacklist''', с подтверждением всех необходимых зависимостей которые запросит программа '''aptitude'''.
после перезагрузки увидел это:
* Вторым этапом установка программы '''tinyca''', с помощью которой мы будем генерировать ключи и сертификаты для своего сервера и клиентов, так же я объясню почему предпочтительнее  использование именно этой программы, а не встроенных средств пакета '''openvpn'''.
* В каталоге /etc/openvpn/ создаем каталог easy-rsa а в нем keys (тут будут находиться наши ключи):
  mkdir /etc/openvpn/easy-rsa
  mkdir /etc/openvpn/easy-rsa/keys
* Генерируем 2048 битный ключ с помощью алгоритма '''Диффи Хеллмана''' в /etc/openvpn/easy-rsa/keys
  cd  /etc/openvpn/easy-rsa/keys
  openssl dhparam -out dh2048.pem 2048
* Следующим шагом будет генерация ключей с помощью  '''tinyca''', запускаем программу:
[[Файл:Tiny1.png]]
* Пример заполнения полей для создания открытого ключа:
'''tinyca - генерация основного сертификата'''
[[Файл:Tiny2.png]]
* Пример создания сертификатов для сервера и клиента:
'''tinyca - создание сертификатов для сервера и клиента'''
[[Файл:Tiny5.png]]
* Пример экспорта ключа для сервера и клиента - клик правой кнопкой мышки на сертификат или иконку вверху '''export''':
'''tinyca - экспорт сертификатов в формате PKCS#12'''
[[Файл:Tiny3.png]]
*'''tinyca - экспорт сертификатов пароль основного ключа!'''
[[Файл:Tiny4.png]]
* Теперь копируем ключ сервера в /etc/openvpn/easy-rsa/keys и настраиваем /etc/openvpn/server.conf по примеру:
  mode server
  tls-server
  daemon
  local 83.221.170.103
  port 1194
  proto tcp-server
  # - используемый тип устройства и номер
  dev tap0
  #указываем файл с ключем сервера
  pkcs12 /etc/openvpn/easy-rsa/keys/server_crt.p12
  #указываем файл Диффи Хельман
  dh /etc/openvpn/easy-rsa/keys/dh2048.pem
  #задаем IP-адрес сервера и маску подсети
  ifconfig 10.10.10.1 255.255.255.0
  #### clients ip
  client-config-dir ccd
  push "route 10.10.10.0 255.255.255.0 10.10.10.1"
  keepalive 10 120 # пинг каждые 10 секунд для поддержания канала связи
  client-to-client
  #########
  #auth MD5
  # включаем шифрацию пакетов
  cipher BF-CBC
  keepalive 10 120
  # сжатие трафика
  comp-lzo
  # максимум клиентов
  max-clients 100
  # Не перечитывать ключи после получения
  # SIGUSR1 или ping-restart
  persist-key
  # Не закрывать и переоткрывать TUN\TAP
  # устройство, после получения
  # SIGUSR1 или ping-restart
  persist-tun
  # логгирование (не забудьте создать эту дирректорию /var/log/openvpn/)
  status /var/log/openvpn/openvpn-status.log
  log /var/log/openvpn/openvpn.log
  # Уровень информации для отладки
  verb 5
* Выполняем команду разрешающую dh 2048
  touch /usr/share/openssl-blacklist/blacklist.RSA-2048


[drm:i915_hangcheck_hung] *ERROR* Hangcheck timer elapsed... GPU hung
* Разрешаем трансляцию ip адресов openvpn
[drm:i915_reset] *ERROR* Failed to reset chip.
    mcedit /etc/sysctl.conf
.. гм..
сделал запрос на модуль: modinfo i915


parm:          invert_brightness:Invert backlight brightness (-1 force normal, 0 machine defaults, 1 force inversion), please
    net.ipv4.conf.default.rp_filter=1
report PCI device ID, subsystem vendor and subsystem device ID to dri-devel@lists.freedesktop.org, if your machine needs it.
    net.ipv4.conf.all.rp_filter=1
  It will  then be included in an upcoming module version. (int)
 
  parm:          modeset:Use kernel modesetting [KMS] (0=DRM_I915_KMS from .config, 1=on, -1=force vga console preference [default])
* Фиксируем размер MTU не больше основного канала..
  (int)
  echo "1">/proc/sys/net/ipv4/ip_no_pmtu_disc
  parm:          fbpercrtc:int
 
  parm:          panel_ignore_lid:Override lid status (0=autodetect [default], 1=lid open, -1=lid closed) (int)
* Теперь необходимо прописать то, что будут получать клиенты по dhcp, когда пройдет авторизация, файлы должны лежать в /etc/openvpn/ccd
  parm:          powersave:Enable powersavings, fbc, downclocking, etc. (default: true) (int)
  echo >klient.crt
  parm:          semaphores:Use semaphores for inter-ring sync (default: -1 (use per-chip defaults)) (int)
  mcedit /etc/openvpn/ccd/klient.crt (имя файла - это имя common name сертификата в программе '''tinyca'''; по нему и происходит присвоение...)
  parm:          i915_enable_rc6:Enable power-saving render C-state 6. Different stages can be selected via bitmask values
  ### далее настройки в файле klient.crt
  (0 = disable; 1 = enable rc6; 2 = enable deep rc6; 4 = enable deepest rc6). For example, 3 would enable rc6 and deep rc6, and 7
  # приcваиваем ip-адрес
  would enable everything. default: -1 (use per-chip default) (int)
  ifconfig-push 10.10.10.11 255.255.255.0
  parm:          i915_enable_fbc:Enable frame buffer compression for power savings (default: -1 (use per-chip default)) (int)
  # присваиваем наш внутренний dns server
  parm:          lvds_downclock:Use panel (LVDS/eDP) downclocking for power savings (default: false) (int)
  push dhcp-option DNS 10.10.10.1
  parm:          lvds_channel_mode:Specify LVDS channel mode (0=probe BIOS [default], 1=single-channel, 2=dual-channel) (int)
  # присваиваем dns domain suffix - для win машин очень актуально
  parm:          lvds_use_ssc:Use Spread Spectrum Clock with panels [LVDS/eDP] (default: auto from VBT) (int)
  push dhcp-option DOMAIN org
  parm:          vbt_sdvo_panel_type:Override/Ignore selection of SDVO panel mode in the VBT (-2=ignore, -1=auto [default],
  # роутинг на сети центрального офиса
  index in VBT BIOS table) (int)
  push "route 10.10.10.0 255.255.255.0 10.10.10.1"
  parm:          reset:Attempt GPU resets (default: true) (bool)
  # если необходимо то и на другие сети..
  parm:          enable_hangcheck:Periodically check GPU activity for detecting hangs. WARNING: Disabling this can cause system
  push "route 192.168.5.0 255.255.255.0 10.10.10.1"
  wide hangs. (default: true) (bool)
 
  parm:          i915_enable_ppgtt:Enable PPGTT (default: true) (int)
* теперь запуск сервера в работу:
............. из всего этого богатства опций самые интересные:
    /etc/init.d/openvpn start
  1. lvds_channel_mode:
* следующий этап, настройка клиента openvpn.
  2. reset
 
  3. enable_hangcheck
'''Пример конфигурационного файла клиента:'''
  4. modeset:
 
немного "поигравшись" получил стабильное решение только так:
client
добавляем или создаем в /etc/modprobe/i915kms.conf
# Use the same setting as you are using on
  options i915 modeset=1
# the server.
  options i915 enable_hangcheck=1
  # On most systems, the VPN will not function
  options i915 reset=0
  # unless you partially or fully disable
  options lvds_channel_mode=1
# the firewall for the TUN/TAP interface.
.. обязательно качаем самую последнюю версию libdrm-intel1
  ##;dev tap
качаем тут: http://intellinuxgraphics.org/download.html
dev tap0
нас интересует : http://cgit.freedesktop.org/mesa/drm/
# Are we connecting to a TCP or
тянем что-то типа libdrm-2.4.40.tar.gz
# UDP server?  Use the same setting as
распаковываем где нибудь..
# on the server.
в распакованном каталоге делаем autogen.sh
  #proto udp
следом configure.sh
proto tcp
если просит чего, доустанавливаем...
  # The hostname/IP and port of the server.
после делаем make -j3 (компиляция в 3 потока, у кого мощнее можно больше по числу ядер процессора)
  # You can have multiple remote entries
следом ставим пакет если его нет : apt-get install checkinstall
  # to load balance between the servers.
теперь в каталоге даем команду: checkinstall -D
  #remote my-server-1 1194
отвечаем утвердительно, и везде названия вместо libdrm меняем на libdrm-intel1
  ##;remote my-server-2 1194
затем запускаем сборку deb пакета нажимая enter ..
remote 83.221.170.103 1194
теперь ставим пакет, тем самым обновляемся в данном случае до libdrm-intel1-2.4.40
  # Keep trying indefinitely to resolve the
советую также обновить xserver-xorg-video-intel до версии 2.2.15.0-3 из backports
  # host name of the OpenVPN server. Very useful
.. после этого черный экран у меня перестал появляться..
  # on machines which are not permanently connected
я специально тут написал, так как заметил, что весь интернет обсуждает эту проблему, но к сожалению мало кто дает решение этого..
  # to the internet such as laptops.
resolv-retry infinite
# Most clients don't need to bind to
# a specific local port number.
nobind
# Downgrade privileges after initialization (non-Windows only)
  #user nobody
#group nobody
# Try to preserve some state across restarts.
persist-key
persist-tun
  # If you are connecting through an
  # HTTP proxy to reach the actual OpenVPN
  # server, put the proxy server/IP and
  # port number here.  See the man page
# if your proxy server requires
# authentication.
#;http-proxy-retry # retry on connection failures
#;http-proxy [proxy server] [proxy port #]
  # Wireless networks often produce a lot
  # of duplicate packets. Set this flag
  # to silence duplicate packet warnings.
  #;mute-replay-warnings
  # SSL/TLS parms.
  # See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
  #ca ca.crt
  #cert client.crt
  #key client.key
  dh dh2048.pem
### - сертификат клиента!
pkcs12 client-crt.p12
  # Verify server certificate by checking
  # that the certicate has the nsCertType
  # field set to "server".  This is an
  # important precaution to protect against
# a potential attack discussed here:
http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server". The build-key-server
# script in the easy-rsa folder will do this.
ns-cert-type server
  # If a tls-auth key is used on the server
# then every client must also have the key.
#;tls-auth ta.key 1
# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
#;cipher x
#cipher AES-128-CBC
# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
comp-lzo
# Set log file verbosity.
verb 4
# Silence repeating messages
mute 20
 
и на последок, канал внутри канала необходимо также настраивать, например если у вас MTU на внешнем 1500,
значит внутренний канал VPN MTU не должен быть больше, а рекомендуемый параметр в данном случае 1496 или 1442
выставляется на клинете параметром '''tun-mtu'''
  tun-mtu 1496
 
опыт показывает, что при соединении по 3G MTU канала как правило не выше 1400, чаще 962 - 1276
соответственно берем параметр внешнего канала и отнимаем 62.
полученное значение присваиваем подключаемому клиенту.

Версия от 23:50, 22 сентября 2013

Описаний установки и настройки системы Open VPN в интернете очень много, но как правило все рекомендации сводятся или к общему описанию того как должна быть организована эта система или пошаговая настройка какого то конкретного дистрибутива Linux или BSD зачастую без толковых описаний своих действий.

  Все что здесь будет описано выполнялось на Linux Debian Squeeze. Все действия я буду подробно описывать, что и зачем выполняется,
  в случае если кто то воспользуется этой статьей для настройки на другом дистрибутиве Linux или операционной системе.
  • Первый этап это установка необходимых пакетов, в моем случае из стандартного репозитария: openvpn и openvpn-blacklist, с подтверждением всех необходимых зависимостей которые запросит программа aptitude.
  • Вторым этапом установка программы tinyca, с помощью которой мы будем генерировать ключи и сертификаты для своего сервера и клиентов, так же я объясню почему предпочтительнее использование именно этой программы, а не встроенных средств пакета openvpn.
  • В каталоге /etc/openvpn/ создаем каталог easy-rsa а в нем keys (тут будут находиться наши ключи):
  mkdir /etc/openvpn/easy-rsa
  mkdir /etc/openvpn/easy-rsa/keys
  • Генерируем 2048 битный ключ с помощью алгоритма Диффи Хеллмана в /etc/openvpn/easy-rsa/keys
  cd  /etc/openvpn/easy-rsa/keys
  openssl dhparam -out dh2048.pem 2048
  • Следующим шагом будет генерация ключей с помощью tinyca, запускаем программу:

Tiny1.png

  • Пример заполнения полей для создания открытого ключа:

tinyca - генерация основного сертификата Tiny2.png

  • Пример создания сертификатов для сервера и клиента:

tinyca - создание сертификатов для сервера и клиента Tiny5.png

  • Пример экспорта ключа для сервера и клиента - клик правой кнопкой мышки на сертификат или иконку вверху export:

tinyca - экспорт сертификатов в формате PKCS#12 Tiny3.png

  • tinyca - экспорт сертификатов пароль основного ключа!

Tiny4.png

  • Теперь копируем ключ сервера в /etc/openvpn/easy-rsa/keys и настраиваем /etc/openvpn/server.conf по примеру:
  mode server
  tls-server
  daemon
  local 83.221.170.103
  port 1194
  proto tcp-server
  # - используемый тип устройства и номер
  dev tap0
  #указываем файл с ключем сервера
  pkcs12 /etc/openvpn/easy-rsa/keys/server_crt.p12
  #указываем файл Диффи Хельман
  dh /etc/openvpn/easy-rsa/keys/dh2048.pem
  #задаем IP-адрес сервера и маску подсети
  ifconfig 10.10.10.1 255.255.255.0
  #### clients ip
  client-config-dir ccd
  push "route 10.10.10.0 255.255.255.0 10.10.10.1"
  keepalive 10 120 # пинг каждые 10 секунд для поддержания канала связи
  client-to-client
  #########
  #auth MD5
  # включаем шифрацию пакетов
  cipher BF-CBC
  keepalive 10 120
  # сжатие трафика
  comp-lzo
  # максимум клиентов
  max-clients 100
  # Не перечитывать ключи после получения
  # SIGUSR1 или ping-restart
  persist-key
  # Не закрывать и переоткрывать TUN\TAP
  # устройство, после получения
  # SIGUSR1 или ping-restart
  persist-tun
  # логгирование (не забудьте создать эту дирректорию /var/log/openvpn/)
  status /var/log/openvpn/openvpn-status.log
  log /var/log/openvpn/openvpn.log
  # Уровень информации для отладки
  verb 5
  • Выполняем команду разрешающую dh 2048
  touch /usr/share/openssl-blacklist/blacklist.RSA-2048
  • Разрешаем трансляцию ip адресов openvpn
   mcedit /etc/sysctl.conf
   net.ipv4.conf.default.rp_filter=1
   net.ipv4.conf.all.rp_filter=1
  • Фиксируем размер MTU не больше основного канала..
  echo "1">/proc/sys/net/ipv4/ip_no_pmtu_disc
  • Теперь необходимо прописать то, что будут получать клиенты по dhcp, когда пройдет авторизация, файлы должны лежать в /etc/openvpn/ccd
  echo >klient.crt
  mcedit /etc/openvpn/ccd/klient.crt (имя файла - это имя common name сертификата в программе tinyca; по нему и происходит присвоение...)
  ### далее настройки в файле klient.crt
  # приcваиваем ip-адрес
  ifconfig-push 10.10.10.11 255.255.255.0
  # присваиваем наш внутренний dns server
  push dhcp-option DNS 10.10.10.1
  # присваиваем dns domain suffix - для win машин очень актуально
  push dhcp-option DOMAIN org
  # роутинг на сети центрального офиса
  push "route 10.10.10.0 255.255.255.0 10.10.10.1"
  # если необходимо то и на другие сети..
  push "route 192.168.5.0 255.255.255.0 10.10.10.1"
  • теперь запуск сервера в работу:
   /etc/init.d/openvpn start
  • следующий этап, настройка клиента openvpn.

Пример конфигурационного файла клиента:

client
# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
##;dev tap
dev tap0
# Are we connecting to a TCP or
# UDP server?  Use the same setting as
# on the server.
#proto udp
proto tcp 
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
#remote my-server-1 1194
##;remote my-server-2 1194
remote 83.221.170.103 1194
# Keep trying indefinitely to resolve the
# host name of the OpenVPN server.  Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite
# Most clients don't need to bind to
# a specific local port number.
nobind
# Downgrade privileges after initialization (non-Windows only)
#user nobody
#group nobody
# Try to preserve some state across restarts.
persist-key
persist-tun
# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here.  See the man page
# if your proxy server requires
# authentication.
#;http-proxy-retry # retry on connection failures
#;http-proxy [proxy server] [proxy port #]
# Wireless networks often produce a lot
# of duplicate packets.  Set this flag
# to silence duplicate packet warnings.
#;mute-replay-warnings
# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key
dh dh2048.pem
### - сертификат клиента!
pkcs12 client-crt.p12
# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server".  This is an
# important precaution to protect against
# a potential attack discussed here:
#  http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server".  The build-key-server
# script in the easy-rsa folder will do this.
ns-cert-type server
# If a tls-auth key is used on the server
# then every client must also have the key.
#;tls-auth ta.key 1
# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
#;cipher x
#cipher AES-128-CBC
# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
comp-lzo
# Set log file verbosity.
verb 4
# Silence repeating messages
mute 20

и на последок, канал внутри канала необходимо также настраивать, например если у вас MTU на внешнем 1500, значит внутренний канал VPN MTU не должен быть больше, а рекомендуемый параметр в данном случае 1496 или 1442 выставляется на клинете параметром tun-mtu

tun-mtu 1496

опыт показывает, что при соединении по 3G MTU канала как правило не выше 1400, чаще 962 - 1276 соответственно берем параметр внешнего канала и отнимаем 62. полученное значение присваиваем подключаемому клиенту.