Privoxy + ssh перенаправляет удаленный HTTP-запрос на локальный веб-сервер

У моего локального компьютера нет общедоступного IP-адреса, и ИТ-отдел не может настроить для меня NAT, я хочу настроить прокси на моем удаленном общедоступном сервере, который будет пересылать запрос на мой локальный сервер.

Я пытаюсь использовать Privoxy + ssh, но он говорит о недопустимом заголовке.

Шаг 1: откройте туннель ssh на

ssh -nNT -R 8081:localhost:8080 user@example.com

Шаге 2: На удаленной машине настройте конфигурацию Privoxy, я попробовал

forward-socks5 / 127.0.0.1:8081 .
listen-address 0.0.0.0:8080

и

forward / 127.0.0.1:8081
listen-address 0.0.0.0:8080

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

0
15.07.2016, 14:49
2 ответа

После некоторого расследования я нашел причину:

Privoxy не подходит для такой работы с обратным прокси, а ssh forward может принимать только локальный трафик.

Поэтому есть 2 подхода для решения этой проблемы:

  1. настроить правило iptables для пересылки tcp (я не профессионал в этом, но думаю, что это возможно)

  2. настроить обратный прокси, пересылающий запрос на порт пересылки ssh, это можно сделать через nginx, или написать простой самостоятельно, например, используя go:

e. g.

package main
import (
    "net/http/httputil"
    "net/http"
    "net/url"
    "log"
)

func main() {
    target, _ := url.Parse("http://localhost:8081")
    proxy := httputil.NewSingleHostReverseProxy(target);
    http.Handle("/", proxy)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
0
28.01.2020, 04:50

Вы не открываете туннель с помощью:

ssh -R -nNT 8081:localhost:8080 user@example.com

, но это должно произойти.

Это должно быть

ssh -nNT -R 8081:localhost:8080 user@example.com

, и это называется переадресацией удаленного порта.

0
28.01.2020, 04:50

Теги

Похожие вопросы