Это, вероятно, довольно просто, но я просто не могу обернуть голову вокруг этого.

Я настроил поддомен, скажем, это 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 ? Это понятно, потому что мой колледж недавно внедрил какую-то сетевую фильтрацию, хотя подробностей об этом немного. Хотя я не понимаю, почему так себя ведет?

1 ответ1

1

Какой IP адрес не ваш сервер Nginx получить соединение с?

Похоже, что существует "прозрачный прокси", который перехватывает все HTTP-запросы, которые отправляет ваш локальный компьютер, и пересылает их на основе заголовка Host. (Это может быть вирус, антивирус, кеширующий прокси, родительский фильтр и т.д.)

Тем более, что ваш заголовок X-Forwarded-For имеет два IP-адреса, хотя Nginx должен был добавить только один.

DNS-серверы Google, конечно, не выполняют такую пересылку - они даже не принимают соединения через порт 80. (На самом деле, "открытые прокси", ведущие себя так, будут широко рассматриваться как проблема безопасности ...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .