Решил настроить 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