Доброе время суток, либо мои знания скудны и ограничены, либо одно из двух...
Необходимо пробросить RDP порт через NAT. Использую rinetd - все просто и работает, но идет подмена источника, в логах вместо ip клиента указывается ip шлюза. Мучался с iptables - пошерстил сеть, не понимаю..
Оригинал iptables
#!/bin/bash
# LAN interface
IF0="eth0"
# WAN interface 1
IF1="eth1"
# IP WAN interface 1
IP1="110.120.130.205"
# gateway 1
P1="110.120.130.254"
# LAN netmask
P0_NET="10.0.0.0/24"
# WAN1 netmask
P1_NET="110.120.130.0/24"
####################
# Очищаем правила
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X
# Запрещаем все, что не разрешено
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Разрешаем localhost и локалку
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $IF0 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o $IF0 -j ACCEPT
# Разрешаем пинги
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Разрешаем все исходящие подключения сервера
iptables -A OUTPUT -o $IF1 -j ACCEPT
# Разрешаем установленные подключения
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Отбрасываем неопознанные пакеты
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
# Отбрасываем нулевые пакеты
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# Закрываемся от syn-flood атак
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем доступ из локалки наружу
iptables -A FORWARD -i $IF0 -o $IF1 -j ACCEPT
# Закрываем доступ снаружи в локалку
iptables -A FORWARD -i $IF1 -o $IF0 -j REJECT
# Переадресация 80 и 443 портов на прозрачный сквид
iptables -t nat -A PREROUTING -p tcp -m tcp -s 10.0.0.0/24 --dport 443 -j REDIRECT --to-ports 3443
iptables -t nat -A PREROUTING -p tcp -m multiport -s 10.0.0.0/24 --dports 80,81,82,88,1080,3127,3128,7900,8000,8080,8081,8088,8123,8888,9090 -j REDIRECT --to-ports 3080
# Включаем NAT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE
# Открываем порты
iptables -A INPUT -i $IF1 -p tcp --dport 55555 -j ACCEPT
iptables -A INPUT -i $IF1 -p tcp --dport 55554 -j ACCEPT
iptables -A INPUT -i $IF0 -p tcp --dport 123 -j ACCEPT
iptables -A INPUT -i $IF0 -p udp --dport 123 -j ACCEPT
# Открываем доступ к web серверу
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# Сохраняем правила
/sbin/iptables-save > /etc/iptables.rules
iptables-restore < /etc/iptables.rules
Пробовал
iptables -t nat -A PREROUTING -p tcp -m tcp -d 110.120.130.205 --dport 55554 -j DNAT --to-destination 10.0.0.10:3389
iptables -t nat -A POSTROUTING -p tcp -m tcp -d 10.0.0.10 --sport 3389 -j SNAT --to-source 110.120.130.205:55554
iptables -t nat -A PREROUTING -d 110.120.130.205 -p tcp --dport 3389 -j DNAT --to-destination 10.0.0.10:3389
iptables -t filter -A FORWARD -m state --state NEW -p tcp --dport 3389 -j ACCEPT
Ни в одном случае не взлетело