Система Centos 6, но это наверное неважно.
Ситуация такая: есть сервер, на нем поднят vpn, к нему подключаются клиенты. Интерфейсы такие:
eth0:
IPADDR=195.5.5.5 - внешний и единственный реальный, на него же приходит интернет от провайдера.
NETMASK=255.255.255.224
Для подключения VPN-клиентов:
интерфейс ppp*
ip 10.10.5.1 - сам сервер, он же шлюз.
10.10.10.5.0\24 - адреса, раздаваемые клиентам.
конфиг iptables выглядит так:
---------------------------
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p gre -j ACCEPT
-A INPUT -i eth0 -m tcp -p tcp --dport 1723 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#
*nat
-A POSTROUTING -o eth0 -s 10.10.5.0/24 -j SNAT --to-source 195.5.5.5
#
COMMIT
----------------------
Открыты порты 22, 80, 1723, поскольку установлены сервера SSH, HTTP, VPN.
Задача такая: клиенты, подключенные через VPN, и имеющие адреса 10.10.5.0/24, должны попадать в интернет через 195.5.5.5. В прицнипе все работает, если из iptables полностью убрать *filter, оставить только *nat. Клиенты видят интернет нормально.
Если *filter не убирать, то трафик режется, клиенты не видят узлов в интернете.
Наверное в *filter надо дописать некоторые правила, но какие - не получается придумать, чтобы не ослабить защиту сервера.
Есть еще такой скрипт, который выполняется при подключении VPN:
-----------------------------
#!/bin/sh
PPTP_IF=$1 # Имя виртуального интерфейса ppp
PPTP_ADDR=$5 # Внутренний IP адрес клиента
LOCAL_NET_IF="eth0" # внешний интерфейс нашего сервера
# разрешаем проходжение пакетов между локальной сетью и клиентом
iptables -A FORWARD -i ${PPTP_IF} -s ${PPTP_ADDR} -o ${LOCAL_NET_IF} -j ACCEPT
iptables -A FORWARD -i ${LOCAL_NET_IF} -d ${PPTP_ADDR} -o ${PPTP_IF} -j ACCEPT
# разрешаем входящие пакеты с нашего сервера к клиенту
iptables -A INPUT -i ${PPTP_IF} -j ACCEPT
----------------------------
но, к сожалению, результат тот же самый.
Подскажите пожалуйста, что придумать.