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

Сделайте CentOS 6.x устройством NAT с перенаправлением портов

Я хотел бы сделать CentOS машиной NAT с переадресацией портов с использованием iptables. Я пробовал это в первый раз и думаю, мне может понадобиться небольшая помощь.

Это конфигурация, которую я пытаюсь достичь. Я пытаюсь установить подключение к удаленному рабочему столу через машину CentOS через порт 5500, а CentOS подключается к серверу через порт 3389.

192.168.21.11 - это клиент, который должен подключиться к порту 3389 на 192.168.9.120, подключившись к 192.168.21.10 (CentOS) на порту 5500.

Что я пробовал до сих пор:

  1. Отключен SELINUX
  2. Включена пересылка IPv4 в /etc/sysctl.conf

    /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    
  3. Выполните следующие команды iptables

    iptables -t nat -A PREROUTING -p tcp -d 192.168.21.10 --dport 5500 -j DNAT --to 192.168.9.120:3389
    iptables -A INPUT -i eth1 -p tcp --dport 5500 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth0 -p tcp --sport 5500 -m state --state ESTABLISHED -j ACCEPT
    service iptables save
    

После сохранения этой конфигурации я не смог установить подключение к удаленному рабочему столу, которого я пытаюсь достичь, так что что-то не так с моими правилами iptables? Или я что-то упускаю?

Попробуйте добавить это правило в свой / etc / sysconfig / iptables сразу после -A PREROUTING -p tcp -d 192.168.21.10 --dport 5500 -j DNAT --to 192.168.9.120:3389

-A POSTROUTING -d 192.168.9.120 -j MASQUERADE

Во-вторых, проверьте, установлен ли net.ipv4.ip_forward в 1, выполнив 'sysctl -a | grep net.ipv4.ip_forward`

Если он все еще установлен на 0, выполните:

sysctl -w net.ipv4.ip_forward=1

Вам следует прочитать о разнице между iptables -A и iptables -I и взгляните на правила по умолчанию в вашей системе. Похоже, что ваше правило INPUT не будет работать, по крайней мере, из-за разницы.

Установка значения в /etc/sysctl.conf не устанавливает его в работающем ядре. В sysctl (8) страница руководства - ваш друг.

Не просто отключайте SELinux - он помогает защитить вас.

Попробуйте добавить:

iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT