Я нашел несколько руководств о том, как это сделать, но ни один из них не работал: /
Моя установка:
Файерволл - доступен из Интернета - 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-rules не имеет большого смысла, потому что ни одно из правил не сработало (использовалось PREROUTING, POSTROUTING, FORWARD ...) и нет других правил.
Да, мой брандмауэр ничего не блокирует. Но это не о безопасности (пока).
Я перепробовал все, что нашел на первых страницах: https://www.google.de/search?q=iptables+forward+ssh
Какие-либо предложения?
С уважением, Йенс
ОБНОВИТЬ Вот результат tcpdump -n -i any
после использования команды Khaled 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 ... или есть способ?
Если вы разрешаете трафику проходить через брандмауэр и у вас включена переадресация 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 на машине с брандмауэром и посмотреть, сможете ли вы поймать приходящий запрос, и тот же запрос должен покинуть машину с брандмауэром.