Отправить HTTP-запрос через прокси-сервер в Интернет
У меня есть клиент, который не имеет прямого доступа к Интернету. Но он подключен к серверу через подключение к локальной сети, в то время как сервер имеет доступ к Интернету.
Я хотел бы отправить HTTP-запрос от клиента через Сервер в Интернет. Как я могу это сделать?
+--------+ +--------+ +--------+
| | LAN | Ubuntu | WAN | |
| Client <--------> 16.04 <--------> WWW |
| | | Server | | |
+--------+ +--------+ +--------+
шаги:
- Клиент отправляет запрос на сервер в локальной сети по адресу https://user:pass@local-server:1234/
- Сервер пересылает запрос на удаленную конечную точку по адресу https://user:pass@remote-server/
Примечание: мне нужно только перенаправить HTTP-запрос на одну конечную точку
Я смотрел на запуск squid или tinyproxy на сервере, но я не уверен, как правильно их настроить или это самый простой подход. Нужен ли здесь прокси-сервер?
1 ответ
Есть два решения. Первый - настроить NAT на сервере, второй - настроить HTTP Proxy. Так что, с моей точки зрения, для вашей ситуации лучше всего - настроить NAT, вам не нужно устанавливать никакого дополнительного программного обеспечения, просто настройте брандмауэр.
Чтобы настроить его на 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] примера.