Ну вот в случае с ifup, как я описал, не отвалится (делал так на серверах), если не будешь другие настройки трогать. Но в любом случае доступ к компьютеру извне должен быть на случай факапа.
Олсо, можешь сделать пустой бридж (т.е. не сбридженный с реальной сетевухой), и настроить на нём NAT (маскарадинг), это описано в той же статье пониже. Этот вариант тебе 100% не даст испортить сетевые подключения, но, с другой стороны, LXC за NATом будет.
Попробуй из контейнера пингануть сетевуху хоста. И при этом запусти tcpdump на каждый интерфейс (в контейнере eth0, на хосте бридж и хостовая сетевуха). Чтобы узнать по пути следования где останавливается трафик, куда уходит или не доходит.
Потому что у тебя кеш переполнился в голове, и ты забыл добавить в конфиг br0 строчку
bridge_ports eth0
про которую я тебе в первом сообщении писал. Без неё у тебя поднимается пустой бридж, без физических интерфейсов; разумеется, интернета не будет. Олсо, когда исправишь, на eth0 IPv4-адреса не будет, он будет на br0, это нормально. И маршруты тоже через br0.
Олсо, кэп (в моём лице) намекает, что в контейнере сетевая карта будет сбриджена в итоге с сетевой картой хоста; чтобы был доступ в интернет, надо будет на неё ещё какой-нибудь внешний IP навесить, не такой же, как на хосте.
Если лишних IP у тебя нет, делай через NAT (конфиги eth0 возвращай в исходное состояние, делай пустой бридж, на него локальный адрес, включай форвардинг через sysctl и делай маскарадинг через iptables).
Короче, с бриджем понял - 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 контейнера
Во-первых, не знаю, зачем ты туда veth_pair добавил, но вряд ли это мешает.
Во-вторых, а до этого внешнего IP (77.246.*.*/23) вообще раньше трафик извне-то доходил? Он же в разных сетях с основным IP (80.87.*.*/23), а маршрутов каких-то дополнительных я у тебя в /etc/network/interfaces не нашёл.
Нифига не понял, что ты подразумеваешь под локалхостом. Ты с удалённого хоста на него же на его другой IP заходил? Или ты со своей домашней/рабочей машины на удалённый хост заходил?
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.*.*]
Трассировка завершена.
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
Вообще я вангую, что у тебя весь трафик идёт через основной IP (который на eth0/br0 сейчас), даже тот, который на другие IP приходит. Это можно проверить, например, с помощью tcpdump (фильтруй только icmp-пакеты, увидишь, с какого IP уходит в сеть).
Попробуй узнать, может, для этих других всё же есть другие шлюзы? Или настрой уже NAT, если других шлюзов нет, то это самое простое решение.
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