Установка своего vpn на vps хостинге с нуля

Установка клиента для Windows 7/8/10/XP и Android

Поздравляю, мы на финишной линии! Теперь только осталось установить бесплатную программу, которая будет подключаться к нашему VPN-серверу. Называется она «OpenVPN».

Скачиваем версию для Windows и устанавливаем её, запускать не надо.

Если в процессе установки будут выскакивать всякие окошки, со всем соглашаемся.

Чтобы подключиться к серверу кликаем на рабочем столе по файлу «client.ovpn» правой кнопкой и выбираем «Start OpenVPN on this config file»:

Появится чёрное окошко с процессом инициализации подключения. Если всё прошло успешно, то последняя строчка должна быть, типа:

Ещё может выпадет окно с вопросом типа новой сети, тогда выбираем «Общественная сеть».

Можно проверять, заходим на сайт 2ip.ru и смотрим свой IP, должен совпадать с IP VPS-сервера:

Также можно проверить какая скорость вашего интернет-подключения через VPN.

Окно консоли сервера теперь смело можно закрывать. А чтобы закрыть впн-соединение и вернуть старый айпи – нужно закрыть окошко от OpenVPN.

Чтобы подключиться в следующий раз, достаточно просто запустить правой кнопкой файл «client.ovpn» с рабочего стола, больше ничего делать не требуется.

С телефоном всё ещё проще, нужно установить через плеймаркет приложение OpenVPN, закачать в память файл client.ovpn, выбрать его в приложении и подключиться к нашему vpn-серверу.

Когда нужен VPN

Выход в интернет осуществляется с устройства, за которым закреплен идентификатор (IP-адрес). Он позволяет провайдеру отслеживать действия в сети. В целом, это не дает повод переживать относительно того, что третье лицо прочтет ваше сообщение, отправленное близкому человеку. Однако знание IP позволяет компании, предоставляющей доступ в интернет, заблокировать для вас тот или иной ресурс, если того требует регулирующий орган (в России – Роскомнадзор).

Обойти блокировку помогает виртуальная приватная сеть VPN, которая как бы маскирует вас, выдавая за человека из другого региона. Так, провайдер начинает думать, будто вы зашли в браузер не с территории России, а из США, Франции или любой другой страны, а потому ресурс оказывается доступным вне зависимости от требования регулирующего органа. В конечном итоге можно выделить следующие сценарии использования ВПН:

  • обход бана в игре или на форуме;
  • доступ к заблокированным ресурсам;
  • сохранение тайны переписки при нахождении в локальной сети (например, когда вы переписываетесь на работе).

Словом, VPN необходим всем тем, кто переживает за свою конфиденциальность и желает пользоваться интернетом в условиях полной свободы.

Важно. При подключении к ВПН скорость интернета заметно снижается из-за загруженности серверов

Поэтому пользоваться виртуальной сетью рекомендуется в исключительных случаях.

Подключаемся к серверу

Для подключения с помощью созданного файла нужен клиент OpenVPN. Версию для компьютера можно скачать здесь. Загрузите и установите программу, но не запускайте. Щёлкните правой кнопкой по файлу client.ovpn и выберите пункт Start OpenVPN.

Появится окно консоли с инициализацией соединения. Если подключение прошло успешно, внизу будет статус . В процессе соединения может появиться окно выбора сети, нажмите на общественную сеть.

Чтобы убедиться, что подключение установлено верно, проверьте IP-адрес. Он должен совпадать с тем, который хостер написал в письме. Чтобы перестать направлять запросы на сервер в другой стране, закройте окно OpenVPN.

У OpenVPN есть также клиенты для мобильных устройств.

OpenVPN Connect – Fast & Safe SSL VPN Client Разработчик: OpenVPN Цена: Бесплатно

Цена: Бесплатно

Для установки подключения перенесите в память телефона файл client.ovpn. Запустите приложение и выберите пункт OVPN Profile. Укажите путь к файлу и передвиньте ползунок в положение «Включён».

Наверху появится значок подключения через VPN. Чтобы убедиться в том, что трафик перенаправляется через сервер в другой стране, откройте в мобильном браузере любой сервис проверки IP-адреса.

  • https://nastrojkin.ru/network/internet/vpn-podklyuchenie.html
  • https://sys-team-admin.ru/stati/bezopasnost/155-chto-delaet-vpn-kak-nastroit-vpn-soedinenie-dlya-windows-nastrojka-vpn-servera.html
  • https://lifehacker.ru/kak-podnyat-vpn/

Собственный VPN-сервер на хостинге VPS/VDS

Итак, если нужна конкретная страна или город, или требуется много трафика, который не дают VPN-сервисы, гарантия безопасности — тогда есть смысл заморочиться настройкой личного VPN-сервера. Как правило, это требует глубоких знаний системного администрирования серверов. Но я постарался объяснить всё просто, чтобы разобрался даже чайник)

Недостатки у этого способа тоже есть:

  • всего один IP-адрес, на который вы можете «пересесть», но есть дополнительные за отдельную плату
  • нетривиальная настройка в первый раз
  • платно

Дочитайте до конца, и я покажу как использовать свой VPS сервер для обхода блокировок без настройки на нём VPN.

Что такое VPS/VDS сервер?

Хостинг-провайдеров в интернете бесчисленное множество. Все они позволяют размещать у них свои веб-сайты. Самая популярная услуга — это виртуальный хостинг. Более продвинутая — это выделенный виртуальный сервер — VPS (VDS — это, считай, тоже самое). На VPS можно размещать сайты, поднимать VPN-сервер, почтовый сервер, игровой сервер — да что угодно!

Вам нужно знать, что VPS-сервера бывают нескольких видов: OpenVZ, Xen и KVM. Для работы VPN-сервера нужно KVM. Тип сервера указан в тарифах хостинга. OpenVZ и Xen тоже иногда подходят, но нужно писать в техподдержку хостинга и спрашивать, подключён ли модуль «TUN». Не вдаваясь в подробности для чего это, просто спрашиваете. Если нет, то могут ли они включить его. Не помешает также спросить, будет ли работать VPN как таковой (даже на KVM), т.к. некоторые компании прикрывают эту возможность. Ах да, операционная система сервера — Debian, Ubuntu или CentOS (в общем, Linux-подобная). Мощность сервера не имеет значения.

Шаг 4 — Продакшн настройка сервера VPS/VDS

В этом разделе речь идет о роли сервера.

Я советую использовать одна задача — один сервер. Например если у вас сервер выполняет роль маршрутизатора не надо туда лепить веб-сервер для хостинга ваших сайтов. Ни к чему хорошему попытки на одном сервер запустить Zabbix сервер, VPN сервер и хостинг сайтов не приведет.

Итак роли в которых может выступать ваши виртуальные VPS/VDS:

  • Zabbix настройка мониторинга сети и оборудования

  • Настройка OpenVPN развернутое руководство и видео в 2021

  • Настройки времени systemd-timesyncd и запуск сервера NTP

  • SOCKS сервер на примере прокси сервера Dante Server

Устаревшее:

  • RHEL / CentOS — первичная настройка сервера
  • Website Hosting корпоративный хостинг: Apache 2 ITK MPM, Nginx, SFTP.

Для чего?

С ростом цензурирования интернета авторитарными режимами, блокируются все большее количество полезных интернет ресурсов и сайтов. В том числе с технической информацией.
Таким образом, становится невозможно полноценно пользоваться интернетом и нарушается фундаментальное право на свободу слова, закрепленное во Всеобщей декларации прав человека.

В данном руководстве мы за 6 этапов развернем свой собственный бесплатный* VPN сервис на базе технологии Wireguard, в облачной инфраструктуре Amazon Web Services (AWS), с помощью бесплатного аккаунта (на 12 месяцев), на инстансе (виртуальной машине) под управлением Ubuntu Server 18.04 LTS.

Я старался сделать это пошаговое руководство как можно более дружественным к людям, далеким от ИТ. Единственное что требуется — это усидчивость в повторении описанных ниже шагов.

Шаг 2 — Первоначальная настройка сервера VPS/VDS

Обычно я использую на серверах Debian или Ubuntu, поэтому команды будут приводиться для этих систем. Для остальных ОС буду приводить ссылки, если есть различия.

На начальном этапе у нас есть свежеустановленная операционная система на VPS/VDS и доступ по SSH. Логинимся на сервер под пользователем root.

1) Обновление операционной системы. Для Debian, Ubuntu рекомендую использовать встроенные менеджер пакетов , альтернатива Aptitude, dpkg.

# apt update
# apt list --upgradable
# apt upgrade

Добавим системные утилиты:

# apt install lsb-release htop net-tools

2) Настройка переменных локализации в Linux удаление локалей и локализаций, проверка языка консоли вашего VDS.

3) Настройка времени и часового пояса при помощи tzdata.

4) Имя сервера проверьте командой hostname с ключом f. Вы должны увидеть имя в формате FQDN (без точки в конце), например

# hostname -f
vps100.mirax-hotel.com

Если вы хотите установить почтовый сервер также проверьте обратную запись DNS. В самом простом случае достаточно чтобы ваш VPS был доступен по доменному имени.

5) Настройка SSH доступа, для повышения безопасности и удобства использования вашего сервера — дадут вам прочную основу для последующих действий.

6) Настройка брандмауэра (firewall, файрвол) в разных дистрибутивах отличается или же используются разные программные надстройки на ними:

  1. Для тех кто использует

  2. Для тех кто предпочитает чистый Правила iptables

  3. Для FreeBSD штатный firewall ipfw, или Packet Filter Firewall (PF) (обновление 2018.08)

Обязательно установите Fail2ban для защита от брутфорса демона SSH.

2.2. Создание внешнего IP адреса

2.2.1. Запуск создания внешнего IP

Дальше нам необходимо создать постоянный внешний IP адрес, через который мы и будем подключатся к нашему VPN серверу. Для этого в навигационной панели в левой части экрана необходимо выбрать пункт Elastic IPs из категории NETWORK & SECTURITY и нажать кнопку Allocate new address

2.2.2. Настройка создания внешнего IP

На следующем шаге нам необходима чтобы была включена опция Amazon pool (включена по умолчанию), и нажимаем на кнопку Allocate

2.2.3. Обзор результатов создания внешнего IP адреса

На следующем экране отобразится полученный нами внешний IP адрес. Рекомендуется его запомнить, а лучше даже записать. он нам еще не раз пригодиться в процессе дальнейшей настройки и использования VPN сервера. В данном руководстве в качестве примера я использую IP адрес 4.3.2.1. Как записали адрес, нажимаем на кнопку Close

Далее нам открывается список наших постоянных публичных IP адресов (elastics IP).

2.2.5. Назначение внешнего IP инстансу

В этом списке мы выбираем полученный нами IP адрес, и нажимаем правую кнопку мыши, чтобы вызвать выпадающее меню. В нем выбираем пункт Associate address, чтобы назначить его ранее созданному нами инстансу.

На следующем шаге выбираем из выпадающего списка наш инстанс, и нажимаем кнопку Associate

2.2.7. Обзор результатов назначения внешнего IP

После этого, мы можем увидеть, к нашему постоянному публичному IP адресу привязан наш инстанс и его приватный IP адрес.

Теперь мы можем подключиться к нашему вновь созданному инстансу из вне, со своего компьютера по SSH.

SSH — это безопасный протокол удаленного управления компьютерными устройствами.

Прокси и Виртуальные Частные Сети (VPN)

Прокси-серверы и VPN различаются по своей природе, хотя могут предоставлять одни и те же услуги. VPN направляет весь сетевой трафик на клиентском компьютере через туннель к другому серверу. Индивидуальная настройка приложения не требуется. Напротив, использование прокси требует, чтобы каждое приложение было индивидуально настроено для обеспечения прохождения трафика через прокси.

Цель VPN — предоставить удаленному клиентскому компьютеру доступ к сетевым ресурсам в другом месте, как если бы он был физически расположен в том же офисе. Одним из таких сетевых ресурсов может быть доступ к Интернету, который маскирует IP-адрес удаленного компьютера. По этой причине в последнее время популярность VPN наблюдается как инструмент геообфускации для доступа к контенту, недоступному в стране клиентского компьютера (например, US Netflix из-за пределов США), а также как инструмент конфиденциальности для предотвращения IP-адреса клиента. адрес от обнаружения. Прокси более ограничен в том, что он не может предоставить доступ к удаленным ресурсам, но он может маскировать ваш IP-адрес и предоставлять услуги геообфускации..

Как настроить собственный VPN-сервер под Ubuntu вручную

Можно развернуть собственный ВПН сервер на VPS под управлением Ubuntu (версии 18 и 20) вручную, для этого воспользуемся пакетом strongSwan, который предназначен для реализации IPSec на различных платформах. Для начала, как обычно, выполним обновление серверной ОС:

apt update && apt full-upgrade -y

Затем приступаем к настройкам.

1. Инсталлируем strongSwan командой*:

apt-get install strongswan

*Примечание: в процессе инсталляции отвечайте «нет» на запросы об установке сертификата во всех диалоговых окнах.

 2. Затем установим модуль xl2tpd для реализации протокола L2TP:

apt-get install xl2tpd

3. Выполним автозагрузку этих пакетов:

systemctl enable ipsec
systemctl enable xl2tpd

4. В редакторе Nano выполним редактирование конфигурационного файла IPSec:

nano /etc/ipsec.conf

Вписываем в файл следующие строки (соблюдая все отступы):

config setup
          nat_traversal=yes
          virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
          oe=off
          protostack=netkey

conn L2TP-PSK-NAT
          rightsubnet=vhost:%priv
          lso=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
          authby=secret
          pfs=no
          auto=add
          keyingtries=3
          r4ekey=no
          ikelifetime=8h
          keylife=1h
          type=transport
          left=SERVER.IP
          leftprotoport=17/1701
          right=%any
          rightprotoport=17/%any

*Примечание: в параметр left вместо SERVER.IP подставьте IP адрес своего VPS.

 5. Прописываем общий ключ IPsec PSK, для этого запускаем следующий файл на редактирование:

nano /etc/ipsec.secrets

Вносим данные:

SERVER.IP %any : PSK "MyNewSharedSecretKey20"

где: SERVER.IP IP — адрес вашего VPS;

 6. Создаем скрипт для настройки сетевого подключения к VPN-серверу, для этого открываем для редактирования файл:

nano /usr/local/bin/ipsec

Вносим туда следующие команды:

iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart

7. Затем выполняем следующие команды, чтобы сделать данный скрипт исполняемым:

Включаем rc.local (он выключен в Ubuntu 20), для этого отредактируем файл:

nano /etc/systemd/system/rc-local.service


       Description=/etc/rc.local Compatibility
       ConditionPathExists=/etc/rc.local


       Type=forking
       ExecStart=/etc/rc.local start
       TimeoutSec=0
       StandardOutput=tty
       RemainAfterExit=yes
       SysVStartPriority=99


       WantedBy=multi-user.target

Делаем этот файл исполняемым:

chmod +x /etc/rc.local

Добавляем этот скрипт в /etc/rc.local и запускаем его:

nano /etc/rc.local
#!/bin/sh -e 
/usr/local/bin/ipsec_conf 
exit 0

8. Перезагружаем список доступных демонов и включаем в автозагрузку rc-local:

systemctl daemon-reload
systemctl enable rc-local

9. Выполним настройку L2TP, для чего c помощью следующей команды отредактируем файл xl2tpd.conf:

nano /etc/xl2tpd/xl2tpd.conf

Вписываем эти строки в файл:

ipsec saref = yes


ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

10. Настраиваем авторизацию PPP, для этого произведем редактирование файла:

nano /etc/ppp/options.xl2tpd

Вносим в редакторе следующие строки:

require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name VPNTEST20
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

где: параметр name — название нашего VPN сервера (к примеру, VPNTEST20)

11. На следующем этапе, добавим пользователей в файл chap-secrets и укажем их логины и пароли (на примере одного пользователя с логином uservpn1 и паролем password1):

nano /etc/ppp/chap-secrets
uservpn1 VPNTEST20 password1 *

12. Проводим рестарт всех настроенных сервисов:

/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart

13. Перезагружаем сервер и пробуем подсоединиться к нашему VPN-серверу с помощью клиента (про настройки клиентов читайте в следующих разделах нашей статьи).

4.2. Добавление нового VPN пользователя

Чтобы добавить нового пользователя, необходимо в терминале выполнить скрипт

Скрипт запрашивает имя пользователя:Пример вывода:

Также, имя пользователям можно передать в качестве параметра скрипта (в данном случае ):

В результате выполнения скрипта, в каталоге с именем клиента по пути будет создан файл с конфигурацией клиента , а на экране терминала отобразится QR код для настройки мобильных клиентов и содержимое файла конфигурации.

4.2.1. Файл пользовательской конфигурации

Показать на экране содержимое файла .conf, для ручной настройки клиента, можно с помощью команды

результат выполнения:

Описание файла конфигурации клиента:

4.2.2. QR код конфигурации клиента

Показать на экране терминала QR код конфигурации для ранее созданного клиента можно с помощью команды (в данном примере используется клиент с именем Alex@mobile):

Windows

Для начала необходимо скачать свежую версию Tun2Socks. Бинарники распространяются на странице релизов в официальном гит-репозитории проекта. Выберите один из пакетов, название которого начинается на . Если у вас 64-разрядная Windows на стареньком железе, вам наверняка подойдет (так как архитектура ARM на старых машинах с Windows мне еще не встречалась).

После загрузки распакуйте архив в любое удобное место.

Tun2Socks создает виртуальный сетевой адаптер, но драйвер для этого (Wintun) нужно скачать отдельно. Вот прямая ссылка для загрузки версии Wintun 0.11. Рекомендую именно эту версию, так как с более новыми версиями в моем случае Tun2Socks v2.3.1 работать отказался. При желании, свежий релиз драйвера можно найти на официальной странице. Из всего архива вам понадобится только один файл , который надо взять из нужной директории в зависимости от вашей операционной системы. В случае архитектуры amd64, путь до нужной библиотеки выглядит так: . Положите подходящий файл в директорию, где находится исполняемый файл Tun2Socks.

Tun2Socks запускается с передаваемыми значениями через командную строку (команды, приведенные ниже, должны быть выполнены с правами администратора). Команда для простого запуска имеет следующий вид:

  • является именем исполняемого файла Tun2Socks;

  • определяет название нового виртуального сетевого интерфейса (gatewaytun);

  • сообщает протокол (в моем случае это SOCKS5) и адрес прокси-сервера.

Этого достаточно, чтобы создать в системе новый сетевой интерфейс, но работать, как нам хочется, он пока что не будет. Для этого необходимо вручную присвоить новому сетевому интерфейсу IP-адрес и объяснить операционной системе, что он является шлюзом.

Присвоить интерфейсу IP-адрес и указать маску подсети можно через стандартный графический интерфейс Windows, но воспользуемся благами командной строки:

В примере виртуальному интерфейсу присваивается адрес , но фактически это может быть любой частный адрес из подсети, которая, во-первых, не используется другими сетевыми адаптерами вашей операционной системы, во-вторых, не используется в локальной сети вашего предприятия или дома (иначе будет нарушена локальная маршрутизация). В большинстве случаев адрес из примера будет корректным значением (так как используется диапазон 127.0.0.1/8). Итак, будем считать, что адрес виртуальному сетевому интерфейсу присвоен.

Теперь нужно сообщить операционной системе новый интерфейс в качестве шлюза:

Внимание! Если прокси-сервер находится не в локальной сети с той же подсетью, что и один из сетевых интерфейсов вашего компьютера, т.е. обращение к прокси-серверу осуществляется через уже существующий шлюз, необходимо оставить доступ к прокси-серверу в прежнем виде, иначе приведенная конфигурация работать не будет — согласитесь, что попытка подключения к прокси-серверу через сам же прокси-сервер является абсурдом

На практике это означает, что для подключения к прокси-серверу нужно добавить еще один маршрут:

В примере указано правило маршрутизации в подсеть , которая должна идти не через общий шлюз (gatewaytun), а через сетевой интерфейс, имеющий доступ к устройству с адресом (которое является шлюзом в нужную подсеть)

Это правило справедливо, во-первых, если нужно сохранить доступ в подсеть локальной сети, которая недоступна непосредственно и, во-вторых, что более важно — если в заданной подсети находится сам прокси-сервер, через который в дальнейшем пойдет весь наш трафик

При домашнем использовании, когда нет никаких локальных подсетей, и всё, что требуется, это подключение к прокси-серверу через интернет-провайдера, приведенная выше команда заменяется этой:

  • — адрес прокси-сервера в интернете;

  • — маска, означающая, что в правило входит только адрес прокси-сервера;

  • — адрес шлюза в локальной сети, который вам предоставляет интернет-провайдер.

Если вы используете не HTTP-, а SOCKS-прокси (который поддерживает UDP), в настройках виртуального сетевого интерфейса можно указать адрес DNS-сервера, через который мы хотим резолвить доменные имена. Это возможно сделать как через графический интерфейс Windows, так и через командную строку:

В примере адрес является адресом DNS-сервера.

В итоге получается следующий набор команд:

Настройка прокси на windows

Пользователи, собравшиеся постоянно работать в Интернете через прокси-сервера, могут облегчить собственную жизнь, заблаговременно перенаправив сетевое соединение в самом виндовс. Делается это следующим образом:

Windows

Перед тем, как подключить прокси-сервер в ОС Windows, важно помнить, что подключая такой удаленный доступ, вы вносите изменения в свойства Сети, а значит именно её и нужно искать.
Открыв окно панели управления, вы найдете свойства браузера, куда и нужно внести изменения.
Выбираете пункт Подключения и дальше Настройка сети.
Затем нужно дать добро на использование прокси-сервера и ввести исходные данные, то есть адрес и номер порта.

Mac OS

  • Главным достоинством данной операционной системы является её интуитивная доступность, поэтому внести изменения в настройки подключения совершенно несложно:
  • В дополнительных настройках системы вам необходимо найти собственно Настройки прокси, которые и нужно изменить.
  • В открывшемся окошке вводите IP адрес, порт, а также логин и пароль, после чего нажимаете на маленький замочек внизу, который разрешает изменения, затем жмете Ok

Linux Задача, как включить прокси-сервер в операционной системе Linux, будет достаточно простой, если вы разбираетесь в файлах конфигурации или для подключения proxy вам не нужно использовать пароль и логин. По сути, путь настройки такой: Для настройки файлов конфигурации лучше всего будет использовать специальные утилиты.

  • В системных параметрах необходимо найти раздел Сеть.
  • Затем перейти к службе прокси и вручную поменять конфигурацию подключения, то есть прописать данные proxy.

OS Android Установка прокси сервера на Android осуществляется двумя способами. Первый через приложение при помощи Root (прав администратора). Установив нужное приложение (по типу ProxyDroid), введите адрес и порт прокси, а затем активируйте автоматическое подключение. Второй способ не предполагает использование Root, и сделать нужно следующее:

  • Найти в настройках сети пункт Дополнительно.
  • Перевести настройки в ручной режим.
  • Далее вводим данные сервера и подключаемся к Интернету.

iOS

  • Настроить подключение через proxy-сервер в системе iOS можно следующим образом: в настройках выберите раздел Wi-Fi и найдите сеть, к которой подключено устройство.
  • Прокрутив раздел до самого низа, вы найдете опцию HTTP-proxy, которая по умолчанию отключена. Переведите настройки на ручной режим и введите IP адрес и номер порта прокси в строчки Сервер и Порт.
  • Затем авторизуйтесь и проведите аутентификацию. Теперь Apple iPhone или iPad будет выходить в Интернет через указанный владельцем сервер.

Правильно выполненная установка прокси-сервера предоставит круглосуточный доступ к любым веб-ресурсам.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
НоутИнфо
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: