Возникла надобность поднять свой VPN-сервер на роутере, а точнее дополнительный, так как обычный PPTP уже был настроен, но доблестный МТС режет GRE туннель и из-за этого нет возможности к нему подключаться. Выход — разбираться и ставить OpenVPN.
1. Будем считать, что прошивка на роутере уже установлена. Внутренний IP адрес роутера 192.168.111.1
В сети очень много мануалов, но ни один не подходил для моих целей, так как были вечные проблемы с пингом, роутингом и вообще хождением пакетов между узлами. Наконец-то выяснив, что да как, выкладываю свой вариант конфига и правил для брэндмауэра.
2. Как и где генерить ключи расписывать пока тоже не буду. Это есть в интернете.
Генерируем, добавляем их в поля в прошивке DD-WRT, генерируем так же ключи и сертификаты для клиентов.
3. Настройки OpenVPN сервера:
OpenVPN Enable
Start Type WAN Up
System Config as Daemon
Additional Config
dev tun0
proto udp
client-to-client
push "route 192.168.111.0 255.255.255.0"
push "redirect-gateway def1"
#push "route-gateway 192.168.111.1"
push "dhcp-option DNS 192.168.111.1"
server 10.8.0.0 255.255.255.0
route 10.8.0.0 255.255.255.0
keepalive 30 120
comp-lzo
dh /tmp/openvpn/dh.pem
ca /tmp/openvpn/ca.crt
cert /tmp/openvpn/cert.pem
key /tmp/openvpn/key.pem
persist-key
persist-tun
4. Вкладка Security.
SPI Firewall Disable
5. Вкладка Adminisrtation — Commands
iptables -I INPUT 1 -p udp --dport 1194 -j ACCEPT
iptables -I FORWARD 1 --source 192.168.111.0/24 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ppp0 -j MASQUERADE
Все вплоть до последнего правила разрешает нам ходить пакетам между интерфейсами. Последнее правило НАТ для подключенных клиентов, чтобы они могли ходить в интернет. ppp0 это PPPoE интерфейс поднятый на роутере на провайдера. 10.8.0.0 сеть образуемая тунелем.
И сохраняем это дело как Firewall script.
Все. Можно подключаться клиентами.