
У меня есть SSH-туннель, определенный в /etc/ssh/ssh_config
. Он содержит:
LocalForward 0.0.0.0:8000 some-service:80
LocalForward 0.0.0.0:8001 some-other-service:80
Я бы все равно хотел иметь возможность доступа к туннелям через их оригинальные DNS-имена (например, curl some-service
это должно работать, вместо того, чтобы использовать curl 0.0.0.0:8000
)
В попытке сделать это я добавил в свой /etc/hosts
файл следующее:
127.0.0.2 some-service
127.0.0.3 some-other-service
Теперь, я думаю, мне нужны iptables
команды, которые будут делать следующее:
When I see a request to 127.0.0.2:80 I should proxy it to 127.0.0.1:8000
When I see a request to 127.0.0.3:80 I should proxy it to 127.0.0.0:8001
Таким образом, curl some-service
будет разрешен 127.0.0.2
(через /etc/hosts
, который в свою очередь будет проксирован на 127.0.0.1:8000
(через iptables
), который в свою очередь попадет some-service:80
(через туннель ssh)
Вопрос: Мне кажется, что должен быть более простой способ добиться этого? Если нет, то как будут iptables
выглядеть команды?
решение1
Использоватьssh
DynamicForwardвозможность настроить прокси-сервер Socks, добавив это в свой файл .ssh/config
:
DynamicForward localhost:8000
Затем скажите curl использовать SOCKS:
curl --socks5 localhost:8000 ...
Есть и другие способы использования curl
носков; см.документация.
решение2
Не уверен, что здесь правильный этикет (закрыть вопрос? отметить как дубликат?), но у меня есть принятый ответ на этот вопрос здесь:
https://serverfault.com/questions/982063/transparent-ssh-tunneling