Назад | Перейти на главную страницу

Как сопоставить сетевой адаптер VPN (tun0) на хосте Ubuntu с гостевой Windows VirtualBox?

У меня Ubuntu 10.04 с Oracle VirtualBox 3.2.6 с гостевой ОС Windows XP. Я использую VPN, к которой я хотел бы получить доступ для гостевой виртуальной машины, в ifconfig он отображается как:

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:5.192.10.99  P-t-P:5.192.10.99  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1362  Metric:1
          RX packets:14151 errors:0 dropped:0 overruns:0 frame:0
          TX packets:19860 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:4415271 (4.4 MB)  TX bytes:17949982 (17.9 MB)

Использование адаптеров NAT или Bridge на виртуальной машине дает мне только адаптер без vpn. Как я могу сопоставить адаптер tun0 с VirtualBox?

Вы, вероятно, сможете это сделать, но я бы не рекомендовал этого.

Для этого нужно, чтобы виртуальная машина установила собственное VPN-соединение с целевым сервером / сетью.

Теперь, если вы действительно хотите это сделать, вам нужно будет создать еще один мост на хосте, а затем создать туннельный интерфейс как статический интерфейс (т.е. не создается VPN при запуске) и добавляет его в мост. Только тогда этот туннель становится доступным для виртуальной машины. Затем VirtualBox можно дать указание виртуализировать этот интерфейс, что сделает его доступным для виртуальной машины.
Часть, в которой я не уверен, заключается в том, можно ли создать туннель вне VPN-клиента, а затем сделать его доступным для использования клиентом. Возможно, вам придется искать устройства Tap, а не устройства tun.
Это может стать довольно сложным и приведет к ситуации, когда у вашего клиента виртуальной машины может не быть сети, если VPN не работает (если вы также не виртуализируете другой мост). Как уже было сказано, я бы не рекомендовал этого.

Настройка /etc/sysctl.conf:

net.ipv4.ip_forward=1

Затем запускаем:

sudo sysctl -p

(Не обязательно, но) Я перезагрузился после этого и обнаружил, что он работает.