Это, вероятно, довольно просто, но я просто не могу обернуть голову вокруг этого.
Я настроил поддомен, скажем, это nc.example.com
. Настройте мой DNS и все, чтобы указать поддомен на удаленный сервер, на котором работает Nginx, который обратный прокси-сервер запрос на порт 3123
.
Затем я прослушиваю запросы, используя netcat на удаленном сервере, например:
nc -l 3123
Так что я могу получать HTTP-запросы от nc.example.com
.
Затем на своем локальном компьютере я использую netcat для подключения к несвязанному серверу (общедоступный DNS Google), например:
$ nc 8.8.8.8 80
GET / HTTP/1.1
Host: nc.example.com
(с дополнительными двумя символами новой строки, чтобы он завершил HTTP-запрос, но не может быть отображен здесь)
Я получаю соединение на моем удаленном сервере следующим образом:
$ nc -l 3123
GET / HTTP/1.1
Connection: upgrade
Host: nc.example.com
X-Real-IP: <redacted_1>
X-Forwarded-Host: nc.example.com
X-Forwarded-Server: nc.example.com
X-Forwarded-For: <redacted_2>, <redacted_1>
Теперь я не уверен, почему это происходит, потому что я думал, что nc
будет подключаться к 8.8.8.8
, а не к IP-адресу моего сервера. 8.8.8.8
пересылает запрос на мой сервер от моего имени? Есть ли какие-либо последствия для безопасности в результате этого?
РЕДАКТИРОВАТЬ:
Я только что понял, что <redacted_2>
- это частный IP-адрес (172.24.199.96
), назначенный моей "домашней" сети (доступ к нему приводит меня на домашнюю страницу моего маршрутизатора). Я делаю это в сети моего колледжа.
Означает ли это, что вышестоящий маршрутизатор проксирует запрос для меня на основе заголовка Host
? Это понятно, потому что мой колледж недавно внедрил какую-то сетевую фильтрацию, хотя подробностей об этом немного. Хотя я не понимаю, почему так себя ведет?