Ситуация следующая.
1. Имеем:
Хост : linux MATE
Virtualbox: 5.0.32_Ubuntu r112930
Гостьевая ос: Windows7
VPN от провайдера: ShadeYouVPN
2. Стоит задача:
Настроить сеть на хосте таким образом чтобы весь трафик гостевой ос шел через VPN, а при разрыве соединения интернет просто пропадал.
Сейчас сеть настроена таким образом: В Netvork Manager создано vpn соединение посредством импорта настроек из конфига для OpenVPN. И при подключении к интернету автоматически велючается vpn. Но при разрыве соединения с vpn виртуалка идет в сеть напрямую.
Настройка vpn в гостевой ос исключена.
Результат выданный гуглом
https://forum.antichat.ru/threads/412085/ в принципе это точный ответ, но так как я только начал свое знакомство с Linux для меня статья не до конца ясна.
Вопросы по статье:
Решил настроить 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
*
вот между ними мне и нужно разрулить трафик что куда пойдет.
Как посмотреть имеющиеся интерфейсы на моей машине? Как узнать интерфейс моего VPN?*
Гостевая машина. (виртуальный адаптер хоста)
пришлось задать параметры карточки вручную, так как 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
iproute2 установлен, я правильно понимаю? Нужно открыть файл rt_tables с рут правами и в самом конце дописать:100 vpn0
#роутит адреса по соурс адресу сети 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
#натирует соурс адрес виртуалки в адрес 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
Скрипты нужно создавать для автоматической настройки конфигурации при перезапуске?