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

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

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

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

192.168.0.120 - это клиент, который должен подключиться к порту 80 на 192.168.30.37, подключившись к 192.168.0.100 (CentOS) на порту 80.

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

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

    /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    
  3. / 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