Назад | Перейти на главную страницу

Отправить HTTP-запрос через прокси-сервер в Интернет

У меня есть клиент, у которого нет прямого доступа к Интернету. Но он подключен к серверу по локальной сети, тогда как сервер имеет доступ к Интернету.

Я хочу отправить HTTP-запрос от клиента через Сервер в Интернет. Как я могу это сделать?

+--------+        +--------+        +--------+
|        |  LAN   | Ubuntu |   WAN  |        |
| Client <--------> 16.04  <-------->  WWW   |
|        |        | Server |        |        |
+--------+        +--------+        +--------+

Шаги:

  1. Клиент отправляет запрос на сервер в локальной сети по адресу https: // пользователь: пароль @ локальный-сервер: 1234
  2. Сервер перенаправляет запрос на удаленную конечную точку в https: // пользователь: пароль @ удаленный-сервер

Примечание: мне нужно только перенаправить HTTP-запрос на одну конечную точку

Я смотрел на бег Кальмар или tinyproxy на сервере, но я не уверен, как их правильно настроить или это самый простой подход. Нужен ли здесь прокси-сервер?

Есть два решения. Первый - настроить NAT на сервере, Второй - настроить HTTP Proxy. Так что, с моей точки зрения, для вашей ситуации лучший выход - настройте NAT, вам не нужно устанавливать дополнительное программное обеспечение, просто настройте firewall.

Настроить на iptables вам нужно сделать два шага:

Прежде всего убедитесь, что в ядре включена пересылка пакетов.

# echo 1 > /proc/sys/net/ipv4/ip_forward

Вы также можете сделать его постоянным, добавив строку ниже в /etc/sysctl.conf

net.ipv4.ip_forward = 1

Затем вы должны добавить к iptables Конфигурация двух правил:

-A PREROUTING -p tcp -m tcp --dport 1234 -j DNAT --to-destination internet-ip:1234
-A POSTROUTING -p tcp -m tcp --dport 1234 -j MASQUERADE

Это можно сделать командой:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 1234 -j DNAT --to-destination internet-ip:1234
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 1234 -j MASQUERADE

При этом вы должны убедиться, что нет правила для блокировки пересылки, это выглядит так -A FORWARD -j REJECT --reject-with icmp-host-prohibited. Если он существует, его можно удалить командой:

iptables -t filter -D FORWARD -j REJECT --reject-with icmp-host-prohibited

Кроме того, вы можете прочитать статьи о включении пересылки в ufw в интернете. Здесь два[1][2] Примеры.