Ceci & Tati

Gentoo OpenVPN – tap + bridge + ethrnet

от на ян..07, 2008, категории Линукс

Наскоро ми се наложи да направя един скрит сегмент от мрежата, прозрачен за някои добри хора 🙂 . Първоначално си мислех машините от скрития сегмент да ги вкарам в един VLАN, две мрежови карти на едно работещо PC, бридж между два VLAN-а и на клиентите същия VLAN. Пробвах този вариант и не ми допадна въобще, накратко работеше много зле 🙁 . Чудех се известно време как да го направя и се сетих за един мой стар приятел „OpenVPN“, според мен много интелигентно решение. Викам си на акъла за какво да вкарвам всяка нова машина във VLAN като мога да вкарам клиентите :), това и направих, а варианта чист бридж с филтър „ebtables“ не е лош също, но не е по вкуса ми.

openvpn-bridge-small.png

И така, нека започнем 🙂 .

1. OpenVPN Сървър.

1.1. Инсталирате „OpenVPN“ на PC-то, което ще бъде бридж:

emerge -av openvpn
Calculating dependencies… done!
[ebuild R ] net-misc/openvpn-2.0.6 USE=“pam ssl -examples* -iproute2* -minimal -passwordsave (-selinux) -static -threads“

1.2. Създаване на SSL keys/certificates:

cd /usr/share/openvpn/easy-rsa/
. ./vars
./clean-all
./build-ca
./build-key-server server

./build-key client1
./build-key client2
./build-key client3

./build-dh

/usr/sbin/openvpn –genkey –secret ta.key

1.3. Конфигуриране на OpenVPN:

mkdir /etc/openvpn/privnet
cd /etc/openvpn/privnet
cp -r /usr/share/openvpn/easy-rsa .

nano -w /etc/openvpn/openvpn.conf
dev tap0

proto tcp-server
port 1194

mode server

#server-bridge IP netmask pool-start-IP pool-end-IP
server-bridge 10.10.50.100 255.255.255.0 10.10.50.110 10.10.50.200
ifconfig-pool-persist /etc/openvpn/privnet/ip_pool

status /tmp/vpn-privnet.status
tls-auth /etc/openvpn/privnet/ta.key 0
keepalive 10 30
client-to-client
max-clients 150
verb 3

tls-server
dh /etc/openvpn/privnet/dh1024.pem
ca /etc/openvpn/privnet/ca.crt
cert /etc/openvpn/privnet/server.crt
key /etc/openvpn/privnet/server.key
comp-lzo

user nobody
group nobody

persist-key
persist-tun

1.4. Добавяне на OpenVPN в default runlevel и зареждане:

rc-update add openvpn default
/etc/init.d/openvpn start

2. Създаване на network bridge:

2.1. Инсталиране на bridge-utils и usermode-utilities.

emerge -av bridge-utils
Calculating dependencies… done!
[ebuild R ] net-misc/bridge-utils-1.2 USE=“-sysfs“

2.2. Конфигуриране на network bridge:

cat /etc/conf.d/net
.
.
config_eth5=( „null“ )
# config_tap0=( „0.0.0.0“ )
bridge_br0=( „eth5 tap0“ )
config_br0=( „10.10.50.100/24“ )

brctl_br0=( „stp on“ )

depend_br0() {
need net.eth5 openvpn
}

2.3. Настройка на системата:

Създаване на символични линкове за новите интерфейси:

cd /etc/init.d
ln -s net.lo net.br0
ln -s net.lo net.tap0

Спиране на eth5 и стартиране на бридж br0:

/etc/init.d/net.eth5 stop
/etc/init.d/net.br0 start

Добавяне на бриджа в default runlevel:

rc-update -a net.br0 default

3. OpenVPN Клиент.

3.1. Конфигуриране на OpenVPN:

cd /etc/openvpn/privnet
nano -w openvpn-client.ovpn

remote 192.168.0.100
proto tcp-client
port 1194
dev tap

client
resolv-retry infinite
mute-replay-warnings
verb 3
persist-tun
persist-key
tls-auth ta.key 1

tls-client
ca ca.crt
cert client.crt
key client.key
comp-lzo

3.2. Подготовка на клиентските файлове:

mkdir /etc/openvpn/client1
cp /etc/openvpn/privnet/ca.crt /etc/openvpn/client1/
cp /etc/openvpn/privnet/ta.key /etc/openvpn/client1/
cp /etc/openvpn/privnet/client1.crt /etc/openvpn/client1/client.crt
cp /etc/openvpn/privnet/client1.key /etc/openvpn/client1/client.key
cp /etc/openvpn/privnet/openvpn-client.ovpn /etc/openvpn/client1/

Накратко трябва да имате в папката client1 следните файлове:

ls
ca.crt client.crt client.key openvpn-client.ovpn ta.key

След което създавате папките client2 и client3, в тях слагате същите файлове без client1.*, ами вместо тях client2.*->client.* в папката client2, по същия начин и в client3 папката :). Трябва да се внимава, защото ако дадете на два различни потребитела еднакви client.* файлове, то те ще получат еднакви IP адреса от мрежа 10.10.50.0/24 :(.

3.3. Клиент за Windows.

Изтегляте си от http://openvpn.se/download.html файла openvpn-2.0.9-gui-1.0.3-install.exe и го инсталирате. След което копирате файловете от /etc/openvpn/client1/* в C:\Program Files\OpenVPN\config\ и натам трябва сами да се оправите :).

3.4. Клиент за Linux.

Инсталирате на клиентската машина OpenVPN, след което копирате файловете от /etc/openvpn/client1/* в /etc/openvpn/
и създавате символичен линк.

cd /etc/openvpn/
ln -s openvpn-client.ovpn openvpn.conf

Добавяне на OpenVPN в default runlevel и зареждане:

rc-update add openvpn default
/etc/init.d/openvpn start

Това е от мен 🙂 .


Вашият коментар

*
За да докажете че не сте бот, въведете този код
Anti-Spam Image

Нещто не намирате ли?

Потърси в блога ми:

Моля Ви не прекалявайте с информацията!