Используйте iptables для переадресации ssh

Используйте iptables для переадресации ssh

Я нашел несколько руководств о том, как это сделать, но ни одно из них не заработало :/

Моя установка:

БРАНДМАУЭР - доступен из интернета - eth0: xxx.xxx.xxx.xxx (публичный IP) - eth1: 192.168.1.1

СЕРВЕР - доступен из БРАНДМАУЭРА - eth0: 192.168.1.5

Поскольку я по-прежнему хочу иметь возможность подключаться к брандмауэру через порт 22, я хотел бы перенаправить входящие соединения через порт 2222 на 192.168.1.5:22.

ping и ssh от БРАНДМАУЭРА до СЕРВЕРА работают. ping и ssh от СЕРВЕРА до БРАНДМАУЭРА тоже работают (хотя вход разрешен только с открытым ключом, а с СЕРВЕРА не разрешен...)

ping и ssh из любой точки мира на БРАНДМАУЭР работают.

Переадресация IP включена:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Публикация моих правил iptables не имеет особого смысла, поскольку ни одно из правил не сработало (использовались PREROUTING, POSTROUTING, FORWARD...), а других правил нет.

Да, мой брандмауэр ничего не блокирует. Но это не о безопасности (пока).

Я перепробовал все, что нашел на первой-второй страницах: https://www.google.de/search?q=iptables+forward+ssh

Какие-либо предложения?

С уважением, Йенс

ОБНОВЛЯТЬ Вот вывод tcpdump -n -i anyпосле использования команды iptables Халеда:

15:42:33.852718 IP home-ip.56008 > firewall-public-ip.2222: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0
15:42:33.852752 IP home-ip.56008 > 192.168.1.5.22: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0

Я бы предположил, что во второй строке будет что-то вроде ... IP 192.168.1.1.45678 > 192.168.1.5.22 ...

Эти две строки повторяются несколько раз, так как мой ssh-клиент пытается подключиться несколько раз. Но ответа нет.

2-е обновление Маршруты сервера (192.168.1.5) следующие:здесь. Я только что добавил маршрут

public-firewall-ip  255.255.255.255      192.168.1.1     192.168.1.5       1

но это не имеет никакого эффекта. На сервере работает Win XP с установленным cygwin sshd. Я не упоминал об этом раньше, потому что ssh от брандмауэра до сервера работает просто отлично. Но когда дело доходит до маршрутизации, я чувствую, что Windows несколько ограничена.

Сейчас я устанавливаю Wireshark на сервер и через несколько минут выложу результат.

Трассировка на сервере Трассировка на сервере показывает прибывающий SYN на порт 22 и уходящий SYN,ACK на мой домашний IP. Я думаю, что это ошибка. ACK должен быть отправлен на брандмауэр, а затем замаскирован, потому что в уходящем пакете исходный IP/порт теперь 192.168.1.5:22. Это никак не может достичь моего ноутбука дома за NAT... или есть способ?

решение1

Если вы разрешаете трафику проходить через брандмауэр и у вас включена переадресация IP, вам понадобится всего одно правило NAT для пересылки трафика SSH на порт 2222. Должно подойти следующее правило:

$ iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.5:22

Обновлять:

Сетевой сниффер — ваш друг при отладке таких проблем. Вы можете запустить tcpdump на машине брандмауэра и посмотреть, сможете ли вы поймать входящий запрос, и тот же запрос должен покинуть машину брандмауэра.

Связанный контент