CentOS 7 NAT маршрутизация и IPTABLES

Вопрос или проблема

У меня есть экземпляр CentOS, который работает как NAT для моей локальной сети. В моей локальной сети есть несколько подсетей. В одной из них расположен сервер PPTP VPN. Мне нужно опубликовать этот сервер в Интернете.

Итак, моя проблема заключается в том, что трафик не проходит от цепочки nat/PREROUTING в цепочку filter/FORWARD.

  • 1.1.1.1 – это мой внешний IP
  • 192.168.10.1 – это мой внутренний IP
  • 10.0.1.1 – это IP сервера VPN
  • eth0 – это внешний интерфейс
  • eth1 – это внутренний интерфейс

NAT правила (они работают. PKTS и BYTES изменяются)

-A PREROUTING -d 1.1.1.1/32 -i eth0 -p tcp -m tcp --dport 1723 -j DNAT --to-destination 10.0.1.1
-A PREROUTING -d 1.1.1.1/32 -i eth0 -p gre -j DNAT --to-destination 10.0.1.1

Правила фильтрации (это не работает. PKTS и BYTES не изменяются)

-A FORWARD -d 10.0.1.1/32 -i eth0 -o eth1 -p tcp -m tcp --dport 1723 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.0.1.1/32 -i eth1 -o eth0 -p tcp -m tcp --sport 1723 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 10.0.1.1/32 -i eth0 -o eth1 -p gre -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.0.1.1/32 -i eth1 -o eth0 -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT

Конечно, net.ipv4.ip_forward = 1, и я могу пинговать 10.0.1.1 с сервера NAT.

Команда tcpdump на порту 1723 показала действия только на внешнем интерфейсе.

У меня нет идей.

UPD1. Я проверил маршрутизацию с помощью ip route get 10.0.1.1 from <src> iif eth0 и получил RTNETLINK answers: Invalid argument. Кстати, я получил какой-то ответ, когда использовал любое имя iif (eth0, eth1, eth2). Я получил действующий маршрут только в том случае, если не использовал аргумент iif.

UPD2. Я добавил правило -A FORWARD -d 10.0.1.1/32 -j ACCEPT в цепочку filter/FORWARD как первое. Но ничего. Пакеты и байты были ноль.

  • Другие правила очень важны. И порядок правил тоже важен. Поэтому проверьте вывод команды iptables-save -c. Исследуйте правила выше тех, которые вы создали.

  • Между цепочками nat/PREROUTING и filter/FORWARD принимается решение о маршрутизации. Проверьте маршрутизацию с помощью ip route get 10.0.1.1 from <src> iif eth0. Это должно вернуть действующий маршрут. Если это что-то другое, вставьте его в вопрос.

  • Также исследуйте вывод команды nstat -az.

  • Чтобы передать PPTP через NAT, вам необходимо загрузить модули для conntrack:

    • nf_conntrack_proto_gre
    • nf_nat_proto_gre
    • nf_conntrack_pptp
    • nf_nat_pptp
  • В недавних ядрах вам нужно явно включить вспомогательные программы conntrack, особенно для PPTP. Поэтому вам нужно добавить дополнительное правило.

iptables -t raw -A PREROUTING -p tcp -m tcp --dport 1723 -j CT --helper pptp
  • Другой способ включить помощника – это команда sysctl:
sysctl -w net.netfilter.nf_conntrack_helper=1
  • Другие инструменты для устранения неполадок вашей проблемы:
    • conntrack -E – мониторинг событий conntrack
    • tcpdump
    • -j NFLOG и tcpdump -ni nflog – позволяют захватывать пакеты из правила iptables.
    • -j TRACE целевое – вы можете исследовать путь пакетов через правила брандмауэра.

P.S. Обновите вопрос, если вы все еще застряли.

Ответ или решение

Настройка NAT и IPTABLES на CentOS 7 для доступа к PPTP VPN-серверу

Введение

В данной статье мы рассмотрим, как правильно настроить NAT и IPTABLES на сервере с CentOS 7, чтобы обеспечить доступ к PPTP VPN-серверу, работающему в вашей локальной сети. Это важно для обеспечения безопасности и эффективного перенаправления трафика.

Сетевая архитектура

  1. Внешний IP-адрес: 1.1.1.1
  2. Внутренняя подсеть: 192.168.10.1
  3. IP-адрес VPN-сервера: 10.0.1.1
  4. Сетевые интерфейсы:
    • eth0 — внешний интерфейс
    • eth1 — внутренний интерфейс

Обзор проблемы

Основная проблема заключается в том, что трафик не проходит из цепочки nat/PREROUTING в цепочку filter/FORWARD, и при просмотре статистики по правилам IPTABLES (PKTS и BYTES) не происходит увеличение значений для цепочки FORWARD.

Настройка NAT

Для корректного перенаправления трафика на PPTP VPN-сервер необходимо установить правильные правила NAT:

iptables -t nat -A PREROUTING -d 1.1.1.1/32 -i eth0 -p tcp --dport 1723 -j DNAT --to-destination 10.0.1.1
iptables -t nat -A PREROUTING -d 1.1.1.1/32 -i eth0 -p gre -j DNAT --to-destination 10.0.1.1

Настройка фильрации трафика

Чтобы разрешить трафик в цепочке FORWARD, необходимо использовать следующие правила:

iptables -A FORWARD -d 10.0.1.1/32 -i eth0 -o eth1 -p tcp --dport 1723 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.0.1.1/32 -i eth1 -o eth0 -p tcp --sport 1723 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -d 10.0.1.1/32 -i eth0 -o eth1 -p gre -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.0.1.1/32 -i eth1 -o eth0 -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT

Включение маршрутизации

Убедитесь, что маршрутизация включена на сервере:

echo 1 > /proc/sys/net/ipv4/ip_forward

Или добавьте в файл /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Проверка маршрутизации

Проверьте маршрутизацию для IP-адреса VPN-сервера:

ip route get 10.0.1.1

Если вы получаете ошибку RTNETLINK answers: Invalid argument, убедитесь, что вы используете правильный исходный IP-адрес и интерфейс.

Включение conntrack для PPTP

Для корректной работы PPTP подключений необходимо загрузить модули для conntrack:

modprobe nf_conntrack_proto_gre
modprobe nf_nat_proto_gre
modprobe nf_conntrack_pptp
modprobe nf_nat_pptp

Также добавьте правило для использования helper:

iptables -t raw -A PREROUTING -p tcp -m tcp --dport 1723 -j CT --helper pptp

Или сделайте это через sysctl:

sysctl -w net.netfilter.nf_conntrack_helper=1

Инструменты для устранения неполадок

Для диагностики проблем используйте следующие команды:

  • conntrack -E для мониторинга событий conntrack.
  • tcpdump для захвата пакетов на интерфейсах.
  • Правило с -j NFLOG для захвата пакетов через iptables.
  • Используйте -j TRACE для отслеживания пакетов через ваши правила фильтрации.

Заключение

Приведенные инструкции должны помочь вам правильно настроить NAT и IPTABLES для доступа к вашему PPTP VPN-серверу. Убедитесь, что все модули и правила настроены правильно, и используйте предложенные инструменты для диагностики, если проблема не решена. Если у вас есть дополнительные вопросы или проблемы, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...