Я хотел бы сделать CentOS машиной NAT с переадресацией портов с использованием iptables. Я пробовал это в первый раз и думаю, мне может понадобиться небольшая помощь.
Это конфигурация, которую я пытаюсь достичь. Я пытаюсь установить подключение к удаленному рабочему столу через машину CentOS через порт 80, а CentOS подключается к серверу через порт 80.
192.168.0.120 - это клиент, который должен подключиться к порту 80 на 192.168.30.37, подключившись к 192.168.0.100 (CentOS) на порту 80.
Что я пробовал до сих пор:
Включена пересылка IPv4 в /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward = 1
/ etc / systemconfig / iptables - это
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [12:944]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i ens160 -o ens192 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ens192 -o ens160 -j ACCEPT
-A FORWARD -i ens160 -o ens224 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ens224 -o ens160 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
*nat
:PREROUTING ACCEPT [4:272]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i ens160 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.30.37:80
-A POSTROUTING -o ens160 -j MASQUERADE
-A POSTROUTING -d 192.168.0.100/32 -j MASQUERADE
COMMIT
Так что что-то не так с моими правилами iptables? Или я что-то упускаю?
В RedHat Entrprise Linux 7.0 (восходящий поток CentOS 7.0) предполагаемое взаимодействие с iptables
проходит через firewalld
. Изменение вручную iptables
Конфигурация, хотя и возможна, не является предполагаемым методом взаимодействия.
Если вы хотите изменить iptables
конфигурации напрямую, вы можете посмотреть документацию по iptables
. Вы идете по правильному пути, но, например, -i
и -o
аргументы предназначены для обозначения входных и исходящих интерфейсов (eth0
и т. д.), а не имена хостов. Похоже, вам просто нужно немного узнать, как iptables
работает.
В любом случае, вам не хватает ПРАВИЛА ВПЕРЕД
iptables -A FORWARD -i ens160 -o ens192 -p tcp -m tcp -d 192.168.30.37 -m state --state NEW -j ACCEPT
Перед этим вам необходимо вставить указанные выше правила:
-A FORWARD -j REJECT --reject-with icmp-host-prohibited