Пошаговая инструкция по установке и настройке FRP.
Шаг 1: Скачивание (на обоих серверах)
Внимание!
SSH-сервер должен быть установлен на всех серверах, если его нет, устанавливаем:
sudo apt install openssh-server
Далее, скачиваем FRP.
FRP — это один архив с двумя файлами: frps (server) и frpc (client).
- Зайдите на страницу релизов GitHub.
- Скопируйте ссылку на актуальную версию для Linux (обычно
_linux_amd64.tar.gz).
- Скачайте и распакуйте на обоих серверах.
Пример:
# Переходим в домашнюю папку
cd ~
# Скачиваем архив (версия 0.61.1 актуальна на текущий момент)
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar -xvzf frp_0.61.1_linux_amd64.tar.gz
# Для удобства переименуем папку
mv frp_0.61.1_linux_amd64 frp
Шаг 2: Настройка сервера "Сервер Б" (Стабильный) — FRPS
Здесь нам нужен файл конфигурации frps.toml (Server).
- Отредактируйте конфиг:
mcedit frps.toml
- Вставь следующее:
bindPort = 7000 # Порт, по которому "Сервер А1" будет стучаться к "Сервер Б"
[auth]
token = "<секретный_токен_связи>"
[webServer]
addr = "0.0.0.0"
port = 7500
user = "admin"
password = "<пароль_админа>"
Секретный токен связи можно создать командой
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
- Запуск:
./frps -c frps.toml
(Если всё ок, панель будет доступна по адресу http://IP_SERVER_B:7500).
Шаг 3: Настройка "Сервер А1" (Проблемный) — FRPC
Здесь нам нужен файл frpc.toml (Client).
- Отредактируйте конфиг:
mcedit frpc.toml
- Вставьте следующее:
serverAddr = "<IP_SERVER_B>"
serverPort = 7000
[auth]
token = "секретный_токен_связи" # Должен совпадать с тем, что на "Сервер Б"
[[proxies]]
name = "ssh-tunnel" # Имя выбирайте любое, чтобы отличать по именам сервера
type = "tcp"
localIP = "127.0.0.1"
localPort = 22 # Локальный SSH
remotePort = 2222 # Порт, который откроется на "Сервер Б" для входа
Внимание!
localPort = 22 Это для стандартных случаев.
Посмотрите, на каком порту работает ssh вашего сервера, и вставьте нужный номер порта.
- Запуск:
./frpc -c frpc.toml
Шаг 4: Автоматизация (Systemd)
Чтобы всё работало само после перезагрузки, создадим сервисы.
На Сервере Б (Server):
Создай файл /etc/systemd/system/frps.service:
[Unit]
Description=FRP Server
After=network.target
[Service]
Type=simple
User=USER
Restart=on-failure
RestartSec=5s
ExecStart=/home/USER/frp/frps -c /home/USER/frp/frps.toml
[Install]
WantedBy=multi-user.target
Вместо USER вставьте имя пользователя, от которого запускается FRPS
На Сервере А1 (Client):
Создайте файл /etc/systemd/system/frpc.service:
[Unit]
Description=FRP Client
After=network-online.target
[Service]
Type=simple
User=USER
ExecStart=/home/USER/frp/frpc -c /home/USER/frp/frpc.toml
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
Вместо USER вставьте имя пользователя, от которого запускается FRPC
Не забудьте прописать полные пути к бинарникам и конфигам! После этого:
sudo systemctl daemon-reload
sudo systemctl enable --now frps # На сервере "Сервер Б"
sudo systemctl daemon-reload
sudo systemctl enable --now frpc # На сервере "Сервер А1"
Как пользоваться?
Теперь, чтобы попасть на Сервер А1, вам достаточно подключиться к Серверу Б на порт 2222:
ssh user_A1@IP_SERVER_B -p 2222
Внимание!
Вводите пароль именно для сервера "Сервер А1"
Почему FRP лучше Autossh в данном конкретном случае?
- Авто-переподключение: FRP гораздо «умнее» восстанавливает сессии при смене IP.
- Веб-панель: Вы всегда видите в браузере, подключен ли "Сервер А1" прямо сейчас.
- Масштабируемость: Захотите пробросить веб-сайт или базу данных — просто добавляете пару строк в
frpc.toml без перезапуска SSH-процессов.
Чтобы зайти в веб-интерфейс:
Откройте в браузере http://<IP_СЕРВЕРА_Б>:7500. Вы увидите в разделе "Proxies -> TCP", что туннель ssh-tunnel активен (Online).