Назад | Перейти на главную страницу

Iptables NAT (PAT) от A до B до C и обратно

Я хочу получить доступ через SSH к серверу БД из внешней сети через шлюз Linux (CentOS) с двумя интерфейсами в разных сетях, как показано ниже:

IP-адрес ПК администратора: 10.21.1.8

Linux GW IP eth1 Снаружи: 21.10.1.199 - Порт SSH 10051

Linux GW IP eth2 Внутри: 10.10.4.151

IP-адрес сервера БД: 10.10.4.51 - Порт SSH 22

ТЕЧЬ: 10.21.1.8 -> eth1: 10.21.1.199: 10051 -> eth2: 10.10.4.151 -> 10.10.4.51:22

и обратный путь

10.10.4.51 -> eth2: 10.10.4.151 -> 10.21.1.199 -> 10.21.1.8

Правила iptables, которые я пробовал, кажутся неправильными ... Что-то похожее с:

iptables -t mangle -A PREROUTING -d <Server1_eth0> -p tcp --dport 2223 -j MARK --set-mark 1 -i eth0

iptables -t nat -A PREROUTING -p tcp -m mark --mark 1 -j DNAT --to-destination <Server2>:2222 -i eth0

iptables -t nat -A POSTROUTING -m mark  --mark 1 -j SNAT --to-source <Server1_eth1> -o eth1 

iptables -A FORWARD -m mark --mark 1 -j ACCEPT -o eth1

Нужна подсказка .. спасибо ..

iptables -A ВПЕРЕД -d $ dst_ip -i eth2 -p tcp -m tcp --dport 10022 -j ПРИНЯТЬ

iptables -t nat -A PREROUTING -d $ src_ip -p tcp -m tcp --dport 10022 -j DNAT --to-destination $ dst_ip

iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

И .. решено THX.

В зависимости от ваших потребностей и конфигурации сети существуют разные решения.

Если ваш сервер БД 10.10.4.51 имеет путь маршрутизации к ПК администратора 10.21.1.8, вам просто нужно это правило NAT на вашем gw:

iptables -t nat -A PREROUTING -i eth1 -s 10.21.1.8 -p tcp --dport 2222 -j DNAT --to 10.10.4.51:22

а затем просто ssh в порт gw 10.21.1.199:2222.

Если ваш сервер БД не имеет шлюза в сеть 10.21, с помощью этого правила NAT вы можете «скрыть» адрес ПК администратора за IP-адресом gw:

iptables -t nat -A POSTROUTING -o eth2 -s 10.21.1.8 -p tcp -d 10.10.4.51 --dport 22 -j SNAT --to 10.10.4.151

Если у вас есть ssh-доступ к обоим серверам, и все, что вам нужно, это просто терминал, вы можете войти на сервер БД путем каскадирования ssh следующим образом:

ssh -t -l gwuser -p 10051 10.21.1.199 ssh -l dbuser -p 22 10.10.4.51