Назад | Перейти на главную страницу

Маршрутизированные каналы OpenVPN

Описание установки:

Конфигурация сервера: vpn1

mode server
tls-server
dev tun

local PUBLIC-IP-HERE
port 1194
proto udp

persist-key
persist-tun

# Certificates and encryption
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0

cipher BF-CBC        
comp-lzo            

push "route 10.0.0.0 255.255.255.0"
push "route 10.0.2.0 255.255.255.0"
push "route 10.255.254.0 255.255.255.0"
route 10.0.2.0 255.255.255.0
client-to-client
max-clients 30

user nobody
group nogroup
keepalive 10 120
status /var/log/openvpn-status.log
verb 3

ifconfig-pool-persist ipp.txt
client-config-dir ccd
server 10.255.254.0 255.255.255.0

push "explicit-exit-notify 3"

В ccd / client у меня есть:

iroute 10.0.2.0 255.255.255.0
ifconfig-push 10.255.254.9 10.255.254.10

Как выглядит "ip a":

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.0.0.1/24 brd 10.0.0.255 scope global eth1

172: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/none 
    inet 10.255.254.1 peer 10.255.254.2/32 scope global tun0

Как выглядит "ip r" (я удалил маршрут по умолчанию, так как он не должен иметь значения):

10.0.0.0/24 dev eth1  proto kernel  scope link  src 10.0.0.1
10.0.2.0/24 via 10.255.254.2 dev tun0 
10.255.254.0/24 via 10.255.254.2 dev tun0 
10.255.254.2 dev tun0  proto kernel  scope link  src 10.255.254.1 

Конфигурация клиента: vpn2

client
dev tun
remote PUBLIC-IP-HERE 1194
nobind
persist-key
persist-tun
proto udp

ca /etc/openvpn/easy-rsa/keys/client/ca.crt
cert /etc/openvpn/easy-rsa/keys/client/client.crt
key /etc/openvpn/easy-rsa/keys/client/client.key

tls-auth /etc/openvpn/easy-rsa/keys/client/ta.key 1
cipher BF-CBC
comp-lzo
ns-cert-type server
verb 3

Как выглядит "ip a":

7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    inet 10.0.2.1/24 brd 10.0.2.255 scope global br0

8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/none 
    inet 10.255.254.9 peer 10.255.254.10/32 scope global tun0

Как выглядит "ip r" (опять же я удалил шлюз по умолчанию и прочее):

10.0.0.0/24 via 10.255.254.10 dev tun0 
10.0.2.0/24 dev br0  proto kernel  scope link  src 10.0.2.1 
10.255.254.0/24 via 10.255.254.10 dev tun0 
10.255.254.10 dev tun0  proto kernel  scope link  src 10.255.254.9 

Общие конфигурации:

Что работает:

Что не работает:

С помощью NAT я смог:

Я должен иметь возможность пинговать любой хост в LAN2 из LAN1 без NAT и наоборот. Что здесь не так? Что-то ускользает от меня, и я не могу понять что.

Это проблема маршрутизации.

Я подозреваю, что ваша директива iroute не вступает в силу. Файл, который вы назвали «ccd / client», должен фактически иметь имя, соответствующее имени субъекта сертификата клиента. Итак, если DN сертификата клиента C=CA,O=Foo Ltd,CN=Example, файл должен быть "ccd / Example".

Кроме того, ваша конфигурация выглядит правильно.