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

Открытие порта для доступа к службе в изолированной локальной сети

Имеется изолированная локальная сеть (полностью изолированная, нет доступа извне, а извне нет доступа к ней). Но один из серверов имеет 2 сетевых адаптера, один из которых находится в нашей локальной сети разработчика, а другой - в изолированной локальной сети.

Цель состоит в том, чтобы из локальной сети разработчиков получить доступ к определенным службам TCP внутри изолированной локальной сети. Например. из локальной сети разработчика (например, dev-laptop-01) Я хочу получить доступ к службе SSH сервера внутри изолированной локальной сети (например, iso-server-01), сервер, имеющий роль «шлюза» (например, gw-server), должен предоставить службу SSH в локальной сети разработчика и перенаправить / перенаправить ее поставщику службы в изолированной локальной сети.

Я хотел использовать iptables со следующей конфигурацией:

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 10022 -j DNAT --to iso-server-01
iptables -t nat -A POSTROUTING -p tcp -m tcp -s iso-server-01 --sport 22 -j SNAT --to-source gw-server
sysctl net.ipv4.ip_forward=1

Но это не работает. С моего dev-laptop-01, когда я выдаю ssh -p 10022 gw-server Я получаю Connection timed out ошибка.

Как лучше всего подойти к этой проблеме?

PS: Я использую RHEL 6.6.

По iptables ответа не нашел.

Но это другие альтернативы:

SSH

Вероятно, можно «связать» ssh-соединения для достижения вышеуказанного результата, когда SSH является желаемой службой, но это не работает в других случаях.

Возможно использование SSH-туннелирования. Что-то вроде следующего (для выполнения на gw-сервере, обратите внимание, что gw-server-dev разрешает IP-адрес локальной сети разработчика):

ssh -f -N -L gw-server-dev:10022:iso-server-01:22 <user>@gw-server-dev

Это решение отличается элегантностью: даже если в изолированном сервисе не используется шифрование, мы получаем преимущество шифрования благодаря SSH. И он должен работать с любой службой TCP.

Обратной стороной является то, что в случае сбоя этой команды нет простого способа ее перезапустить. Но ssh довольно стабилен.

xinet

Я также обнаружил, что с помощью xinet можно достичь того, что я хочу для любой службы TCP.

Вот пример файла:

service iso-server-01-ssh
{
  disable = no
  flags = REUSE
  socket_type = stream
  wait = no
  user = root
  redirect = iso-server-01 22
  log_on_failure += USERID
}

(Необходимо, чтобы в / etc / services был порт, соответствующий iso-server-01-ssh. В нашем примере это 10022).

iptables

Там у меня нет ответа. Так что, если у вас есть такой, я отмечу ваш ответ как принятый. Мой ответ предназначен для тех, кто ищет аналогичное решение, но кого бы устраивали альтернативы (меня они тоже устраивают, я просто «разочарован» тем, что не смог заставить iptables делать то, что я хотел ;-)) .