Шукати в цьому блозі

пʼятниця, 9 вересня 2022 р.

Налаштування OpenVPN-сервера на Mikrotik

Перше зауваження, OpenVPN доволі чутливий до розходження часу між клієнтом та сервером, тому, перед тим як почати створювати сертифікати та налаштовувати OpenVPN-сервер, давайте спочатку змусимо наш роутер правильно виставляти і синхронізувати час. Не всі провайдери віддають по DHCP інформацію про свої NTP-сервера (якщо взагалі їх мають), тому будемо користуватися публічними серверами і намагатися час від часу оновлювати інформацію про них.
/system clock set time-zone-name=Europe/Kiev
/system script add dont-require-permissions=no name=NTPupdate owner=admin policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive source=":global SYSname [/system identity get name];\r\
    \n\r\
    \n# NTP pools to use (check www.pool.ntp.org)\r\
    \n:global SYSntpa \"0.ua.pool.ntp.org\";\r\
    \n:global SYSntpb \"1.ua.pool.ntp.org\";\r\
    \n\r\
    \nping \$SYSntpa count=2 do-not-fragment;\r\
    \nping \$SYSntpb count=2 do-not-fragment;\r\
    \n\r\
    \n# Resolve the two ntp pool hostnames\r\
    \n:local ntpipa [:resolve \$SYSntpa];\r\
    \n:local ntpipb [:resolve \$SYSntpb];\r\
    \n\r\
    \n# Get the current settings\r\
    \n:local ntpcura [/system ntp client get primary-ntp];\r\
    \n:local ntpcurb [/system ntp client get secondary-ntp];\r\
    \n\r\
    \n# Define a variable so we know if anything's changed.\r\
    \n:local changea 0;\r\
    \n:local changeb 0;\r\
    \n\r\
    \n# Change primary if required\r\
    \n:if (\$ntpipa != \$ntpcura) do={\r\
    \n    :put (\"Old: \" . \$ntpcura . \" New: \" . \$ntpipa);\r\
    \n    :put \"Changing primary NTP\";\r\
    \n    /system ntp client set primary-ntp=\"\$ntpipa\";\r\
    \n    :set changea 1;\r\
    \n    }\r\
    \n\r\
    \n# Change secondary if required\r\
    \n:if (\$ntpipb != \$ntpcurb) do={\r\
    \n    :put (\"Old: \" . \$ntpcurb . \" New: \" . \$ntpipb);\r\
    \n    :put \"Changing secondary NTP\";\r\
    \n    /system ntp client set secondary-ntp=\"\$ntpipb\";\r\
    \n    :set changeb 1;\r\
    \n    }\r\
    \n"
/system scheduler add comment="Check and set NTP servers" interval=12h name=NTPupdate on-event="/system script run NTPupdate\r\
    \n" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=jan/01/1970 start-time=00:00:00
Все! Тепер ми знаємо кунг-фу… тобто тепер наш роутер має коректний час. В принципі такі налаштування бажано зробити як на роутері з OpenVPN-сервером так і з OpenVPN-клієнтом.

Тепер давайте згенеруємо та підпишемо сертифікати.

Створимо корневий сертифікат нашого "сертифікаційного центру".

/certificate add name=ca country="UA" state="AI" locality="Irpin" organization="OSBB" unit="Head" common-name="ca" key-size=8192 days-valid=3650 key-usage=crl-sign,key-cert-sign
/certificate sign ca
Тепер створимо сертифікат та закритий ключ для OpenVPN-сервера.
/certificate add name=ovpn-server country="UA" state="AI" locality="Irpin" organization="OSBB" unit="OpenVPN-server" common-name="ovpn-server" key-size=4096 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server
/certificate sign ovpn-server ca="ca"
Ну й створюємо клієнтський сертифікат.
/certificate add name=ovpn-muter country="UA" state="AI" locality="Kyiv" organization="Muter" unit="OpenVPN-client-00" common-name="ovpn-muter" key-size=2048 days-valid=3650 key-usage=tls-client
/certificate sign ovpn-muter ca="ca"
Ну от, корньовий сертифікат, сертифікат OpenVPN-сервера та OpenVPN-клієнта згенеровано. Подивимося, що у нас вийшло:
/certificate print terse 
 0 KL A  T name=ca digest-algorithm=sha256 key-type=rsa country=UA state=AI locality=Irpin organization=OSBB unit=Head common-name=ca key-size=8192 subject-alt-name="" days-valid=3650 trusted=yes key-usage=key-cert-sign,crl-sign serial-number=251F3D523
8145BF4 fingerprint=58d9ff1808abbd38019c2e1b1d4b1f5c71a24d41fd6fc0e7b031661e0097e0aa akid="" skid=31c7dab19f80c4fa884d5efb9298a45e7de4d8cc invalid-before=sep/09/2022 13:58:13 invalid-after=sep/06/2032 13:58:13 expires-after=521w2d23h48m56s 
 1 K   I   name=ovpn-server digest-algorithm=sha256 key-type=rsa country=UA state=AI locality=Irpin organization=OSBB unit=OpenVPN-server common-name=ovpn-server key-size=4096 subject-alt-name="" days-valid=3650 trusted=no key-usage=digital-signature,k
ey-encipherment,tls-server ca=ca serial-number=3EDCD88C2647E3F4 fingerprint=0554fd7ec66f744918a362350ab9bebeb715ccb0e7d425f87ec1b0b398a1b069 akid=31c7dab19f80c4fa884d5efb9298a45e7de4d8cc skid=4bf227acb26304896949a77468a438dceac2222f invalid-before=sep/
09/2022 14:01:49 invalid-after=sep/06/2032 14:01:49 expires-after=521w2d23h52m32s 
 2 K   I   name=ovpn-muter digest-algorithm=sha256 key-type=rsa country=UA state=AI locality=Kyiv organization=Muter unit=OpenVPN-client-00 common-name=ovpn-muter key-size=2048 subject-alt-name="" days-valid=3650 trusted=no key-usage=tls-client ca=ca s
erial-number=4FBA81F2BB4BB3C4 fingerprint=3f8eef1079b14c1d81478f22263f382ab10f21ccc5fa010d0443aa019ee7a2b0 akid=31c7dab19f80c4fa884d5efb9298a45e7de4d8cc skid=d319e641924be93afe83eca512a1cb7ba7dbd879 invalid-before=sep/09/2022 14:07:30 invalid-after=sep
/06/2032 14:07:30 expires-after=521w2d23h58m13s
Експортуємо клієнтський сертифікат в файл формату PKCS12
/certificate export-certificate ovpn-muter type=pkcs12 export-passphrase="p@\$\$w0rd"
/file print terse where type=".p12 file" 
 0 name=cert_export_ovpn-muter.p12 type=.p12 file size=5.8KiB creation-time=sep/09/2022 14:12:52
Як бачимо, за допомогою RouterOS доволі легко керувати сертифікатами, не треба заморочуватися з будь-якими додатковими інструментами. Ну ok, поїхали далі.

Нарешті ж давайте налаштуємо OpenVPN-сервер.

І хоч OpenVPN-канали зв'язку можна налаштовувати як точка-точка, ми підемо більш "універсальним" шляхом і будемо використовувати пул адрес для наших клієнтів. Створення каналів точка-точка нехай залишиться як "домашнє завдання".

/ip pool add name=ovpn-pool ranges=192.168.120.98-192.168.120.110
/ppp profile add name=ovpn local-address=192.168.120.97 remote-address=ovpn-pool
/ppp aaa set accounting=yes
/interface ovpn-server server set auth=sha1 certificate=ovpn-server cipher=aes128,aes256 default-profile=ovpn enabled=yes netmask=28 require-client-certificate=yes
Додаємо користувачів
/ppp secret add name=muter password=PASSWORD profile=ovpn service=ovpn
Не забуваємо відкрити 1194/tcp на вхідних правилах файрволу.
/ip firewall filter add action=accept chain=input dst-port=1194 protocol=tcp
Ну от, ми налаштували OpenVPN-сервер на Mikrotik-у.

OpenVPN-сервер налаштовано, давайте тепер налаштуємо OpenVPN-клієнта.

Для початку перенесемо експортований файл сертифікату cert_export_ovpn-muter.p12 на клієнтський роутер.

Імпортуємо сертифікат.

/certificate import file-name=cert_export_ovpn-muter.p12 passphrase="p@\$\$w0rd"
     certificates-imported: 2
     private-keys-imported: 1
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0
  /certificate print terse 
 0 K     T name=cert_export_ovpn-muter.p12_0 issuer=C=UA,ST=AI,L=Irpin,O=OSBB,OU=Head,CN=ca digest-algorithm=sha256 key-type=rsa country=UA state=AI locality=Kyiv organization=Muter unit=
OpenVPN-client-00 common-name=ovpn-muter key-size=2048 subject-alt-name="" days-valid=3650 trusted=yes key-usage=tls-client serial-number=4FBA81F2BB4BB3C4 fingerprint=3f8eef1079b14c1d8147
8f22263f382ab10f21ccc5fa010d0443aa019ee7a2b0 akid=31c7dab19f80c4fa884d5efb9298a45e7de4d8cc skid=d319e641924be93afe83eca512a1cb7ba7dbd879 invalid-before=sep/09/2022 14:07:30 invalid-after=
sep/06/2032 14:07:30 expires-after=521w2d23h24m31s 
 1    A  T name=cert_export_ovpn-muter.p12_1 issuer=C=UA,ST=AI,L=Irpin,O=OSBB,OU=Head,CN=ca digest-algorithm=sha256 key-type=rsa country=UA state=AI locality=Irpin organization=OSBB unit=
Head common-name=ca key-size=8192 subject-alt-name="" days-valid=3650 trusted=yes key-usage=key-cert-sign,crl-sign serial-number=251F3D5238145BF4 fingerprint=58d9ff1808abbd38019c2e1b1d4b1
f5c71a24d41fd6fc0e7b031661e0097e0aa akid="" skid=31c7dab19f80c4fa884d5efb9298a45e7de4d8cc invalid-before=sep/09/2022 13:58:13 invalid-after=sep/06/2032 13:58:13 expires-after=521w2d23h15m
14s
А тепер просто з'єднаємося з сервером
/interface ovpn-client add certificate=cert_export_ovpn-muter.p12_0 cipher=aes256 connect-to=f97709ad83b1.sn.mynetname.net name=ovpn-out1 password=PASSWORD use-peer-dns=no user=muter
Якщо все було зроблено правильно, OpenVPN-тунель підніметься майже миттєво. Ну, а налаштування файрволу, маршрутизації, тощо - це тема для зовсім іншої розмови.

субота, 3 вересня 2022 р.

Налаштування UserManager для WPA2-EAP на Mikrotik

Маємо RB4011iGS+5HacQ2HnD з RouterOS 6.49.6, RBcAPGi-5acD2nD з RouterOS 7.5 та 2011UiAS-2HnD з RouterOS 6.49.6.

На RBcAPGi-5acD2nD налаштовуємо сучасний UserManager (Radius-server). Відповідно RB4011iGS+5HacQ2HnD та 2011UiAS-2HnD є клієнтами для нього.

RB4011iGS+5HacQ2HnD в мережі називається master.lan з ip 192.168.88.1

2011UiAS-2HnD в мережі називається lte.lan з ip 192.168.88.2

RBcAPGi-5acD2nD в мережі називається slave.lan з ip 192.168.88.2

Поїхали.

Налаштовуємо сертифікати на slave.lan де у нас буде піднято UserManager.

/certificate settings
set crl-use=yes

/certificate

# Generating a Certificate Authority
add name=radius-ca common-name="RADIUS CA" key-size=secp384r1 digest-algorithm=sha384 days-valid=3650 key-usage=key-cert-sign,crl-sign
sign radius-ca name=radius-ca ca-crl-host=slave.lan

# Generating a server certificate for User Manager
add name=usermanager common-name=slave.lan subject-alt-name=IP:192.168.88.3 key-size=secp384r1 digest-algorithm=sha384 days-valid=3650 key-usage=tls-server,digital-signature,key-encipherment
sign usermanager name=usermanager ca=radius-ca
set usermanager trusted=yes

# Generating a client certificate
add name=eap-client common-name=eap-client days-valid=3650 key-size=secp384r1 digest-algorithm=sha384 key-usage=tls-client 
sign eap-client name=eap-client ca=radius-ca

export-certificate radius-ca file-name=radius-ca
export-certificate eap-client type=pkcs12 export-passphrase="p@\$\$word"
Налаштовуємо UserManager і прописуємо клієнтів для нього:
/user-manager
set enabled=yes certificate=usermanager

/user-manager router
add name=master.lan address=192.168.88.1 shared-secret=NDUyOTNiNWQwZjYyMzE4YTdhNmJhZTYwMThkYTdmNTEzZDdmOWQxYzhjNTY5
add name=lte.lan address=192.168.88.2 shared-secret=Yjk1MjAxMGM0Nzg2ODM0ODFjOTNmZGEzYzA3NDIyNWI4ZDU1MTNkOWRiMzY4
add name=slave.lan address=192.168.88.3 shared-secret=OTkxOTFhNDJiNGZhZmYwOWU4ZThhMDMwMzIxMTA4NjExYWVjMjVlMjMwMDFi

/user-manager user group
add inner-auths=peap-mschap2 name=eap outer-auths=eap-peap
add name=certificate-authenticated outer-auths=eap-tls

/user-manager user
add name=master.lan group=certificate-authenticated
add name=lte.lan group=certificate-authenticated
add name=slave.lan group=certificate-authenticated
Ну й додаємо безпосередньо клієнтів WPA2-EAP:
/user-manager user
add name=user_one group=eap password=super@puper_parrwosd shared-users=1
Ну й налаштовуємо radius-клієнтів. На RBcAPGi-5acD2nD:
/radius
add address=192.168.88.3 secret=OTkxOTFhNDJiNGZhZmYwOWU4ZThhMDMwMzIxMTA4NjExYWVjMjVlMjMwMDFi service=wireless src-address=192.168.88.3
/radius incoming
set accept=yes
На RB4011iGS+5HacQ2HnD:
/radius
add address=192.168.88.3 secret=NDUyOTNiNWQwZjYyMzE4YTdhNmJhZTYwMThkYTdmNTEzZDdmOWQxYzhjNTY5 service=wireless src-address=192.168.88.1
/radius incoming
set accept=yes
На 2011UiAS-2HnD:
/radius
add address=192.168.88.3 secret=Yjk1MjAxMGM0Nzg2ODM0ODFjOTNmZGEzYzA3NDIyNWI4ZDU1MTNkOWRiMzY4 service=wireless src-address=192.168.88.2
/radius incoming
set accept=yes
В принципі на цьому все, можна налаштовувати wireless на використання нашого UserManager-а.
В класичному налаштуванні wireless все просто, а в capsman-і в профілі безпеки малюємо щось накшталт:
/caps-man security
add authentication-types=wpa2-eap eap-methods=passthrough encryption=aes-ccm group-encryption=aes-ccm name=security tls-mode=no-certificates
При бажанні можна прикрутити TLS, але це тема для зовсім іншої розмови…

субота, 6 лютого 2021 р.

Як по номеру автономної системи отримати список всіх її мереж?

RIPE-DB

NC

~$ nc whois.ripe.net 43
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf

-K -r -i origin AS12593
% Note: this output has been filtered.
% Only primary keys and abuse contacts will be visible.
% No other contact information will be shown.

route:          185.151.104.0/22
origin:         AS12593

route:          212.90.160.0/19
origin:         AS12593

route:          94.125.120.0/21
origin:         AS12593

route:          94.176.196.0/22
origin:         AS12593

route6:         2a04:42c0::/29
origin:         AS12593

% This query was served by the RIPE Database Query Service version 1.99 (BLAARKOP)
TELNET
~$ telnet whois.ripe.net 43
Trying 193.0.6.135...
Connected to whois.ripe.net.
Escape character is '^]'.
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf

-K -r -i origin AS12593
% Note: this output has been filtered.
% Only primary keys and abuse contacts will be visible.
% No other contact information will be shown.

route:          185.151.104.0/22
origin:         AS12593

route:          212.90.160.0/19
origin:         AS12593

route:          94.125.120.0/21
origin:         AS12593

route:          94.176.196.0/22
origin:         AS12593

route6:         2a04:42c0::/29
origin:         AS12593

% This query was served by the RIPE Database Query Service version 1.99 (ANGUS)
WHOIS
~$ whois -K -r -i origin AS12593
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf

% Note: this output has been filtered.
% Only primary keys and abuse contacts will be visible.
% No other contact information will be shown.

route:          185.151.104.0/22
origin:         AS12593

route:          212.90.160.0/19
origin:         AS12593

route:          94.125.120.0/21
origin:         AS12593

route:          94.176.196.0/22
origin:         AS12593

route6:         2a04:42c0::/29
origin:         AS12593

% This query was served by the RIPE Database Query Service version 1.99 (BLAARKOP)

RADB
~$ whois -h whois.radb.net \!s-lc
A155
radb,lacnic,idnic,afrinic,ripe,ripe-nonauth,bell,apnic,nttcom,altdb,panix,nestegg,level3,reach,openface,arin,arin-nonauth,jpirr,host,rgnet,bboi,tc,canarie
C
NC
~$ nc whois.radb.net 43
-K -r -i origin AS12593
route:          212.90.160.0/19
origin:         AS12593

route:          94.125.120.0/21
origin:         AS12593

route:          185.151.104.0/22
origin:         AS12593

route:          94.176.196.0/22
origin:         AS12593

route6:         2a04:42c0::/29
origin:         AS12593
WHOIS
~$ whois -h whois.radb.net -K -r -i origin AS12593
Warning: RIPE flags used with a traditional server.
route:          212.90.160.0/19
origin:         AS12593

route:          94.125.120.0/21
origin:         AS12593

route:          185.151.104.0/22
origin:         AS12593

route:          94.176.196.0/22
origin:         AS12593

route6:         2a04:42c0::/29
origin:         AS12593

вівторок, 2 червня 2020 р.

Встановлення Apache NetBeans 11.3 у Debian Buster

Йдемо до https://netbeans.apache.org/download/index.html та завантажуємо останню версію бінарників:
wget https://www.apache.org/dyn/closer.cgi/netbeans/netbeans/11.3/netbeans-11.3-bin.zip
розпаковуємо її:
unzip netbeans-11.3-bin.zip
та переносимо у /opt:
sudo mv netbeans/ /opt/
додаємо у .bashrc:
export PATH="$PATH:/opt/netbeans/bin/"
не забуваємо
source ~/.bashrc
далі створюємо файл /usr/share/applications/netbeans.desktop приблизно наступного змісту:
[Desktop Entry]
Name=Netbeans IDE 11
Comment=Netbeans IDE 11
Type=Application
Encoding=UTF-8
Exec=/opt/netbeans/bin/netbeans
Icon=/opt/netbeans/nb/netbeans.png
Categories=GNOME;Application;Development;
Terminal=false
StartupNotify=true
Все. Шукаємо його у меню.

вівторок, 26 листопада 2019 р.

середа, 17 липня 2019 р.

Як встановити Netbeans 11 на Debian (Ubuntu, Linux Mint)

Встановили Java, скажемо версії 11.0.3, та отримуємо Netbeans потрібної 11-ї версії:
wget https://www-us.apache.org/dist/incubator/netbeans/incubating-netbeans/incubating-11.0/incubating-netbeans-11.0-bin.zip
розпакуємо отриманий архів:
unzip incubating-netbeans-11.0-bin.zip
перемістимо розпакований каталог netbeans в opt:
sudo mv netbeans /opt
потрібний для запуску файл тепер знаходиться тут /opt/netbeans/bin/netbeans.
Таким чином шлях /opt/netbeans/bin можна додати до PATH, наприклад у .bashrc:
export PATH=${PATH}:~/bin:/opt/netbeans/bin
Все, можна запускати netbeans з консолі, або ж посилання у меню чи створити іконку на робочому столі.

Модулі, що не запустилися в мене у новій версії:
 org.netbeans.libs.nashorn - No module providing the capability com.oracle.js.parser.implementation could be found.
 org.netbeans.modules.javascript2.doc - The module org.netbeans.libs.nashorn would also need to be installed.
 org.netbeans.modules.javascript2.model - The module org.netbeans.libs.nashorn would also need to be installed.
 org.netbeans.modules.javascript2.model - The module org.netbeans.modules.javascript2.doc would also need to be installed.
 org.netbeans.modules.javascript2.editor - The module org.netbeans.libs.nashorn would also need to be installed.
 org.netbeans.modules.javascript2.editor - The module org.netbeans.modules.javascript2.model would also need to be installed.
 org.netbeans.modules.javascript2.editor - The module org.netbeans.modules.javascript2.doc would also need to be installed.
 org.netbeans.modules.javascript2.requirejs - The module org.netbeans.modules.javascript2.editor would also need to be installed.
 org.netbeans.modules.javascript2.requirejs - The module org.netbeans.modules.javascript2.model would also need to be installed.
 org.netbeans.modules.javascript2.nodejs - The module org.netbeans.modules.javascript2.editor would also need to be installed.
 org.netbeans.modules.javascript2.nodejs - The module org.netbeans.modules.javascript2.model would also need to be installed.
 org.netbeans.modules.javascript.nodejs - The module org.netbeans.modules.javascript2.nodejs would also need to be installed.
 org.netbeans.modules.html.angular - The module org.netbeans.modules.javascript2.editor would also need to be installed.
 org.netbeans.modules.html.angular - The module org.netbeans.modules.javascript2.model would also need to be installed.
 org.netbeans.modules.javascript2.prototypejs - The module org.netbeans.modules.javascript2.model would also need to be installed.
 org.netbeans.modules.javascript2.extjs - The module org.netbeans.modules.javascript2.editor would also need to be installed.
 org.netbeans.modules.javascript2.extjs - The module org.netbeans.modules.javascript2.model would also need to be installed.
 org.netbeans.modules.javascript2.knockout - The module org.netbeans.modules.javascript2.model would also need to be installed.
 org.netbeans.modules.html.knockout - The module org.netbeans.modules.javascript2.editor would also need to be installed.
 org.netbeans.modules.html.knockout - The module org.netbeans.modules.javascript2.knockout would also need to be installed.
 org.netbeans.modules.javascript2.jquery - The module org.netbeans.modules.javascript2.editor would also need to be installed.
 org.netbeans.modules.javascript2.jquery - The module org.netbeans.modules.javascript2.model would also need to be installed.
 org.netbeans.modules.javascript2.extdoc - The module org.netbeans.modules.javascript2.doc would also need to be installed.
 org.netbeans.modules.javascript2.jsdoc - The module org.netbeans.modules.javascript2.doc would also need to be installed.
 org.netbeans.modules.javascript2.sdoc - The module org.netbeans.modules.javascript2.doc would also need to be installed.
 org.netbeans.modules.javascript2.kit - The module org.netbeans.modules.javascript2.prototypejs would also need to be installed.
 org.netbeans.modules.javascript2.kit - The module org.netbeans.modules.javascript2.editor would also need to be installed.
 org.netbeans.modules.javascript2.kit - The module org.netbeans.modules.javascript2.nodejs would also need to be installed.
 org.netbeans.modules.javascript2.kit - The module org.netbeans.modules.javascript2.requirejs would also need to be installed.
 org.netbeans.modules.javascript2.kit - The module org.netbeans.modules.javascript2.knockout would also need to be installed.
 org.netbeans.modules.javascript2.kit - The module org.netbeans.modules.javascript2.jsdoc would also need to be installed.
 org.netbeans.modules.javascript2.kit - The module org.netbeans.modules.javascript2.extjs would also need to be installed.
 org.netbeans.modules.javascript2.kit - The module org.netbeans.modules.javascript2.jquery would also need to be installed.
 org.netbeans.modules.javascript2.kit - The module org.netbeans.modules.javascript2.extdoc would also need to be installed.
 org.netbeans.modules.javascript2.kit - The module org.netbeans.modules.javascript2.sdoc would also need to be installed.
 org.netbeans.modules.javascript2.source.query - The module org.netbeans.modules.javascript2.model would also need to be installed.
 org.netbeans.modules.web.client.kit - The module org.netbeans.modules.javascript.nodejs would also need to be installed.
 org.netbeans.modules.web.client.kit - The module org.netbeans.modules.javascript2.source.query would also need to be installed.
 org.netbeans.modules.web.kit - The module org.netbeans.modules.web.client.kit would also need to be installed.
 org.netbeans.modules.web.struts - The module org.netbeans.modules.web.kit would also need to be installed.
 org.netbeans.modules.spring.webmvc - The module org.netbeans.modules.web.kit would also need to be installed.
 org.netbeans.modules.websvc.kit - The module org.netbeans.modules.web.kit would also need to be installed.
 org.netbeans.modules.j2ee.kit - The module org.netbeans.modules.web.kit would also need to be installed.
 org.netbeans.modules.web.jsf.kit - The module org.netbeans.modules.web.kit would also need to be installed.
 org.netbeans.modules.web.primefaces - The module org.netbeans.modules.web.jsf.kit would also need to be installed.
 org.netbeans.modules.html.ojet - The module org.netbeans.modules.javascript2.editor would also need to be installed.
 org.netbeans.modules.html.ojet - The module org.netbeans.modules.html.knockout would also need to be installed.
 org.netbeans.modules.html.ojet - The module org.netbeans.modules.web.client.kit would also need to be installed.
 org.netbeans.modules.html.ojet - The module org.netbeans.modules.javascript2.model would also need to be installed.
 org.netbeans.modules.websvc.restkit - The module org.netbeans.modules.websvc.kit would also need to be installed.
але це певно вже зовсім інша історія…

SSH: Enables the sharing of multiple sessions over a single network connection.

Маленький нотаток щодо організації багатьох з'єднань (сесій) через один конект.
Ну всі ми часто-густо кудись ходимо по ssh і можливо навіть відкриваємо декілька з'єднань (звісно, якщо не є прихильниками screen). Так от, сам процес з'єднання можна значно прискорити. ;)
Редагуємо .ssh/config і десь на його початку описуємо загальні вимоги щодо з'єднань з використанням можливостей "sharing of multiple sessions":
host *
        ControlMaster auto
        ControlPath ~/.ssh/control/%r@%h:%p
        ControlPersist 10m
Що ми при цьому отримуємо? Значне прискорення підключення по ssh при повторному з'єднанні з віддаленим хостом!

Про опції:
  • ControlMaster - вмикає саму можливість "sharing of multiple sessions". Може приймати параметр auto, ask або autoask.
  • ControlPath - місце де буде створюватися сокет
  • ControlPersist - можна вказати який час будемо пам'ятати про попереднє з'єднання, якщо його було "розірвано". Може також приймати параметр no, тобто не пам'ятати й розривати одразу як останній клієнт покинув віддалене місце призначення. А можна вказати 0, тоді навпаки про з'єднання будемо пам'ятати доти доки не скажемо:
    ssh -O exit
Хочете дізнатися більше? man ssh_config ;)