- Вопрос или проблема
- Ответ или решение
- Настройка NAT и IPTABLES на CentOS 7 для доступа к PPTP VPN-серверу
- Введение
- Сетевая архитектура
- Обзор проблемы
- Настройка NAT
- Настройка фильрации трафика
- Включение маршрутизации
- Проверка маршрутизации
- Включение conntrack для PPTP
- Инструменты для устранения неполадок
- Заключение
Вопрос или проблема
У меня есть экземпляр CentOS, который работает как NAT для моей локальной сети. В моей локальной сети есть несколько подсетей. В одной из них расположен сервер PPTP VPN. Мне нужно опубликовать этот сервер в Интернете.
Итак, моя проблема заключается в том, что трафик не проходит от цепочки nat/PREROUTING
в цепочку filter/FORWARD
.
1.1.1.1
– это мой внешний IP192.168.10.1
– это мой внутренний IP10.0.1.1
– это IP сервера VPNeth0
– это внешний интерфейс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
– мониторинг событий conntracktcpdump
-j NFLOG
иtcpdump -ni nflog
– позволяют захватывать пакеты из правила iptables.-j TRACE
целевое – вы можете исследовать путь пакетов через правила брандмауэра.
P.S. Обновите вопрос, если вы все еще застряли.
Ответ или решение
Настройка NAT и IPTABLES на CentOS 7 для доступа к PPTP VPN-серверу
Введение
В данной статье мы рассмотрим, как правильно настроить NAT и IPTABLES на сервере с CentOS 7, чтобы обеспечить доступ к PPTP VPN-серверу, работающему в вашей локальной сети. Это важно для обеспечения безопасности и эффективного перенаправления трафика.
Сетевая архитектура
- Внешний IP-адрес:
1.1.1.1
- Внутренняя подсеть:
192.168.10.1
- IP-адрес VPN-сервера:
10.0.1.1
- Сетевые интерфейсы:
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-серверу. Убедитесь, что все модули и правила настроены правильно, и используйте предложенные инструменты для диагностики, если проблема не решена. Если у вас есть дополнительные вопросы или проблемы, не стесняйтесь задавать их.