OpenVPN + vtun.Приветствую.
Необходимо поднять двойной впн на Centos, но не openvpn-openvpn, а openvpn-vtun (тот vtun что http://vtun.sourceforge.net/) Т.е. схема: клиент -- опенвпн --> сервер1 -- vtun --> сервер2. В то время как vtun локака работает (все пингуется ок) и опенвпн клиенты приконектившись попадают в openvpn локалку, не знаю как сделать так чтобы все пакеты что приходят от опенвпн-вин-клиентов выходили на втором сервере. Тоесть понимаю что нужно гдето роутинг добавить, маскарадинг, но где именно и как , пробую и не получается. Если кто-то поможет разобраться буду премного благодарен.
Более детально:
Форвардинг пакетов на обоих серваках включен (в /etc/sysctl.conf)
Сервер1 (openvpn демон и vtun клиент)
Конфиг openvpn:
port 1194
local SERVER1_IP
proto udp
dev tun0
server 10.0.1.0 255.255.255.0
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
cipher AES-256-CBC
user nobody
group nobody
status openvpnserver-status.log
log-append openvpnserver.log
verb 3
max-clients 30
keepalive 10 120
tls-server
comp-lzo
persist-key
persist-tun
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
Конфиг vtun клиента:
options
{
port 10000;
syslog daemon;
ifconfig /sbin/ifconfig;
route /sbin/route;
ip /sbin/ip;
firewall /sbin/iptables;
}
client1
{
passwd testpassword;
type tun;
persist yes;
up
{
ifconfig "%% 10.1.0.2 pointopoint 10.1.0.3 mtu 1450";
route "add -net 1.2.3.4/16 gw 10.1.0.3";
};
down
{
ifconfig "%% down";
};
}
Т.е. на сервер1 после запуска openvpn и vtun_client имеем: tun0 (openvpn) с адресом 10.0.1.1 и tun1 (vtun) с адресом 10.1.0.2.
Таблица роутинга при этом выглядит так:
[root@localhost]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.0.3 * 255.255.255.255 UH 0 0 0 tun1
10.0.1.2 * 255.255.255.255 UH 0 0 0 tun0
10.0.1.0 10.0.1.2 255.255.255.0 UG 0 0 0 tun0
SERV1_NET.0 * 255.255.240.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 1002 0 0 eth0
default SERV1_NET.1 0.0.0.0 UG 0 0 0 eth0
iptables полностью чистый, ната нет, маскарадинга нет.
Сервер2 (vtun_server):
options
{
port 10000;
syslog daemon;
ifconfig /sbin/ifconfig;
route /sbin/route;
ip /sbin/ip;
firewall /sbin/iptables;
}
default
{
compress lzo:9;
speed 0;
}
client1
{
passwd testpassword;
type tun;
proto udp;
encrypt aes256ofb;
keepalive yes;
up
{
ifconfig "%% 10.1.0.3 pointopoint 10.1.0.2 mtu 1450";
firewall "-t nat -A POSTROUTING -s 10.1.0.2 -j MASQUERADE";
};
down
{
firewall "-t nat -F";
ifconfig "%% down";
};
}
Соответсвенно на сервер2 после запуска vtun_server имеем tun0 (vtun) с адресом 10.1.0.3
таблица роутинга:
[root@localhost]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
SERV2_NET.0 0.0.0.0 255.255.255.192 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 SERV2_NET.62 0.0.0.0 UG 0 0 0 eth0
iptables:
[root@hosted-by vtund]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.1.0.2 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@hosted-by vtund]#
Пробую приконектится с вин клиентом к сервер1 по опенвпн : все соединяется, но tracert 11.11.11.11 выдает:
C:\> tracert 11.11.11.11
Tracing route to 11.11.11.11 over a maximum of 30 hops
1 80 ms 81 ms 99 ms 10.0.1.1
2 * * * Request timed out.
3 * * * Request timed out.
Тоесть после впн адреса ничто никуда не идет. А нужно чтобы все шло на vtun сеть и оттуда выходило в инет. Я так понимаю должно быть чтото типа такого по итогу когда трэйсить буду с винды:
1 80 ms 81 ms 99 ms 10.0.1.1
2 80 ms 81 ms 99 ms 10.1.0.2
3 80 ms 81 ms 99 ms 10.1.0.3
ну и тд
Уверен что намудрено с руитингом и маскарадингом в втун конфигах (и скорей всего не достаточно вообще сделано), кто поможет буду признателен. Тоесть нужно пакеты с опенвпн сетки, передавать в втун сетку, и там уже выход-маскарадинг.
Спасибо.