Настройка пограничного маршрутизатора ISP
Подготовка системы
Сначала задаём имя хоста, чтобы устройство корректно идентифицировалось в сети.
hostnamectl set-hostname ISP
exec bash
Настройка сетевых интерфейсов
Формируем базовый конфиг сети. Удаляем старые настройки и создаём новую структуру interfaces.
echo "source /etc/network/interfaces.d/*" > /etc/network/interfaces
echo -e "\nauto lo" >> /etc/network/interfaces
echo "iface lo inet loopback" >> /etc/network/interfaces
Делаем выход в интернет. (Рекомендуется уточнить имя интерфейса через ip -br a. Но обычно тут система такая: В проксе интерфейс с первого по третий соответствует первому по третий на машине. Если ниче не получилось, то надо залезть в настройки прокса и скоммутировать сеть).
IF1=$(ip -br a | awk 'NR==2 {print $1}')
echo -e "\nauto $IF1" >> /etc/network/interfaces
echo "iface $IF1 inet dhcp" >> /etc/network/interfaces
Настраиваем интерфейс в сторону левой подсети (HQ-RTR).
IF2=$(ip -br a | awk 'NR==3 {print $1}')
echo -e "\nauto $IF2" >> /etc/network/interfaces
echo "iface $IF2 inet static" >> /etc/network/interfaces
echo "address 172.16.4.1/28" >> /etc/network/interfaces
Настраиваем интерфейс в сторону правой подсети (BR-RTR).
IF3=$(ip -br a | awk 'NR==4 {print $1}')
echo -e "\nauto $IF3" >> /etc/network/interfaces
echo "iface $IF3 inet static" >> /etc/network/interfaces
echo "address 172.16.5.1/28" >> /etc/network/interfaces
Применяем изменения сети.
systemctl restart networking
ip -br a
Firewalld и NAT
Устанавливаем firewalld.
apt update && apt install firewalld -y
Добавляем интерфейсы в зоны.
IF1=$(ip -br a | awk 'NR==2 {print $1}')
IF2=$(ip -br a | awk 'NR==3 {print $1}')
IF3=$(ip -br a | awk 'NR==4 {print $1}')
firewall-cmd --permanent --zone=public --change-interface="$IF1"
firewall-cmd --permanent --zone=trusted --change-interface="$IF2"
firewall-cmd --permanent --zone=trusted --change-interface="$IF3"
Врубаем NAT.
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --permanent --zone=public --set-target=ACCEPT
Пробрасываем SSH порты на HQ-RTR и BR-RTR.
firewall-cmd --permanent --zone=public --add-forward-port=port=2025:proto=tcp:toport=22:toaddr=172.16.1.2
firewall-cmd --permanent --zone=public --add-forward-port=port=2026:proto=tcp:toaddr=172.16.2.2
Применяем конфигурацию firewall.
firewall-cmd --reload
Настройка времени
Устанавливаем временную зону и включаем синхронизацию времени.
timedatectl set-timezone Asia/Vladivostok
timedatectl set-ntp true
SSH конфигурация
Добавляем баннер и другое по гайду для SSH доступа.
echo "Authorized access only" > /etc/ssh/banner
echo "Banner /etc/ssh/banner" >> /etc/ssh/sshd_config
systemctl restart sshd
Reverse proxy (Nginx)
Устанавливаем nginx и создаём конфигурацию прокси-сервера.
apt install nginx -y
mkdir -p /etc/nginx/sites-available.d
Закидываем конфигурацию в файл по пути /etc/nginx/sites-available.d/default.conf. Просто скопируйте весь текст, в конце нажмите Enter.
echo "server {" > /etc/nginx/sites-available.d/default.conf
echo " listen 80;" >> /etc/nginx/sites-available.d/default.conf
echo " server_name web.au-team.irpo;" >> /etc/nginx/sites-available.d/default.conf
echo "" >> /etc/nginx/sites-available.d/default.conf
echo " location / {" >> /etc/nginx/sites-available.d/default.conf
echo " proxy_pass http://172.16.1.2:8080;" >> /etc/nginx/sites-available.d/default.conf
echo " proxy_set_header Host \$host;" >> /etc/nginx/sites-available.d/default.conf
echo " proxy_set_header X-Real-IP \$remote_addr;" >> /etc/nginx/sites-available.d/default.conf
echo " proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;" >> /etc/nginx/sites-available.d/default.conf
echo " proxy_set_header X-Forwarded-Proto \$scheme;" >> /etc/nginx/sites-available.d/default.conf
echo " }" >> /etc/nginx/sites-available.d/default.conf
echo "}" >> /etc/nginx/sites-available.d/default.conf
echo "" >> /etc/nginx/sites-available.d/default.conf
echo "server {" >> /etc/nginx/sites-available.d/default.conf
echo " listen 80;" >> /etc/nginx/sites-available.d/default.conf
echo " server_name docker.au-team.irpo;" >> /etc/nginx/sites-available.d/default.conf
echo "" >> /etc/nginx/sites-available.d/default.conf
echo " location / {" >> /etc/nginx/sites-available.d/default.conf
echo " proxy_pass http://172.16.2.2:8080;" >> /etc/nginx/sites-available.d/default.conf
echo " proxy_set_header Host \$host;" >> /etc/nginx/sites-available.d/default.conf
echo " proxy_set_header X-Real-IP \$remote_addr;" >> /etc/nginx/sites-available.d/default.conf
echo " proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;" >> /etc/nginx/sites-available.d/default.conf
echo " proxy_set_header X-Forwarded-Proto \$scheme;" >> /etc/nginx/sites-available.d/default.conf
echo " }" >> /etc/nginx/sites-available.d/default.conf
echo "}" >> /etc/nginx/sites-available.d/default.conf
Делаем ссылку и врубаем нгинкс.
ln -s /etc/nginx/sites-available.d/default.conf /etc/nginx/sites-enabled.d/
systemctl enable --now nginx