Настройка ВПН моста между двумя офисами в одной подсети.Пример рассмотрен на CentOS 5.5
1. Установка OpenVpn
Для начала необходимо установить OpenVpn на обоих шлюзах. http://www.openvpn.net/index.php/open-source/downloads.html#latest-stable
Перед установкой OpenVpn необходимо установить зависимости [root@client]# yum install lzo lzo-devel
Скачиваем OpenVpn [root@client]# wget http://www.openvpn.net/release/openvpn-2.1.3.tar.gz
Распаковываем архив [root@client]# tar zxvf openvpn-2.1.3.tar.gz
Производим установку OpenVpn согласно инструкции в архиве [root@client]# ./configure [root@client]# make [root@client]# make install
Если после установки OpenVpn не создался каталог /etc/openvpn нужно создать его руками.
2. Настройка сетевых интерфейсов
Настройка сетевых интерфейсов на клиенте
Конфиг eth0 /etc/sysconfig/network-skripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=none HWADDR=00:15:17:01:48:2F ONBOOT=yes DHCP_HOSTNAME=client IPADDR=109.88.242.2 NETMASK=255.255.255.240 GATEWAY=109.88.242.1 DNS1=77.95.200.12 DNS2=77.95.210.207 TYPE=Ethernet
Конфиг eth1 /etc/sysconfig/network-skripts/ifcfg-eth1
DEVICE=eth1 BOOTPROTO=none HWADDR=00:15:17:01:48:2E ONBOOT=yes IPADDR=10.0.10.3 NETMASK=255.255.255.0 TYPE=Ethernet DHCP_HOSTNAME=client
Настройка сетевых интерфейсов на сервере Конфиг eth0
/etc/sysconfig/network-skripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=none HWADDR=00:50:ba:5a:0e:ff ONBOOT=yes DHCP_HOSTNAME=server IPADDR=74.105.136.28 NETMASK=255.255.255.0 GATEWAY=74.105.136.1 DNS1=74.105.136.1 TYPE=Ethernet
Конфиг eth1
/etc/sysconfig/network-skripts/ifcfg-eth1
DEVICE=eth1 BOOTPROTO=none HWADDR=00:19:db:c5:7a:0f ONBOOT=yes IPADDR=10.0.10.1 NETMASK=255.255.255.0 TYPE=Ethernet
3. Создание скриптов запуска и остановки Моста -=== Для клиента ===- Создадим скрипт для запуска моста на клиенте [root@client]# cd /etc/openvpn [root@client]# touch bridge-start.sh [root@client]# chmod +x bridge-start.sh
Наполним скрипт следующим содержанием:
#!/bin/bash
################################# # Set up Ethernet bridge on Linux # Requires: bridge-utils #################################
# Define Bridge Interface br="br0"
# Define list of TAP interfaces to be bridged, # for example tap="tap0 tap1 tap2". tap="tap0"
# Define physical ethernet interface to be bridged # with TAP interface(s) above. eth="eth1" eth_ip="10.0.10.3" eth_netmask="255.255.255.0" eth_broadcast="10.0.10.255"
for t in $tap; do openvpn --mktun --dev $t done
brctl addbr $br brctl addif $br $eth
for t in $tap; do brctl addif $br $t done
for t in $tap; do ifconfig $t 0.0.0.0 promisc up done
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
Создадим скрипт для остановки моста на клиенте [root@client]# cd /etc/openvpn [root@client]# touch bridge-stop.sh [root@client]# chmod +x bridge-stop.sh
Наполним скрипт следующим содержанием:
#!/bin/bash
#################################### # Tear Down Ethernet bridge on Linux ####################################
# Define Bridge Interface br="br0"
# Define list of TAP interfaces to be bridged together tap="tap0"
ifconfig $br down brctl delbr $br
for t in $tap; do openvpn --rmtun --dev $t done
-=== Для сервера ===-
Создадим скрипт для запуска моста на сервере [root@server]# cd /etc/openvpn [root@server]# touch bridge-start.sh
[root@server]# chmod +x bridge-start.sh
Наполним скрипт следующим содержанием:
#!/bin/bash
################################# # Set up Ethernet bridge on Linux # Requires: bridge-utils #################################
# Define Bridge Interface br="br1"
# Define list of TAP interfaces to be bridged, # for example tap="tap0 tap1 tap2". tap="tap1"
# Define physical ethernet interface to be bridged # with TAP interface(s) above. eth="eth1" eth_ip="10.0.10.1" eth_netmask="255.255.255.0" eth_broadcast="10.0.10.255"
for t in $tap; do openvpn --mktun --dev $t done
brctl addbr $br brctl addif $br $eth
for t in $tap; do brctl addif $br $t done
for t in $tap; do ifconfig $t 0.0.0.0 promisc up done
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
Создадим скрипт для остановки моста на сервере [root@server]# cd /etc/openvpn
[root@server]# touch bridge-stop.sh
[root@server]# chmod +x bridge-stop.sh
Наполним скрипт следующим содержанием:
#!/bin/bash
#################################### # Tear Down Ethernet bridge on Linux ####################################
# Define Bridge Interface br="br1"
# Define list of TAP interfaces to be bridged together tap="tap1"
ifconfig $br down brctl delbr $br
for t in $tap; do openvpn --rmtun --dev $t done
3. Настройка OpenVpn
-=== Для клиента ===-Создадим каталог для хранения логов ВПН на клиенте [root@client]# mkdir --mode 777 /var/log/openvpn
Создадим конфиг ВПН на клиенте [root@client]# cd /etc/openvpn [root@client]# touch bridge-client.conf
Наполним конфиг следующим содержанием: client nobind proto udp port 5062 remote 74.105.136.28 dev tap0 tun-mtu 1500 persist-key persist-tun ns-cert-type server ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/client01.crt key /etc/openvpn/keys/client01.key cipher DES-CBC ping 10 comp-lzo verb 3 log /var/log/openvpn/bridge.logСоздадим скрипт запуска ВПН на клиенте [root@client]# cd /etc/openvpn [root@client]# touch openvpn-startup.sh [root@client]# chmod +x openvpn-startup.sh
Наполним конфиг следующим содержанием: #!/bin/bash
# A sample OpenVPN startup script # for Linux. # openvpn config file directory dir=/etc/openvpn # load the firewall # load TUN/TAP kernel module modprobe tun # enable IP forwarding echo 1 > /proc/sys/net/ipv4/ip_forward # Invoke openvpn for each VPN tunnel # in daemon mode. Alternatively, # you could remove "--daemon" from # the command line and add "daemon" # to the config file. # # Each tunnel should run on a separate # UDP port. Use the "port" option # to control this. Like all of # OpenVPN's options, you can # specify "--port 8000" on the command # line or "port 8000" in the config # file. # Define Users keys /usr/sbin/openvpn --cd $dir --daemon --config bridge-client.conf -=== Для сервера ===-
Создадим каталог для хранения логов ВПН на сервере [root@server]# mkdir --mode 777 /var/log/openvpn
Создадим конфиг ВПН на сервере
[root@server]# cd /etc/openvpn
[root@server]# touch bridge-server.conf
Наполним конфиг следующим содержанием:
proto udp dev tap1 port 5062 server-bridge 10.0.10.3 255.255.255.0 10.0.10.1 10.0.10.2 tls-server ca /etc/openvpn/gate/ca.crt cert /etc/openvpn/gate/vpnserver.crt key /etc/openvpn/gate/vpnserver.key dh /etc/openvpn/gate/dh1024.pem client-to-client comp-lzo ping 15 verb 3 #route add -net 10.0.10.0 netmask 255.255.255.0 gw 10.0.10.1 user openvpn group openvpn persist-key persist-tun tun-mtu 1500 cipher DES-CBC log /var/log/openvpn/bridge.logСоздадим скрипт запуска ВПН на сервере
[root@server]# cd /etc/openvpn [root@server]# touch openvpn-startup.sh
[root@server]# chmod +x openvpn-startup.sh
Наполним конфиг следующим содержанием:
#!/bin/bash
# A sample OpenVPN startup script # for Linux. # openvpn config file directory dir=/etc/openvpn # load the firewall # load TUN/TAP kernel module modprobe tun # enable IP forwarding echo 1 > /proc/sys/net/ipv4/ip_forward # Invoke openvpn for each VPN tunnel # in daemon mode. Alternatively, # you could remove "--daemon" from # the command line and add "daemon" # to the config file. # # Each tunnel should run on a separate # UDP port. Use the "port" option # to control this. Like all of # OpenVPN's options, you can # specify "--port 8000" on the command # line or "port 8000" in the config # file. # Define Users keys/usr/sbin/openvpn --cd $dir --daemon --config bridge-server.conf
Конец
Источник: http://babinov.com |