Доступ к туннелированному локальному серверу через публичный IP-адрес облачного сервера

Я перевел свой локальный сервер на облачный сервер с VPN-туннелем (Tinc). Оба сервера могут общаться друг с другом через интерфейсы tun0.

Мой облачный сервер может быть доступен через Интернет с общедоступным IP-адресом, назначенным его интерфейсу eth0. Я хочу, чтобы мой локальный сервер был напрямую доступен на общедоступном IP-адресе моего облачного сервера. Я попытался соединить облачные интерфейсы eth0 и tun0 с помощью команд ниже:

ip link add name br0 type bridge
ip link set dev br0 up
ip link set dev tun0 master br0
ip link set dev eth0 master br0

Но eth0 не работает после того, как я подключу интерфейс eth0 (последняя команда выше). Я подозреваю, что это своего рода защита, которую сделал VPS-провайдер (Digital Ocean). Что я могу делать не так? Какие еще варианты у меня есть?

1 ответ

Позвольте мне ответить на мой собственный вопрос. Обратный прокси-сервер NGINX может решить эту проблему, создав такой файл конфигурации: /etc/nginx/sites-enabled/tunnel-config

server {
    listen <cloud server port> default_server;
    server_name  localhost;
    large_client_header_buffers 4 32k;
    root /usr/share/nginx/html;
    index index.html index.htm;
    location / {
        proxy_pass <tunneled remote server IP>:<port>;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Вот несколько источников для подробных объяснений:

https://www.nginx.com/resources/admin-guide/reverse-proxy/

https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-reverse-proxy-for-apache

Другие вопросы по тегам