Авторские статьи Настройка Virtualbox и PPTP

Discussion in 'Статьи' started by e17, 11 May 2014.

  1. e17

    e17 Member

    Joined:
    8 Feb 2013
    Messages:
    47
    Likes Received:
    57
    Reputations:
    81
    Решил настроить VirtualBox так что бы он ходил через мой впн, а хостовая машина на которой крутиться VBox ходила через домашний интернет. Впн должен быть включен на хостовой машине. И тип соединения в виртуалке "внутренний адаптер хоста".*
    *
    И так попорядку зачем нужна такая сложна схема и нельзя просто обойтись простым мостовым соединением или типом сети нат.
    *
    1. я не хочу использовать впн соединение внутри виртуалки, потому что это как то небезопасно. на ней я часто запускаю всякую нечисть и не хотелось что бы настройки моего впн утекли кому то.
    2. я хочу видеть сетевой трафик только с виртуальной машина подключившись к интерфейсу на хостовой машине ваершарком. поэтому мне не подходит тип соединения мост, так как я там буду видеть трафик как с хостовой так и с виртуальном машины.
    3. мне не подходит тип соединения NAT в конфигурации VBox, так как нет интерфейса вообще с которого бы ходила виртуалка, и к которому я мог бы подключиться ваершарком.
    4. ну и если отвалился впн то виртуалка не должна иметь интернета, что бы не спалить свой реальный IP
    *
    Итак, в качестве хостовой машины Ubuntu, на виртуалке XP, тип соединения виртуальный адаптер хоста.
    *
    Хостовая машина, имеет следующие интерфейсы:
    Code:
    wlan0  - 192.168.1.10/24 домашний инет
    ppp0 - 172.25.0.10/24 впн (интернет с забугорным IP), шлюз 172.25.0.1
    vboxnet0 - 192.168.56.1/24 интерфейс VBox
    *
    вот между ними мне и нужно разрулить трафик что куда пойдет.
    *
    Гостевая машина. (виртуальный адаптер хоста)
    пришлось задать параметры карточки вручную, так как DHCP Vbox не поддерживает установку шлюза.
    Code:
    192.168.56.10 ип
    255.255.255.0 маска
    192.168.56.1 - шлюз
    8.8.8.8 - DNS гугла
    
    Итак сейчас нужно прописать маршруты и сделать натирование, странно я ничего не смог нагуглить для подобной настройки
    *
    для начала ставим, так как придется писать маршруты по соурс адресу:
    Code:
    apt-get install iproute2
    
    я сделаю свою таблицу маршрутизации для впн соединения. для этого добавляю в файл*
    /etc/iproute2/rt_tables
    Code:
    100 vpn0
    
    имя таблицы маршрутизации
    *
    и создаю такие правила:
    Code:
    #роутит адреса по соурс адресу сети VBox и отправляет в таблицу маршрутизации vpn0
    ip rule add from 192.168.56.0/24 table vpn0
    #маршурт по умолчанию для vpn0, направляю весь трафик с виртуалки в интерфейс с впн соединением
    ip route add default dev ppp0 via 172.25.0.1 table vpn0
    *
    маршрутизацию настроил, но так как у нас соурс адрес*192.168.56.X, то на впн сервер он и будет приходить, но впн в душе не знает таких адресов. В результате посылки данных будут просто уходить на сервер, а ответные пакеты просто к нам не придут.
    *
    Для этого замутим натирование соурс адреса в адрес понятный впну
    Code:
    #натирует соурс адрес виртуалки в адрес 172.25.0.10
    iptables -t nat -A POSTROUTING -s 192.168.56.0/24 -o ppp0 -j SNAT --to-source 172.25.0.10
    
    и так вроде бы все настроил, пинги идут но, страницы открываются с адским торможением, погуглив выяснил что что у меня проблемы с mtu временем.
    *
    про это можно прочитать тут:
    http://lartc.org/howto/lartc.cookbook.mtu-mss.html
    *
    для а мне нужно только:
    Code:
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 128
    
    Ну собственно и все что я хотел рассказать в этой заметке.*
    *
    Что бы не вводить все это руками сделал два скрипта при запуске и выключении впна:
    *
    /etc/ppp/ip-up.d/vpn_up
    Code:
    #!/bin/sh
    
    ip rule add from 192.168.56.0/24 table vpn0
    ip route add default dev $PPP_IFACE via $PPP_REMOTE table vpn0
    iptables -t nat -A POSTROUTING -s 192.168.56.0/24 -j SNAT --to-source $PPP_LOCAL
    
    /etc/ppp/ip-up.d/vpn_down
    Code:
    #!/bin/sh
    
    ip route del default dev $PPP_IFACE via $PPP_REMOTE table vpn0
    ip rule del from 192.168.56.0/24 table vpn0
    iptables -t nat -D POSTROUTING -s 192.168.56.0/24 -j SNAT --to-source $PPP_LOCAL
    
     
    #1 e17, 11 May 2014
    Last edited: 11 May 2014
    2 people like this.