Про настройку VPN в openwrt.

Для настройки VPN-сервера на основе ppdpd демона в openwrt требуется установить пакеты pptpd, kmod-mppe, ppp.

Конфигурация VPN-сервера в openwrt заключается в правильном составлении файла конфигурации /etc/config/pptpd.

Для примера файл конфигурации для VPN-сервера в openwrt может выглядеть так:

# cat /etc/config/pptpd
config service 'pptpd'
	option 'enabled' '1'
	option 'localip' '10.10.0.100'

config 'login'
	option 'username' 'srv'
	option 'password' '1'
	option 'remoteip' '10.10.0.10'	
	
config 'login'
	option 'username' 'box01'
	option 'password' '1'
	option 'remoteip' '10.10.0.101'	
	
config 'login'
	option 'username' 'box06'
	option 'password' '1'
	option 'remoteip' '10.10.0.106'		

Кроме этого требуется создать дополнительные правила для iptables openwrt. Они могут быть заданы либо через веб-интерфейс, либо скопированы в файл /etc/firewall.user

iptables -A input_rule -i ppp+ -j ACCEPT 
iptables -A output_rule -o ppp+ -j ACCEPT 
# This rule will allow traffic towards internet 
iptables -A forwarding_rule -i ppp+ -j ACCEPT 
iptables -A forwarding_rule -o ppp+ -j ACCEPT 

После запуска pptpd демона вывод команды ps будет примерно следующим:

14206 root       740 S    {pptpctrl} pptpd [192.168.1.99:0000 - 2400]
14207 root      1340 S    /usr/sbin/pppd local file /etc/ppp/options.pptpd 115200 10.10.0.100:192.168.1.4 ipparam 192.168.
21383 root       728 S    {pptpctrl} pptpd [192.168.1.106:0001 - F300]
21388 root      1340 S    /usr/sbin/pppd local file /etc/ppp/options.pptpd 115200 10.10.0.100:192.168.1.6 ipparam 192.168.
24253 root       988 S    /usr/sbin/dropbear -F -P /var/run/dropbear.1.pid -p 22 -K 300
24284 root      1232 S    -ash
27133 root       728 S    {pptpctrl} pptpd [192.168.1.103:0079 - FA00]
27134 root       728 S    {pptpctrl} pptpd [192.168.1.102:0083 - FA80]
27135 root      1340 S    /usr/sbin/pppd local file /etc/ppp/options.pptpd 115200 10.10.0.100:192.168.1.3 ipparam 192.168.
27144 root      1340 S    /usr/sbin/pppd local file /etc/ppp/options.pptpd 115200 10.10.0.100:192.168.1.5 ipparam 192.168.
27926 root       728 S    {pptpctrl} pptpd [192.168.1.104:0001 - F380]
27927 root       728 S    {pptpctrl} pptpd [192.168.1.108:0001 - F400]
27935 root      1340 S    /usr/sbin/pppd local file /etc/ppp/options.pptpd 115200 10.10.0.100:192.168.1.1 ipparam 192.168.
27944 root      1340 S    /usr/sbin/pppd local file /etc/ppp/options.pptpd 115200 10.10.0.100:192.168.1.2 ipparam 192.168.
27959 root       728 S    {pptpctrl} pptpd [192.168.1.101:0001 - F500]
27969 root       728 S    {pptpctrl} pptpd [192.168.1.111:0001 - F600]
27972 root       728 S    {pptpctrl} pptpd [192.168.1.105:0001 - F680]
27973 root       728 S    {pptpctrl} pptpd [192.168.1.112:0001 - F700]

Интерфейс pppX появится после того, как подключится клиент к серверу:

# ifconfig
ppp0      Link encap:Point-to-Point Protocol  
          inet addr:10.10.0.100  P-t-P:10.10.0.104  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1482  Metric:1
          RX packets:8149 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8148 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:694188 (677.9 KiB)  TX bytes:693141 (676.8 KiB)

ppp1      Link encap:Point-to-Point Protocol  
          inet addr:10.10.0.100  P-t-P:10.10.0.108  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1482  Metric:1
          RX packets:8150 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8149 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:694272 (678.0 KiB)  TX bytes:693225 (676.9 KiB)

ppp10     Link encap:Point-to-Point Protocol  
          inet addr:10.10.0.100  P-t-P:10.10.0.107  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1482  Metric:1
          RX packets:8151 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8150 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:694559 (678.2 KiB)  TX bytes:693435 (677.1 KiB)

Конфигурация vpn-клиента в openwrt на основе протокола pptp сводится к изменению файла /etc/config/network. В этом файле нужно внести секцию с описанием vpn-соединения. Для примера это может быть сделано так:

# cat /etc/config/network
config interface 'transport'
	option ifname 'pptp-vpn'
	option proto 'pptp'
	option username 'box06'
	option server '192.168.1.100'
	option buffering '1'
	option defaultroute '0'
	option password '1'

После подключения клиента к vpn-серверу вывод команды ifconfig покажет наличие интерфейса:

pptp-transport Link encap:Point-to-Point Protocol  
          inet addr:10.10.0.106  P-t-P:10.10.0.100  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1482  Metric:1
          RX packets:11116 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11073 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:953856 (931.5 KiB)  TX bytes:949394 (927.1 KiB)
          RX bytes:951924 (929.6 KiB)  TX bytes:947462 (925.2 KiB)

Лог авторизации на клиенте выглядит так:

Fri Jan 15 12:56:55 2016 daemon.info pppd[10900]: Using interface pptp-service
Fri Jan 15 12:56:55 2016 daemon.notice pppd[10900]: Connect: pptp-service <--> pptp (195.19.218.44)
Fri Jan 15 12:56:55 2016 daemon.notice netifd: service (10900): Using interface pptp-service
Fri Jan 15 12:56:55 2016 daemon.notice netifd: service (10900): Connect: pptp-service <--> pptp (195.19.218.44)
Fri Jan 15 12:56:56 2016 daemon.notice pppd[10900]: CHAP authentication succeeded
Fri Jan 15 12:56:56 2016 daemon.notice netifd: service (10900): CHAP authentication succeeded
Fri Jan 15 12:56:56 2016 daemon.notice pppd[10900]: MPPE 128-bit stateless compression enabled
Fri Jan 15 12:56:56 2016 daemon.notice netifd: service (10900): MPPE 128-bit stateless compression enabled
Fri Jan 15 12:56:57 2016 daemon.notice pppd[10900]: local  IP address 10.0.0.112
Fri Jan 15 12:56:57 2016 daemon.notice netifd: service (10900): local  IP address 10.0.0.112
Fri Jan 15 12:56:57 2016 daemon.notice pppd[10900]: remote IP address 10.0.0.1
Fri Jan 15 12:56:57 2016 daemon.notice netifd: service (10900): remote IP address 10.0.0.1
Fri Jan 15 12:56:57 2016 daemon.notice pppd[10900]: primary   DNS address 10.0.0.1
Fri Jan 15 12:56:57 2016 daemon.notice netifd: service (10900): primary   DNS address 10.0.0.1
Fri Jan 15 12:56:57 2016 daemon.notice pppd[10900]: secondary DNS address 77.88.8.8
Fri Jan 15 12:56:57 2016 daemon.notice netifd: service (10900): secondary DNS address 77.88.8.8
Fri Jan 15 12:56:57 2016 daemon.notice netifd: Network device 'pptp-service' link is up
Fri Jan 15 12:56:57 2016 daemon.notice netifd: Interface 'service' is now up
Fri Jan 15 12:56:57 2016 user.notice firewall: Reloading firewall due to ifup of service (pptp-service)

Лог авторизации на сервере выглядит так:

Tue Apr 18 13:20:18 2000 daemon.info pppd[28028]: Using interface ppp9
Tue Apr 18 13:20:18 2000 daemon.notice pppd[28028]: Connect: ppp9 <--> /dev/pts/9
Tue Apr 18 13:20:18 2000 daemon.warn pppd[28028]: Warning - secret file /etc/ppp/chap-secrets has world and/or group access
Tue Apr 18 13:20:18 2000 daemon.notice pppd[28028]: peer from calling number 192.168.1.112 authorized
Tue Apr 18 13:20:18 2000 daemon.notice pppd[28028]: MPPE 128-bit stateless compression enabled
Tue Apr 18 13:20:18 2000 daemon.info pptpd[28037]: CTRL: Client 192.168.1.109 control connection started
Tue Apr 18 13:20:18 2000 daemon.notice pppd[28028]: local  IP address 10.10.0.100
Tue Apr 18 13:20:18 2000 daemon.notice pppd[28028]: remote IP address 10.10.0.112
Tue Apr 18 13:20:19 2000 daemon.info pptpd[27997]: CTRL: Starting call (launching pppd, opening GRE)
Tue Apr 18 13:20:19 2000 daemon.notice pppd[28038]: pppd 2.4.7 started by root, uid 0
Tue Apr 18 13:20:19 2000 daemon.info pppd[28038]: Using interface ppp10
Tue Apr 18 13:20:19 2000 daemon.notice pppd[28038]: Connect: ppp10 <--> /dev/pts/10
Tue Apr 18 13:20:19 2000 daemon.warn pppd[28038]: Warning - secret file /etc/ppp/chap-secrets has world and/or group access
Tue Apr 18 13:20:19 2000 daemon.notice pppd[28038]: peer from calling number 192.168.1.107 authorized
Tue Apr 18 13:20:19 2000 daemon.notice pppd[28038]: MPPE 128-bit stateless compression enabled
Tue Apr 18 13:20:19 2000 daemon.notice pppd[28038]: local  IP address 10.10.0.100
Tue Apr 18 13:20:19 2000 daemon.notice pppd[28038]: remote IP address 10.10.0.107
Tue Apr 18 13:20:19 2000 daemon.info pptpd[28027]: CTRL: Starting call (launching pppd, opening GRE)
Tue Apr 18 13:20:19 2000 daemon.notice pppd[28047]: pppd 2.4.7 started by root, uid 0