Брокерный IPv6 для вебсервера

Просмотров: 2664Комментарии: 0
ВкусняшкиFAQ SolutionLinux

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

Мною будет развернута новая виртуальная машина, на которую будет подана сеть от IPv6 брокера. Затем на интерфейс будет назначено несколько IPv6 адресов от брокера, которые будет слушать веб сервер и проксировать трафик на IPv4 веб сервер.

И как говорил Юрий Алексеевич - Поехали!

Разворачиваем новую виртуальную машину и подаем туннель.

Тему разворачивания новой виртуальной машины опущу, будем считать её простой и понятной.

Следующий шаг - получить сеть у Hurricane Electric, как это сделать подробно описано в статье IPv6 без провайдера, так же и первичная настройка интерфейса he-ipv6 inet6 v4tunnel.

Подаем дополнительные IP на интерфейс

Все очень просто, на наш физический интерфейс ens192 подаются дополнительные ip адреса из выданной подсети.

Редактируем файл /etc/network/interfaces, добавляя дополнительные строчки.

auto ens192:1

iface ens192:1 inet6 static

address 2001:aaa:bbb4:682::6

netmask 64

auto ens192:2

iface ens192:2 inet6 static

address 2001:aaa:bbb4:682::12

netmask 64

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

Делаем копию сертификатов с основного хоста

На основном Web сервере где все работает через IPv4 выписываются автоматически сертификаты для Let’s Encrypt, дабы не ломать уже то что работает будем настраивать автоматическое копирование сертификатов для нового сервера, например через SCP по планировщику. Сказано - сделано, но первым делом нужно настроить автоматическую авторизацию по ключу для scp и ssh. На сервере с IPv4 выполним генерацию пары ключа для подключения к IPv6 серверу, выполним команду:

ssh-keygen -t rsa -b 2048

После ее выполнения возникнет диалог в котором будет предложено ввести парольную фразу (данный шаг нужно пропустить дважды нажав Enter) и ввести путь для сохранения файлов публичного и приватного ключей. Публичный ключ по умолчанию сохраняется в ~/.ssh/id_rsa.pub.

Следом копируем публичный ключ на IPv6 веб сервер.

scp ~/.ssh/id_rsa.pub usrname@IPv6Server:/home/username/.ssh/authorized_keys_new

Подключаемся по SSH к IPv6Server с парольной авторизацией и добавляем ключ в разрешенные

ssh usrname@IPv6Server

cat /home/username/.ssh/.authorized_keys_new >> /home/username/.ssh/authorized_keys

Последующие авторизации будут проходить без запроса пароля.

Для копирования файлов сертификатов с IPv4 на IPv6 сервер можно выполнить команду на IPv4 сервере:

scp -r /home/username/conf/web/*/ssl/ usrname@IPv6Server:/var/certs/

После успешного выполнения, ее можно добавить в планировщик Crontab, для автоматического копирования сертификатов по расписанию.

Устанавливаем Nginx и проксируем хост

Ну вот собственно и все. Переходим к финишной прямой. Устанавливаем Nginx

apt install nginx

Теперь создаем новый конфигурационный файл в директории с конфигурациями выполнив

nano /etc/nginx/sites-available/ipv6_olorg.ru_ssl

Со следующим содержимым, подставляйте свои параметры для примера:

server {

listen [2001:aaa:bbb4:682::6]:443 default_server ssl http2;

server_name _ olorg.ru;

ssl_certificate /var/certs/ssl/olorg.ru.pem;

ssl_certificate_key /var/certs/ssl/olorg.ru.key;

ssl_stapling on;

ssl_stapling_verify on;

access_log /var/log/nginx/domains/olorg.ru.access.log main;

error_log /var/log/nginx/domains/olorg.ru.error.log error;

add_header Strict-Transport-Security "max-age=15768000;" always;

location / {

resolver 8.8.8.8 ipv6=off valid=30s;

proxy_pass https://olorg.ru:443;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header CF-Connecting-IP $remote_addr;

}

}

для файла nginx.conf добавим параметр лога main отредактировав файл /etc/nginx/nginx.conf добавив в секцию http содержимое

# Log format

log_format main '$remote_addr - $remote_user [$time_local] $request '

'"$status" $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

А но и внести правку в файл /etc/nginx/nginx.conf получения реального IP на ipv4serverе, у меня конфиг поправлен под CloudFlare, я добавляю и себя.

set_real_ip_from IP_адрес_с_которого_идет_соединение;

real_ip_header CF-Connecting-IP;

Для включения ранее созданного конфигурационного файла необходимо создать символьную ссылку на каталог активированных сайтов, выполнив следующую команду

ln -s /etc/nginx/sites-available/ipv6_olorg.ru_ssl /etc/nginx/sites-enabled/

После чего можно проверить конфигурацию nginx и если тест будет успешен можно перезагрузить конфигурацию второй командой

nginx -t

nginx -s reload

Собственно в таком случае получается и логи собираются и работает автоматический выпуск сертификатов и по двум версиям IP доступен сайт. Далее не забываем прописать "AAAA" запись для домена.

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

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)