LINUX.ORG.RU
решено ФорумAdmin

Виртуальный роутер под KVM - как настроить сеть?

 , , , ,


2

1

Доброго времени суток. Пожалуйста помогите, подскажите советом как правильно настроить сеть для следующей ситуации.

Сервер с Debian (x.y.z.13). Две сетевые карты: eth0 смотрит в LAN, eth1 - WAN.

Под KVM крутится pfSense (x.y.z.3). Созданы и проброшены два моста: kvmbr0 - lan, kvmbr1 - wan.

Также в сети есть роутер OpenWrt (пока еще действующий), который должен стать простой точкой доступа (x.y.z.18).

Текущие настройки:

/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

#lan
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

#wan
auto eth1
allow-hotplug eth1
iface eth1 inet manual

### KVM bidge
# LAN
auto kvmbr0
#iface kvmbr0 inet dhcp
iface kvmbr0 inet static
bridge_ports eth0
bridge_stp off
bridge_fd 0 # no forwarding delay
#bridge_maxwait 0
#bridge_waitport 0 # no delay before a port becomes available
address x.y.z.13
netmask 255.255.255.0
#gateway x.y.z.3
#network x.y.z.0
#broadcast x.y.z.255
#dns-nameservers 8.8.8.8

# WAN
auto kvmbr1
iface kvmbr1 inet manual
bridge_ports eth1
bridge_stp off
bridge_fd 0
#bridge_maxwait 0

/etc/rc.local

route add default gw x.y.z.3 dev kvmbr0

exit 0

Результат такого конфига - по сетке я могу достучатся до виртуалки, а интернета нет нигде.

Про файл /etc/rc.local взял отсюда, там же ссылка на изначальную заметку.

Буду рад любой помощи и подсказкам.



Последнее исправление: BlackDragon381 (всего исправлений: 3)

Ответ на: комментарий от handbrake

А если я по lan могу до виртуалки достучатся, то как они могут не работать? или есть еще какие-то ньюансы?

пс. В любом случае это не помогло. Даже с pfSense пингануть шлюз не могу.

BlackDragon381
() автор топика
Ответ на: комментарий от handbrake

нет его надо включить на хосте, чтобы на хосте бриджи заработали

чушь. Бриджи работают без форварда IP.

anonymous
()
Ответ на: комментарий от handbrake

Это необходимо выполнить на хосте с воткнутым wan кабелем? или можно и без него, пока интернет идет через wifi роутер?

BlackDragon381
() автор топика
Ответ на: комментарий от BlackDragon381

Если хочешь усугубить, то да, дергай провода, и туши форвардинг, мы тут все без дела сидим скучаем.
Деструктивного кода нет, можно выполнять.
И у тебя дебиан, я проглядел в начале, для kvm не рекомендуется, в нем патчей каких-то на тему KVM нет, что-то (не помню) на нем и убунте не работает/работает не так - rh, suse предпочтительней.
Сеть не очень понятна, можешь хотябы в пейнте схему накидать на обменник какой бросить ? Читать-разбирать конфиги с мусором в виде комментов глазам тяжко и не надо что там собираешься, у тебя есть статичная картина, могу помочь разобраться с ней. Дальше, это у тебя будет второй этап.
На вскидку или iptables (хост/гости), (кстати попробуй везде отключить фаервол) тебя душит или сеть выстроена коряво или бридж собран коряво или все вместе. pfsence тоже вещь в себе может icmp и на внутреннем душить (давно его не видел не помню уже).

handbrake ★★★
()
Ответ на: комментарий от handbrake

Структура ToBe wan (eth1) - kvmbr1 - pfSense (KVM guest) (3) - kvmbr0 - server (KVM host) (13) - lan (eth0)

Структура AsIs wan - wifi router (18) - lan (eth0) - server (KVM host) (13) - kvmbr0 - pfSense (KVM guest) (3)

/etc/network/interfaces

auto lo
iface lo inet loopback

#lan
auto eth0
allow-hotplug eth0
iface eth0 inet manual

#wan
auto eth1
allow-hotplug eth1
iface eth1 inet manual

### KVM bidge
# LAN
auto kvmbr0
iface kvmbr0 inet static
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
address x.y.z.13
netmask 255.255.255.0

# WAN
auto kvmbr1
iface kvmbr1 inet manual
bridge_ports eth1
bridge_stp off
bridge_fd 0
bridge_maxwait 0
/etc/rc.local

route add default gw x.y.z.3

exit 0

ip_forward включен wan сейчас в wifi роутере

root@server:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
root@server:~# brctl show
bridge name     bridge id               STP enabled     interfaces
kvmbr0          8000.6466b303cfb6       no              eth0
                                                        vnet0
kvmbr1          8000.0023546423b4       no              eth1
                                                        vnet1
root@server:~# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 64:66:b3:03:cf:b6
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1077210 errors:0 dropped:0 overruns:0 frame:0
          TX packets:66218 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:107288260 (102.3 MiB)  TX bytes:6352240 (6.0 MiB)

eth1      Link encap:Ethernet  HWaddr 00:23:54:64:23:b4
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

kvmbr0    Link encap:Ethernet  HWaddr 64:66:b3:03:cf:b6
          inet addr:192.168.3.13  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::6666:b3ff:fe03:cfb6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:997482 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1764 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:86150008 (82.1 MiB)  TX bytes:250050 (244.1 KiB)

kvmbr1    Link encap:Ethernet  HWaddr 00:23:54:64:23:b4
          inet6 addr: fe80::223:54ff:fe64:23b4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:61901 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2847584 (2.7 MiB)  TX bytes:3937 (3.8 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:324 errors:0 dropped:0 overruns:0 frame:0
          TX packets:324 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:19440 (18.9 KiB)  TX bytes:19440 (18.9 KiB)

vnet0     Link encap:Ethernet  HWaddr fe:00:00:00:00:11
          inet6 addr: fe80::fc00:ff:fe00:11/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:64454 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1075287 errors:0 dropped:515 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:6102490 (5.8 MiB)  TX bytes:107087617 (102.1 MiB)

vnet1     Link encap:Ethernet  HWaddr fe:00:00:00:00:12
          inet6 addr: fe80::fc00:ff:fe00:12/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:61901 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:3714198 (3.5 MiB)  TX bytes:7874 (7.6 KiB)
root@server:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.3.3     0.0.0.0         UG    0      0        0 kvmbr0
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 kvmbr0
BlackDragon381
() автор топика
Ответ на: комментарий от handbrake

Продублирую ссылку из шапки. Делал на основе нее.

Для обеспечения большей безопасности хочу чтобы весь трафик WAN шел только через роутер и на хосте обрабатывался по минимуму.

BlackDragon381
() автор топика
Ответ на: комментарий от handbrake

Есть другие идеи? Как задание задание адреса мосту повлияет на безопасность? Где и что нужно будет закрыть, если задать мосту адрес?

BlackDragon381
() автор топика
Ответ на: комментарий от BlackDragon381

Задай локальный какой-нибудь, 127.0.1.1 например. На Proxmox'е у себя именно так делал, когда надо было wan строго в одного гостя прокинуть.

strangeman ★★★★
()
Последнее исправление: strangeman (всего исправлений: 1)
Ответ на: комментарий от BlackDragon381

Что точно будет нормально работать
br0-wan(ext-ip), br1-lan(int-ip), У eth0,eth1 соответствующих бриджей адресов нет
В бриджи цепляешь соответствующие интерфейсы виртуалок с их внешними/внутренними ip.
forward=1
Настраиваешь на хосте фаер, как вариант делаешь на нем нат, поднимаешь кэширующий dns, и случайно обнаруживаешь, что твой хост выполняет большую часть функций pfsence.

handbrake ★★★
()
Ответ на: комментарий от handbrake

Вот я хочу, чтобы хост был только хостом, а функции роутера отдельная машина выполняла.

BlackDragon381
() автор топика
Ответ на: комментарий от strangeman

Задание локального адреса на помогло :(

пс. последняя фраза какая-то корявая получилась. В общем желаю, чтобы функции роутера выполняла отдельная виртуальная машина, в данном случае с pfSense.

Еще какие-нибудь идеи?

BlackDragon381
() автор топика
Ответ на: комментарий от BlackDragon381

Ну я тебя понял, сам такое реализовывал, только не на «голом» Debian, а на Proxmox, в том числе и с pfSense.

strangeman ★★★★
()

разбираться в этой твоей мути желания нет, извини. но надо сделать так:

удалить все что ты там «наконфигурил», включая бриджы. выключить eth0 (lan) полностью. убедиться, что на хосте выключен роутинг и файервол. выключить dhcp на eth1 (wan), на нем вообще ничего не должно быть.

перевести eth1 в up, _не_ получать айпишек, ничего больше не менять. создать бридж между eth1 и wan интерфейсом pfsense. получить ip/роуты/dns по dhcp на pfsense. в этот момент у тебя должен быть интернет на pfsense, но не на хосте.

настроить роутинг, нат, днс и дхцп на pfsense. перевести eth0 в up, _не_ получать айпишек, ничего больше не менять. создать бридж между eth0 и lan интерфейсом pfsense. получить ip/роуты/dns по dhcp любым другим хостом, воткнутым в eth0 дебиана. в этот момент у тебя должен быть интернет на pfsense и на этом втором компьютере, но не на хосте.

получить ip/роуты/dns по dhcp на втором бридже на хосте. в этот момент интернет у тебя должен быть везде.

когда решишь перевести вайфай роутер в режим ap, просто воткни «кабель с интернетом» в eth1 вместо точки, любой из лан портов точки воткни в eth0 как свитч, переведи в режим AP. не забудь настроить ppp/l2tp/whatever в pfsense после этого, если у тебя провайдер этого требует.

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

Огромное спасибо за инструкцию! Пошел гуглить по каждому из шагов отдельно (в linux я новичок).

Насколько я понял все настройки, на данном этапе, выполняются командами, а не правкой файлов, файлы остаются девственно чистыми.

Кабель интернета воткун в хост.

А как обойти то, что виртуалка не стартует без двух мостов, можно сразу оба поднять моста или нужно подправить конфиги гостя?

BlackDragon381
() автор топика
Ответ на: комментарий от BlackDragon381

да, правильно понимаешь. потом когда все заработает, занесешь все в конфиги в том варианте, в каком заработает.

поправь конфиг, сначала запусти с одним мостом. потом, когда будешь готов, добавляй второй бридж и рестартуй виртуалку. в виртуалке, я так понимаю, freebsd и pf'ом? не забудь перед рестартом записать конфиги, хотя у тебя там будет только настройка одного интерфейса.

вообще честно говоря не самая нуб-френдли задачка.

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

Да, freebsd & pf.

А куда деваться, если хочешь развиваться ;)

Вечером опробую, отпишусь о результатах!

BlackDragon381
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.