Решил настроить VirtualBox так что бы он ходил через мой впн, а хостовая машина на которой крутиться VBox ходила через домашний интернет. Впн должен быть включен на хостовой машине. И тип соединения в виртуалке "внутренний адаптер хоста".*
*
И так попорядку зачем нужна такая сложна схема и нельзя просто обойтись простым мостовым соединением или типом сети нат.
*
1. я не хочу использовать впн соединение внутри виртуалки, потому что это как то небезопасно. на ней я часто запускаю всякую нечисть и не хотелось что бы настройки моего впн утекли кому то.
2. я хочу видеть сетевой трафик только с виртуальной машина подключившись к интерфейсу на хостовой машине ваершарком. поэтому мне не подходит тип соединения мост, так как я там буду видеть трафик как с хостовой так и с виртуальном машины.
3. мне не подходит тип соединения NAT в конфигурации VBox, так как нет интерфейса вообще с которого бы ходила виртуалка, и к которому я мог бы подключиться ваершарком.
4. ну и если отвалился впн то виртуалка не должна иметь интернета, что бы не спалить свой реальный IP
*
Итак, в качестве хостовой машины Ubuntu, на виртуалке XP, тип соединения виртуальный адаптер хоста.
*
Хостовая машина, имеет следующие интерфейсы:
Код:
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 не поддерживает установку шлюза.
Код:
192.168.56.10 ип
255.255.255.0 маска
192.168.56.1 - шлюз
8.8.8.8 - DNS гугла
Итак сейчас нужно прописать маршруты и сделать натирование, странно я ничего не смог нагуглить для подобной настройки
*
для начала ставим, так как придется писать маршруты по соурс адресу:
Код:
apt-get install iproute2
я сделаю свою таблицу маршрутизации для впн соединения. для этого добавляю в файл*
/etc/iproute2/rt_tables
имя таблицы маршрутизации
*
и создаю такие правила:
Код:
#роутит адреса по соурс адресу сети 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, то на впн сервер он и будет приходить, но впн в душе не знает таких адресов. В результате посылки данных будут просто уходить на сервер, а ответные пакеты просто к нам не придут.
*
Для этого замутим натирование соурс адреса в адрес понятный впну
Код:
#натирует соурс адрес виртуалки в адрес 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
*
для а мне нужно только:
Код:
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 128
Ну собственно и все что я хотел рассказать в этой заметке.*
*
Что бы не вводить все это руками сделал два скрипта при запуске и выключении впна:
*
/etc/ppp/ip-up.d/vpn_up
Код:
#!/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
Код:
#!/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