9/24/2010

OpenVPN в кратки стъпки [3]

Нека продължим с конфигурацията на клиентската машина за нашият OpenVPN.

Първо копираме един от примерните конфигурационни файлове в директорията /etc/openvpn така:

# cp /usr/share/doc/openvpn-*/sample-config-files/roadwarrior-client.conf /etc/openvpn/client.conf

След това редактираме файла, като след remote тука:

remote [my server hostname or IP address]

записваме публичният IP адрес на сървъра ни. Имайте предвид, че ако на сървъра работи iptables, ще трябва да разрешите входящи връзки по порт 1194/udp, за да имате успешна комуникация. Във Fedora 13, firewall-а е пуснат по подразбиране и по-надолу ще обясня как да добавим тези правила, за да може всичко да е наред.

Може, разбира се, накрая на конфигурационният файл да добавим опцията:

log-append /var/log/openvpn

с цел диагностика, ако възникнат проблеми.

Преди да стартираме сървъра за да изградим VPN връзката, трябва да заредим модула за tun интерфейса, който ще използваме.

Това става чрез:

# modprobe tun



Но тъй като, това ще важи само докато не рестартираме системата, е нужно да добавим следното в директорията /etc/modprobe.d/

# touch /etc/modprobe.d/tun.conf
# echo "alias tun tun" > /etc/modprobe.d/tun.conf



Това е начина, по който модерни Линукс системи като Fedora използват за управление на модулите, които да се зареждат при стартиране. Писането на команди по разни скриптове, които се стартират с инициализацията на операционната система е проява на ниска техническа култура и не се препоръчва.

Така, време е да добавим openvpn в стандартните runlevel-и, за да може да се инициализира със стартирането на системата. Това във Fedora става с познатата ни вече команда chkconfig:

# chkconfig --levels openvpn on

Сега е време да пуснем нашият OpenVPN клиент и да проследим дали всичко е наред.

# service openvpn start

Във списъчният файл (ако сме задали такъв във конфигурацията, ако не всички системни съобщения отиват в /var/log/messages) трябва да видим нещо от рода:

Fri Sep 24 11:46:13 2010 us=542777 TUN/TAP device tun0 opened
Fri Sep 24 11:46:13 2010 us=542802 TUN/TAP TX queue length set to 100
Fri Sep 24 11:46:13 2010 us=542837 /sbin/ip link set dev tun0 up mtu 1500
Fri Sep 24 11:46:13 2010 us=543851 /sbin/ip addr add dev tun0 local 10.8.0.6 peer 10.8.0.5
Fri Sep 24 11:46:13 2010 us=547866 /sbin/ip route add 10.8.0.1/32 via 10.8.0.5
Fri Sep 24 11:46:13 2010 us=548549 /sbin/ip route add 172.16.0.0/12 via 10.8.0.5
Fri Sep 24 11:46:13 2010 us=549134 Initialization Sequence Completed


С това всичко трябва да е наред и ако изпълним:

$ ping 10.8.0.1

би трябвало да получим ICMP отговор от сървъра ни.


PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=2.12 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=1.78 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=1.84 ms


Ето и какво трябва да направите, ако искате да разрешите порт 1194/udp, за да може да получавате входящи връзки. Първо трябва да решим къде ще добавим това правило в цялата firewall таблица. Разбира се, веригата която ни трябва е INPUT, тъй като няма да правим никаква машрутизация на тези пакети. Най-добре, според мен, е в тази верига това да се случи преди всички Reject правила, за да може да избегнем конфликти. Естествено, ако вашият сървър е конфигуриран първо да филтрира всичко и после да приема определни пакети, правилото трябва да е под филтриращите такива.

В най-общ случай това трябва да работи винаги:

# iptables --insert INPUT 1 --match state --state NEW --match udp --protocol udp --dport 1194 --jump ACCEPT

След като изпълни тази команда и проверим дали всичко вече работи е необходимо да запишем тези правила за да се изпълняват при инициализацияата на firewall-а. Това в модерни Линукс системи като Fedora се прави чрез:

# service iptables save

Което записва промените във файла /etc/sysconfig/iptables, от където се зареждат при стартиране. Имайте предвид, че ръчното редактиране на този файл не се препоръчва и вероятно ще доведе до грешки.

Повече информация за OpenVPN, може да намерите тук:

http://openvpn.net/

No comments:

Post a Comment