Gentoo OpenVPN – tap + bridge + ethrnet
от Илия Няголов на ян..07, 2008, категории Линукс
Наскоро ми се наложи да направя един скрит сегмент от мрежата, прозрачен за някои добри хора 🙂 . Първоначално си мислех машините от скрития сегмент да ги вкарам в един VLАN, две мрежови карти на едно работещо PC, бридж между два VLAN-а и на клиентите същия VLAN. Пробвах този вариант и не ми допадна въобще, накратко работеше много зле 🙁 . Чудех се известно време как да го направя и се сетих за един мой стар приятел „OpenVPN“, според мен много интелигентно решение. Викам си на акъла за какво да вкарвам всяка нова машина във VLAN като мога да вкарам клиентите :), това и направих, а варианта чист бридж с филтър „ebtables“ не е лош също, но не е по вкуса ми.
И така, нека започнем 🙂 .
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 tap0proto tcp-server
port 1194mode 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_poolstatus /tmp/vpn-privnet.status
tls-auth /etc/openvpn/privnet/ta.key 0
keepalive 10 30
client-to-client
max-clients 150
verb 3tls-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-lzouser nobody
group nobodypersist-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.ovpnremote 192.168.0.100
proto tcp-client
port 1194
dev tapclient
resolv-retry infinite
mute-replay-warnings
verb 3
persist-tun
persist-key
tls-auth ta.key 1tls-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
Това е от мен 🙂 .