Имеется домашняя машина под FreeBSD 7.0-RELEASE
На ней стоит эмулятор qemu и в качестве гостевой ос запущена Windows XP.
Вообщем я хочу чтобы Windows XP выходила в интеренет через FreeBSD... для этого задействовал ipnat.
Я поключён к интернет через VPN(mpd)
В качестве интерфейса взаимодействия с гостевой ОС используется tap0.
Проблема состоит в том, что гостевая ОС не может ходить по интеренет, а ходит только по локальной сети!!!Запуск qemu:
qemu -hda winxp.raw \
-m 512 \
-boot c \
-localtime \
-net nic \
-net tapКонфиг запуска сети qemu-ifup:
#!/bin/sh
/usr/local/bin/sudo /sbin/ifconfig $1 192.168.7.1
exec trueНастройки гостевой ОС:
192.168.7.7
ip gw 192.168.7.1
dns: 10.1.1.1 #днс проваНастройки ipnat:
#ipnat -l
List of active MAP/Redirect filters:
map nfe0 from 192.168.7.0/24 to any -> 10.2.7.6/32Собственно ifconfig FreeBSD(nfe - интерфейс "железной" карты, ng - vpn(mpd)):
(link#2)nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:1d:60:7d:de:65
inet 10.2.7.6 netmask 0xffffff00 broadcast 10.2.7.255
media: Ethernet autoselect (100baseTX <full-duplex,flag0,flag1>)
status: active
(link#4)tap0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 00:bd:1f:1d:00:00
inet 192.168.7.1 netmask 0xffffff00 broadcast 192.168.7.255
Opened by PID 15058
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1370
inet 172.18.5.69 --> 172.16.1.4 netmask 0xffffffff#netstat -rn
Destination Gateway Flags Refs Use Netif Expire
default 172.16.1.4 UGS 0 7966 ng0
10.0.0.0/8 10.2.7.1 UGS 0 118008 nfe0 - внутренние сети прова и основной шлюз
10.2.7.0/24 link#2 UC 0 0 nfe0
10.2.7.1 00:30:48:92:d7:b7 UHLW 3 4 nfe0 921
127.0.0.1 127.0.0.1 UH 0 0 lo0
172.16.1.4 172.18.5.69 UH 1 0 ng0 - vpn соединение
172.18.5.69 lo0 UHS 0 0 lo0
192.168.7.0/24 link#4 UC 0 0 tap0 - интерфейс для виртуальной машины
192.168.7.7 52:54:00:12:34:56 UHLW 1 16 tap0 599Проблема в том, что я незнаю как мне пустить трафик к интернету через ng(VPN)
Однако по локальной сети гостевая ОС лазает отлично!
в rc.conf добавить gateway_enable="YES"
>в rc.conf добавить gateway_enable="YES"Да всё это есть. И net.inet.ip.forwarding=1 и Gateway
И пакеты натятся в домашнюю сеть.
А вот в интернет идти не хочет. (
>map nfe0 from 192.168.7.0/24 to any -> 10.2.7.6/32Opened by PID 15058
>
>ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1370
> inet 172.18.5.69 --> 172.16.1.4 netmask 0xffffffffЯ не большой знаток BSD, но эти строки как то не вяжутся. Натите в локалку, хотя этого не надо делать, и не натите в интернет :?).
Вдогонку, на default gw сети 10 надо прописать маршрут к 192.168.7 через ваш интерфейс 10.2.7.6 (Если вы конечно имеете доступ).
Или два правила для нат. destination 10.2.7 через 10.2.7.6, остальное через 172.18.5.69
>Или два правила для нат. destination 10.2.7 через 10.2.7.6, остальное через 172.18.5.69О СПАСИБО! ;)))
Действительно прокатило!
Добавил правило для ipnat.rules:
map ng0 from 192.168.7.0/24 to any -> 172.18.5.69/32
>>Или два правила для нат. destination 10.2.7 через 10.2.7.6, остальное через 172.18.5.69
>
>О СПАСИБО! ;)))
>Действительно прокатило!
>Добавил правило для ipnat.rules:
>map ng0 from 192.168.7.0/24 to any -> 172.18.5.69/32Мда, у Вас оказалось ещё проще, за счёт того что SNAT выполняется после routing.
Хотя в Linux тоже самое.
Скажите, во FreeBSD tap интерфейс может поднимать непривелегированный пользователь?
>Скажите, во FreeBSD tap интерфейс может поднимать непривелегированный пользователь?У меня стоит net.link.tap.user_open=1
Хотя без sudo не поднимается... ((($> ifconfig tap0 192.168.7.1
ifconfig: ioctl (SIOCAIFADDR): permission denied
>[оверквотинг удален]
> 0
> 0 tap0 - интерфейс для виртуальной машины
>
>192.168.7.7 52:54:00:12:34:56 UHLW
> 1
> 16 tap0 599
>
>Проблема в том, что я незнаю как мне пустить трафик к интернету
>через ng(VPN)
>Однако по локальной сети гостевая ОС лазает отлично!http://www.unix.lviv.ua/content/view/38/27/
Там есть раздел сеть