VPN+VLAN+NAT



  • Приветствую, тема OpenVPN очень заезжена. Но тут не нашел решения.
    Есть два сервера pfsense, каждый является шлюзом для множества сетей (на каждом по 15Vlan.)
    Так же настроен OpenVPN на WAN интерфейсах. На одном pfsense в качестве сервера - на другом в качестве клиента.
    Сети сервера: 192.168.1.0, клиента 192.168.2.1

    Настройки сервера

    route 192.168.0.0 255.255.0.0;
    push "route 192.168.0.0 255.255.0.0";
    client-to-client;
    

    Все прекрасно работает.
    Но вот понадобилось поднять на одном из vlan клиент openvpn. Сервер на машине с Linux. Сеть за сервером 192.168.100.0, сеть клиента 10.2.16.0
    Клиент делаю на psense, где уже есть клиентское соединение. Создаю второй клиент, в качестве интерфейса выбираю 16 vlan (с этого интерфейса необходимо настроить доступ.)
    Конфиг сервера:
    eth0 - инет.
    virbr1 - lan

    /etc/arno-iptabless-firewall/custom-rules
    
    iptables -A FORWARD -i virbr1 -o eth0 -j ACCEPT
    iptables -A FORWARD -i eth0 -o virbr1 -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -i virbr1 -o tun0 -j ACCEPT
    iptables -A FORWARD -i tun0 -o virbr1 -m state --state ESTABLISHED,RELATED -j ACCEPT
    # Allow TUN interface connections to OpenVPN server
    iptables -A INPUT -i tun+ -j ACCEPT
     # Allow TUN interface connections to be forwarded through other interfaces
    iptables -A FORWARD -i tun+ -j ACCEPT
     # Allow TAP interface connections to OpenVPN server
    iptables -A INPUT -i tap+ -j ACCEPT
     # Allow TAP interface connections to be forwarded through other interfaces
    iptables -A FORWARD -i tap+ -j ACCEPT
    iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 14.36.187.233
    
    ``` 
    /etc/openvpn/server.conf
    

    dev tun
    proto udp
    ca /etc/openvpn/keys/ca.crt
    cert /etc/openvpn/keys/server.crt
    key /etc/openvpn/keys/server.key  # This file should be kept secret
    dh /etc/openvpn/keys/dh1024.pem
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    route 10.2.16.0 255.255.255.0 # сеть за клиентом
    push "route 192.168.100.0 255.255.255.0"
    push "dhcp-option DNS 8.8.8.8"
    push "dhcp-option DNS 4.4.4.4"
    comp-lzo
    persist-key
    persist-tun
    log        /var/log/openvpn.log
    verb 3

    
    настройки fw pfsense:
    vlnan16_net * * * * (разрешено все.)
    
    таблица на pfsense:
    
    > [2.1-RELEASE][admin@probi-vol.localdomain]/root(1): netstat -r
    > Routing tables
    > 
    > Internet:
    > Destination        Gateway            Flags    Refs      Use  Netif Expire
    > default            host-85-237-59-129 UGS        0 84724521 em1_vl
    > 
    > 10.2.16.0          link#25            U          0  1628062 em0_vl
    > 10.2.16.1          link#25            UHS        0        6    lo0
    > 
    > 10.8.0.1/32        10.8.0.33          UGS        0        0 ovpnc2
    > 10.8.0.33          link#39            UH          0        0 ovpnc2
    > 10.8.0.34          link#39            UHS        0        0    lo0
    > 
    > 10.16.0.0          10.16.0.29        UGS        0        0 ovpnc1
    > 10.16.0.29        link#32            UH          0        0 ovpnc1
    > 10.16.0.30        link#32            UHS        0        0    lo0
    > 85.237.59.128/28  link#9            U          0        0 em1_vl
    > host-85-237-59-130 link#9            UHS        0        0    lo0
    > localhost          link#5            UH          0      852    lo0
    > 192.168.0.0        10.16.0.29        UGS        0  1848182 ovpnc1
    > 192.168.1.0        10.16.0.29        UGS        0  205616 ovpnc1
    > 192.168.3.0        link#8            U          0 318126921 em0_vl
    > probi-vol          link#8            UHS        0        0    lo0
    > 192.168.100.0      10.8.0.33          UGS        0        6 ovpnc2
    
    если выбрать диагностику - пинг. интерфейс vlan16, ping 192.168.100.2 - пакеты отбрасываются. если выбрать default - то пинг идет.
    
    

    Ping output:
    PING 192.168.100.1 (192.168.100.1) from 10.2.16.1: 56 data bytes

    --- 192.168.100.1 ping statistics ---
    3 packets transmitted, 0 packets received, 100.0% packet loss



  • Судя по таблице на pf :

    192.168.100.0      10.8.0.33          UGS        0        6 ovpnc2

    Он все пакеты , адресованные сети 192.168.100.0 отправляет через ovpnc2.
    Далее, выбирая в диагностике default в кач-ве интерфейса , то прохождение пакетов будет согласно таблице маршрутизации (см. выше). Не стоит выбирать конкретный интерфейс.

    Что Вас смущает?



  • смущает то, что из сети 10.2.16.0 (сеть vlan_16, на этом же интерфейсе поднят клиент openvpn - ovpnc2) невозможно получить доступ к сети за сервером OpenVPN (192.168.100.0/24). Возможно дело в фаерволле.
    Но на интерфейсе OpenVPN разрешено все, и в правилах на vlan_16 тоже разрешено все.
    Причем из сети 10.2.16.0 пингуется ip туннеля 10.8.0.34
    Диагностикой я смотрю появляется ли доступ с интерфейса 10.2.16.1 в удаленную сеть, если появится на этом интерфейсе, то и у пользователей сети все должно быть ок.

    ![?????? ?????? ?? 2014-02-28 16:00:45.png](/public/imported_attachments/1/?????? ?????? ?? 2014-02-28 16:00:45.png)
    ![?????? ?????? ?? 2014-02-28 16:00:45.png_thumb](/public/imported_attachments/1/?????? ?????? ?? 2014-02-28 16:00:45.png_thumb)
    ![?????? ?????? ?? 2014-02-28 15:59:56.png](/public/imported_attachments/1/?????? ?????? ?? 2014-02-28 15:59:56.png)
    ![?????? ?????? ?? 2014-02-28 15:59:56.png_thumb](/public/imported_attachments/1/?????? ?????? ?? 2014-02-28 15:59:56.png_thumb)



  • Разбирайтесь с Linux-сервером. Особенно с директивой iroute и с конфигурационным файлом клиента.



  • спасибо, заработало.
    сделал папку ccd, в ней файл с именем как у сертификата, а в нем прописал iroute 10.2.16.0 255.255.255.0;
    в server.conf добавил route 10.2.16.0 255.255.255.0
    все работает.



  • Ну и хорошо  :D

    P.s. Добавьте в название темы фразу [РЕШЕНО] , пож-та.