В настоящее время я столкнулся с проблемой в RHEL 7.0, связанной с опцией ssh -g (т. е. подключением удаленных хостов к локальным перенаправленным портам).
Я устанавливаю соединение с переадресацией портов с сервера по адресу myserver_ip с помощью обычной командной строки:
ssh -o StrictHostKeyChecking=no user@server_fqn -L9090:other_server_ip:9080 -g
Когда я указываю в своем браузере (или пытаюсь получить что-то с помощью curl, я получаю исключение «Отказано в подключении»):
curl -X GET "http://myserver_ip:9090"
curl: (7) Failed to connect to myserver_ip port 9090: No route to host
Если я делаю то же самое на сервере Ubuntu, то все работает отлично, однако на RHEL это просто не работает.
Я подозревал брандмауэр, selinux и даже сетевое подключение.
Для решения/устранения этой проблемы я попробовал следующее:
- отключил брандмауэр (
service firewalld stop
) - проверил, что selinux управляет 9090 как допустимым http-портом (
semanage port -l | grep 9090
), все в порядке - проверил, что порт открыт через netstat(
netstat -alptn | grep 9090
), кажется, все в порядке, у меня есть процесс ssh, прослушивающий 9090 - проверил, что сервер получает пакеты на порту 9090 интерфейса ehternet (
tcpdump -i ens192 'port 9090' -v
), и действительно пакеты принимаются ...
Итак, по сути, это означает, что система получает запросы на интерфейсе, процесс ssh прослушивает все интерфейсы на указанном порту, однако процесс ssh не пересылает пакеты на другую сторону...
У меня действительно нет информации по устранению неполадок, поэтому если у вас есть какие-либо предложения, пожалуйста, не стесняйтесь, я буду очень признателен за помощь.
Спасибо,
решение1
Curl уже сказал вам ответ. Это не про SSH, это не про брандмауэры, это не про selinux.
no route to host
Машина, на которой запущен curl, не знает, куда следует отправлять пакеты, предназначенные для (IP-адрес, с которым он ассоциируется) моего server_ip