Я хотел бы сделать CentOS машиной NAT с переадресацией портов с использованием iptables. Я пробовал это в первый раз и думаю, мне может понадобиться небольшая помощь.
Это конфигурация, которую я пытаюсь достичь. Я пытаюсь установить подключение к удаленному рабочему столу через машину CentOS через порт 5500, а CentOS подключается к серверу через порт 3389.
192.168.21.11 - это клиент, который должен подключиться к порту 3389 на 192.168.9.120, подключившись к 192.168.21.10 (CentOS) на порту 5500.
Что я пробовал до сих пор:
Включена пересылка IPv4 в /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward = 1
Выполните следующие команды 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