LINUX.ORG.RU

Делаешь на хосте бридж, в настройках lxc-контейнера делаешь сеть на основе veth.

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.hwaddr = 00:FF:AA:00:00:01
С таким конфигом у тебя в контейнере будет сетевой интерфейс eth0, сбридженный с хостовым br0.

Чтобы бридж настроить (предположим, твоя сетевуха называется eth0), в /etc/network/interfaces меняешь eth0 на br0 и добавляешь директиву bridge_ports:

#auto eth0
#iface eth0 inet dhcp

auto br0
iface br0 inet dhcp
    bridge_ports eth0
И после этого делаешь
root@localhost # ifup br0

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

А сеть во время этих манипуляций временно не отвалится? Это VPS, причем не мой. Не хотелось бы проблем

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

Ну вот в случае с ifup, как я описал, не отвалится (делал так на серверах), если не будешь другие настройки трогать. Но в любом случае доступ к компьютеру извне должен быть на случай факапа.

Олсо, можешь сделать пустой бридж (т.е. не сбридженный с реальной сетевухой), и настроить на нём NAT (маскарадинг), это описано в той же статье пониже. Этот вариант тебе 100% не даст испортить сетевые подключения, но, с другой стороны, LXC за NATом будет.

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

Я видел, что wheezy и systemd тут ни причём. Ставили без рекомендаций?

~ $ aptitude show lxc | grep Recommends
Recommends: bridge-utils, cgmanager, debootstrap, dnsmasq-base, iptables, libpam-cgfs, lxcfs, openssl, rsync, uidmap
Вот brctl находится в пакете bridge-utils.

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

Спасибо! Я туплю с утра. Теперь при ifup br0 идут постоянные
DHCPDISCOVER on br0 to 255.255.255.255 port 67 interval 8

Я так понимаю dhcp. Только как его настроить, чтоб работало?

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

eth0 как настроен в /etc/network/interfaces? br0 надо настроить так же, как был eth0 настроен, а настройки eth0 убрать (или закомментировать).

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

я тут таки уронил сеть неосторожным обращением с /etc/network/interfaces
Восстановил обратно через VNC

Но не суть, суть вот. Выкладываю настройки. Здесь мне как быть? Тут же алиасы, комментить полностью eth0 наверно нельзя..

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
	address 80.87.*.*
	netmask 255.255.254.0
	network 80.87.*.*
	broadcast 80.87.*.255
	gateway 80.87.*.1
	# dns-* options are implemented by the resolvconf package, if installed
	dns-nameservers 188.120.*.*
	dns-search deb

auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
	address 83.220.*.*

auto eth0:2
allow-hotplug eth0:2
iface eth0:2 inet static
	address 83.220.*.*

auto eth0:3
allow-hotplug eth0:3
iface eth0:3 inet static
	address 77.246.*.*

Или тупо eth везде на br поменять?

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

Говорит нет такого файла или директории

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

Поменял на br0 как ты сказал только секцию eth0

Интернета в контейнере нет. Интерфейс eth0 в нем почему-то только ipv6
Конфиги:
/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug br0
iface br0 inet static
	address 80.87.*.*
	netmask 255.255.254.0
	network 80.87.*.*
	broadcast 80.87.*.255
	gateway 80.87.*.1
	# dns-* options are implemented by the resolvconf package, if installed
	dns-nameservers 188.120.*.*
	dns-search deb

auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
	address 83.220.*.*

auto eth0:2
allow-hotplug eth0:2
iface eth0:2 inet static
	address 83.220.*.*

auto eth0:3
allow-hotplug eth0:3
iface eth0:3 inet static
	address 77.246.*.*


config контейнера
# Template used to create this container: /usr/share/lxc/templates/lxc-download
# Parameters passed to the template:
# For additional config options, please look at lxc.container.conf(5)

# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.arch = x86_64

# Container specific configuration
lxc.rootfs = /var/lib/lxc/node/rootfs
lxc.utsname = node

# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.hwaddr = 00:FF:AA:00:00:01



ifconfig хоста
root@web:~# ifconfig
br0       Link encap:Ethernet  HWaddr 52:54:00:22:86:89  
          inet addr:80.87.*.*  Bcast:80.87.*.255  Mask:255.255.254.0
          inet6 addr: fe80::5054:ff:fe22:8689/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:346084 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1799 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:16064147 (15.3 MiB)  TX bytes:277682 (271.1 KiB)

eth0      Link encap:Ethernet  HWaddr 52:54:00:22:86:89  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:39948757 errors:0 dropped:0 overruns:0 frame:0
          TX packets:132631 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2403814388 (2.2 GiB)  TX bytes:22318804 (21.2 MiB)

eth0:1    Link encap:Ethernet  HWaddr 52:54:00:22:86:89  
          inet addr:83.*.168.*  Bcast:83.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:2    Link encap:Ethernet  HWaddr 52:54:00:22:86:89  
          inet addr:83.220.*.*  Bcast:83.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:3    Link encap:Ethernet  HWaddr 52:54:00:22:86:89  
          inet addr:77.246.*.*  Bcast:77.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

veth6NUTNP Link encap:Ethernet  HWaddr fe:50:6f:a6:ac:1d  
          inet6 addr: fe80::fc50:6fff:fea6:ac1d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46 errors:0 dropped:0 overruns:0 frame:0
          TX packets:249490 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12860 (12.5 KiB)  TX bytes:14969556 (14.2 MiB)


ifconfig контейнера
root@node:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:ff:aa:00:00:01  
          inet6 addr: fe80::2ff:aaff:fe00:1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:54692 errors:0 dropped:0 overruns:0 frame:0
          TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3281652 (3.2 MB)  TX bytes:4906 (4.9 KB)

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:16436  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:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Как быть?

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

Попробуй из контейнера пингануть сетевуху хоста. И при этом запусти tcpdump на каждый интерфейс (в контейнере eth0, на хосте бридж и хостовая сетевуха). Чтобы узнать по пути следования где останавливается трафик, куда уходит или не доходит.

stalkerhouse ()
Ответ на: комментарий от Qwentor

Потому что у тебя кеш переполнился в голове, и ты забыл добавить в конфиг br0 строчку

    bridge_ports eth0
про которую я тебе в первом сообщении писал. Без неё у тебя поднимается пустой бридж, без физических интерфейсов; разумеется, интернета не будет. Олсо, когда исправишь, на eth0 IPv4-адреса не будет, он будет на br0, это нормально. И маршруты тоже через br0.

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

Олсо, кэп (в моём лице) намекает, что в контейнере сетевая карта будет сбриджена в итоге с сетевой картой хоста; чтобы был доступ в интернет, надо будет на неё ещё какой-нибудь внешний IP навесить, не такой же, как на хосте.

Если лишних IP у тебя нет, делай через NAT (конфиги eth0 возвращай в исходное состояние, делай пустой бридж, на него локальный адрес, включай форвардинг через sysctl и делай маскарадинг через iptables).

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

Если лишних IP у тебя нет

В принципе, у меня 3 штуки на алиасах - могу один под контейнер выделить

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

Короче, с бриджем понял - br0 создал, соединение с сервером больше не отваливается. Убрал один ip c хоста - и вроде как добавил в контейнер. Но в контейнере все так и нет интернета.
Конфиг контейнера:

# Template used to create this container: /usr/share/lxc/templates/lxc-download
# Parameters passed to the template:
# For additional config options, please look at lxc.container.conf(5)

# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.arch = x86_64

# Container specific configuration
lxc.rootfs = /var/lib/lxc/node/rootfs
lxc.utsname = node

# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth1
lxc.network.veth.pair = veth-01
lxc.network.ipv4 = 77.246.*.*/23
lxc.network.hwaddr = 00:1E:2D:F7:E3:4E
lxc.network.ipv4.gateway = 80.87.*.1

Чего не хватает? (Или что-то лишнее?)
ifconfig контейнера
eth1      Link encap:Ethernet  HWaddr 00:1e:2d:f7:e3:4e  
          inet addr:77.246.*.*  Bcast:77.246.*.255  Mask:255.255.254.0
          inet6 addr: fe80::21e:2dff:fef7:e34e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:36038963 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8180 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2162344434 (2.1 GB)  TX bytes:380296 (380.2 KB)

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:16436  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1704 (1.7 KB)  TX bytes:1704 (1.7 KB)

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

Впрочем как я понял, ты уже настроил

неа..

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

Ну так хотя бы до сетевухи хоста пинг есть или нет ? Может у тебя просто роутинг внутри контейнера неправильно настроен. Что показывает traceroute ?

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

До сетевухи хоста пинги тоже нет. А traceroute не установлен в систему., Роутинг не настраивал. А как надо настроить?

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

Во-первых, не знаю, зачем ты туда veth_pair добавил, но вряд ли это мешает.

Во-вторых, а до этого внешнего IP (77.246.*.*/23) вообще раньше трафик извне-то доходил? Он же в разных сетях с основным IP (80.87.*.*/23), а маршрутов каких-то дополнительных я у тебя в /etc/network/interfaces не нашёл.

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

Нифига не понял, что ты подразумеваешь под локалхостом. Ты с удалённого хоста на него же на его другой IP заходил? Или ты со своей домашней/рабочей машины на удалённый хост заходил?

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

И точно такие же настройки на контейнере были? Никаких дополнительных маршрутов? И на домашней машине никаких дополнительных маршрутов не было?

Сделай следующее, чтобы понятнее стало:

  • верни IP на алиас-интерфейс
  • сделай с домашней тачки traceroute до этого IP
tiandrey ★★★★★ ()
Последнее исправление: tiandrey (всего исправлений: 1)
Ответ на: комментарий от tiandrey

Linux сейчас в виртуалке, traceroute не пашет (везде ***), насколько я понял это из-за виртуальной машины. Так что выкладываю tracert с винды. (да уж..)

C:\WINDOWS\system32>tracert 77.246.*.*

Трассировка маршрута к web.deb [77.246.*.*]
с максимальным числом прыжков 30:

  1     1 ms     2 ms     1 ms  192.168.1.1 [192.168.1.1]
  2     2 ms     3 ms    11 ms  ppp91-77-48-1.pppoe.mtu-net.ru [91.77.48.1]
  3    23 ms    14 ms    17 ms  10.254.246.49 [10.254.246.49]
  4    25 ms    27 ms    10 ms  ss-cr04-be12.51.msk.stream-internet.net [212.188.1.5]
  5    11 ms    47 ms    12 ms  m9-cr04-be9.77.msk.stream-internet.net [195.34.59.249]
  6    37 ms    12 ms     7 ms  m9-cr03-ae13.77.msk.stream-internet.net [212.188.42.106]
  7    25 ms    14 ms     5 ms  212.188.60.174
  8    50 ms     9 ms     5 ms  vl-709.sr3.msk7.ip.di-net.ru [213.248.3.132]
  9     5 ms     6 ms     5 ms  213.219.206.18
 10    11 ms     5 ms    10 ms  core.webdc.ru [92.63.108.98]
 11     6 ms     5 ms    11 ms  web.deb [77.246.*.*]

Трассировка завершена.

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

Ok, а теперь давай посмотрим на traceroute чего-нибудь (например, ya.ru) с этого алиас-интерфейса на сервере:

traceroute -i eth0:3 ya.ru
И таблицу маршрутов на сервере:
route -n

tiandrey ★★★★★ ()
Ответ на: комментарий от tiandrey
traceroute to ya.ru (213.180.193.3), 30 hops max, 60 byte packets
setsockopt SO_BINDTODEVICE: No such device



root@web:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         80.87.192.1     0.0.0.0         UG    0      0        0 br0
77.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
80.87.192.0     0.0.0.0         255.255.254.0   U     0      0        0 br0
83.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0

Qwentor ★★★★★ ()
Ответ на: комментарий от tiandrey
root@web:~# traceroute -s 77.246.*.* ya.ru
traceroute to ya.ru (93.158.134.3), 30 hops max, 60 byte packets
 1  gw.msk.ispsystem.net (188.120.250.1)  0.298 ms  0.511 ms  0.511 ms
 2  edge.webdc.ru (92.63.108.97)  0.291 ms  0.498 ms  0.493 ms
 3  msk-ix-std.yandex.net (195.208.208.116)  1.333 ms  1.344 ms  1.338 ms
 4  std-p2-be1.yndx.net (87.250.239.133)  3.415 ms  1.909 ms  3.389 ms
 5  ugr-b-c1-ae13.yndx.net (87.250.239.86)  1.584 ms  1.575 ms  1.335 ms
 6  * * *
 7  www.yandex.ru (93.158.134.3)  5.937 ms  9.691 ms  8.169 ms
 8  www.yandex.ru (93.158.134.3)  7.437 ms  1.678 ms  2.278 ms
Qwentor ★★★★★ ()
Последнее исправление: Qwentor (всего исправлений: 1)
Ответ на: комментарий от Qwentor

Вообще я вангую, что у тебя весь трафик идёт через основной IP (который на eth0/br0 сейчас), даже тот, который на другие IP приходит. Это можно проверить, например, с помощью tcpdump (фильтруй только icmp-пакеты, увидишь, с какого IP уходит в сеть).

Попробуй узнать, может, для этих других всё же есть другие шлюзы? Или настрой уже NAT, если других шлюзов нет, то это самое простое решение.

tiandrey ★★★★★ ()
Последнее исправление: tiandrey (всего исправлений: 1)
Ответ на: комментарий от tiandrey
ping -I 77.246.*.* ya.ru



root@web:~# tcpdump -vvn  icmp
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:56:07.737401 IP (tos 0x0, ttl 64, id 8296, offset 0, flags [DF], proto ICMP (1), length 84)
    77.246.*.* > 93.158.134.3: ICMP echo request, id 28571, seq 16, length 64
14:56:07.738986 IP (tos 0x0, ttl 59, id 63161, offset 0, flags [none], proto ICMP (1), length 84)
    93.158.134.3 > 77.246.*.*: ICMP echo reply, id 28571, seq 16, length 64
14:56:08.738721 IP (tos 0x0, ttl 64, id 8414, offset 0, flags [DF], proto ICMP (1), length 84)
    77.246.*.* > 93.158.134.3: ICMP echo request, id 28571, seq 17, length 64

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

Короче при старте контейнера получаю такое:

Starting configure virtual network devices   ...fail!

Где посмотреть почему fail?

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

NAT почти заработал. Доступ из контейнера к хосту имею и наоборот, а вот из контейнера в интернет нет.
Настройки контейнера:

# Template used to create this container: /usr/share/lxc/templates/lxc-download
# Parameters passed to the template:
# For additional config options, please look at lxc.container.conf(5)

# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.arch = x86_64

# Container specific configuration
lxc.rootfs = /var/lib/lxc/node/rootfs
lxc.utsname = node

# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.veth.pair = veth-01
lxc.network.ipv4 = 192.168.0.5/24
lxc.network.hwaddr = 00:1E:2D:F7:E3:4E
lxc.network.ipv4.gateway = 192.168.0.1


/etc/network/interfaces сервера
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
	address 80.87.192.*
	netmask 255.255.254.0
	network 80.87.192.0
	broadcast 80.87.193.255
	gateway 80.87.192.1
	# dns-* options are implemented by the resolvconf package, if installed
	dns-nameservers 188.120.247.2
	dns-search deb

auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
	address 83.220.168.*

auto eth0:2
allow-hotplug eth0:2
iface eth0:2 inet static
	address 83.220.168.*

auto eth0:3
allow-hotplug eth0:3
iface eth0:3 inet static
	address 77.246.159.*

auto br0  
iface br0 inet static   
	bridge_ports none 
	bridge_fd 0 
	address 192.168.0.1  
	netmask 255.255.255.0 

Далее сделал

iptables -t nat -A POSTROUTING -s 192.168.0.5/24 -j SNAT --to-source 80.87.192.*

Делал по этому мануалу

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

А. Ну, наверное, ещё в iptables форвардинг нужно разрешить и интерфейс явно указать:

iptables -I FORWARD -i br0 -j ACCEPT
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT -o eth0 --to-source 80.87.192.*

tiandrey ★★★★★ ()
Последнее исправление: tiandrey (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.