Я нашел несколько руководств о том, как это сделать, но ни одно из них не заработало :/
Моя установка:
БРАНДМАУЭР - доступен из интернета - 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 на машине брандмауэра и посмотреть, сможете ли вы поймать входящий запрос, и тот же запрос должен покинуть машину брандмауэра.