Linux
-IPTABLES Port Forwarding RDP / Переадресовываем пакеты
Когда уезжаю в Оренбург, оставляю дома компьютер включенным 24/7, иногда требуется подключится по RDP и скинуть пару файлов или ещё что-нибудь. Проблема заключается в том, что IP динамический и постоянно меняется, есть лёгкое решение, настроить DynDNS в настройках модема и остановиться на этом, но любой программист любит извращаться, пока не реализует свою идею. А вот и моё извращение, вбив в настройках модема данные DynDNS я получил адрес example.dyndns.org (далее, IP автоматически обновляется я только указываю адрес при подключении), так вот задумка была в том, имея свой сервер реализовать переадресацию tcp пакетов, с сервера на домашний компьютер, то есть при подключении по адресу: serj.ws:5000 я автоматически коннектился к RDP (домашнему компьютеру), как реализовал:
Написал небольшой BASH скрипт, который определяет IP адрес example.dyndns.org, далее вбивает привила для форвардинга:
(77.77.77.77 - Пример IP сервера, XX.XX.XX.XX - IP example.dyndns.org) и добавил в крон.
iptables -A FORWARD -i eth0 -p tcp --dport 5000 -j ACCEPT
iptables -t nat -A PREROUTING -d 77.77.77.77 -p tcp -m tcp --dport 5000 -j DNAT --to-destination XX.XX.XX.XX:3389
iptables -t nat -A POSTROUTING -d XX.XX.XX.XX -p tcp -m tcp --dport 3389 -j SNAT --to-source 77.77.77.77
1) Из первого правила, следует: eth0 - сетевой интерфейс с инетом, из которого разрешаем коннект на 5000 порт.
2) Из второго правила, следует: 77.77.77.77 - IP Сервера, форвардим tcp трафик с порта 5000 на IP XX.XX.XX.XX с портом 3389
3) В Третьем, возвращаем полученный ответ с XX.XX.XX.XX на 77.77.77.77
В итоге, можно спокойно подключаться по адресу 77.77.77.77 :5000, вот такое издевательство мне пришло в голову :)