Как настроить внешние IP-адреса для гостей LXC?

Способность сделать это на одной строке в csh/tcsh несколько ограничено, как указано на этой странице:

К сожалению, csh не позволяет использование''; вместо символов новой строки в начале цикла, таких как:

foreach fn ( * ) ; file $fn ; end <-Это не работает

В этом случае необходимо обратиться к более косвенным методам.

alias check_ultras '(echo "foreach host ( tlsc0{1,2,3,4} ) " ; echo "echo :::: "\$"host :::: " ; echo "rsh "\$"host top -n -d1 7" ; echo "end" ) | csh'

  • или -

echo "while ( 1 ) \n" "xset "{,-}"led 2; sleep 1 \n" end | csh -f

Таким образом в Вашем случае, Вы могли сделать что-то как:

alias change_files '(echo "set n=0; foreach txt ( *_*.txt )"; echo "sed 's/_/-/g' "\$"txt"; echo "@ n ++"; echo "end"; echo "echo You changed "\$"n files) | csh'
change_files

(или, чтобы не создавать отдельный псевдоним:)

'(echo "set n=0; foreach txt ( *_*.txt )"; echo "sed 's/_/-/g' "\$"txt"; echo "@ n ++"; echo "end"; echo "echo You changed "\$"n files) | csh'

Но Вы могли, вероятно, сделать это легче иначе. Что Вы на самом деле пытаетесь сделать - переименовывают файлы или изменяют содержание тех файлов?

18
08.10.2012, 10:43
4 ответа

Это в значительной степени правильно — хотя Вы пропускаете строку как это:

lxc.network.ipv4.gateway = X.X.X.X

У меня есть гостевая работа LXC Debian. Во-первых, Вы настраиваете мост хоста (простой способ), в /etc/network/interfaces:

auto wan
iface wan inet static
        address 72.X.X.X
        netmask 255.255.255.0
        gateway 72.X.X.1
        bridge_ports wan_phy    # this line is important.
        bridge_stp off
        bridge_fd 2
        bridge_maxwait 20

В Вашем случае Вы назвали его br0, и я назвал его wan. Мост можно назвать чем-либо, что Вы хотите. Вы получаете эту работу сначала — если она перестала работать, займитесь расследованиями с (например) brctl

Затем Ваша конфигурация LXC настраивается для присоединения к тому мосту:

lxc.utsname = FOO
lxc.network.type = veth
lxc.network.link = wan                  # remember, this is what I call my bridge
lxc.network.flags = up
lxc.network.name = v-wan                # optional, I believe
lxc.network.ipv4 = 72.X.X.Y/24          # different IP than the host
lxc.network.ipv4.gateway = 72.X.X.1     # same as on the host

Как HoverHell отмечает, кто-то с корнем в контейнере может изменить IP-адрес. Да. Это - мост (иначе Ethernet-коммутатор). Если Вы хотите предотвратить это, можно использовать правила брандмауэра о хосте — по крайней мере, в моем случае, пакеты должны пройти iptables хоста.

13
27.01.2020, 19:46
  • 1
    Спасибо все. Это довольно печально, но я просто возвратился к этому, нашел это через Google и забыл, что был исходным автором вопроса... положительная сторона –  twblamer 29.08.2013, 02:59
  • 2
    @derobert: не уверенный это было доступно тогда, но auto также допустимое значение для lxc.network.ipv4.gateway и, к моему пониманию, значениям по умолчанию к IP моста, к которому подключается veth-интерфейс. –  0xC0000022L 16.05.2015, 03:15
  • 3
    Интерфейс моста требует своего собственного IP? Если wan_phy действительно ли направление является Интернетом, затем IP моста должен был бы быть еще одним допустимым, общедоступным адресом IPv4, потому что это должно быть в той же подсети как другие общедоступные адреса IPv4, что я настрою своих lxc гостей с, правильно? Но это кажется довольно расточительным. askubuntu.com/a/884293/394569 предполагает, что конфигурирование адреса моста строго не требуется. –  josch 06.07.2017, 04:10
  • 4
    @josch ссылки конфигурации В том примере, wan_phy не имеет IP, это находится на мосту вместо этого. Я сомневаюсь, что этому нужен IP вообще, тем не менее, если Вы не хотите, чтобы "хост" имел внешний IP. –  derobert 06.07.2017, 20:03

Я еще не играл с LXC, но эта статья должна выручить Вас: конфигурация сети с помощью мостов Ethernet (проверяют Метод 2).

Чтобы дать Вам, некоторая подсказка о конфигурации (я принимаю Вас, уже имеет br0 правильно ocnfigured):

  1. Необходимо создать пару veth использования устройства ip link add type veth
  2. Предыдущая команда создала 2 виртуальных интерфейса: veth0 и veth1
  3. Теперь добавьте виртуальный интерфейс veth0 к мосту: brctl addif br0 veth0
  4. в Вашей оболочке lxc введите: ns_exec -nm -- /bin/bash
  5. Теперь мы должны установить другое виртуальное если к сетевому пространству имен оболочки lxc: ip link set veth1 netns PID_OF_LXC_SHELL
  6. Теперь путем конфигурирования veth1 в lxc окружают к IP-адресу, который Вы хотите (например, 192.168.56.201), Вы должны быть все установлены.
1
27.01.2020, 19:46
  • 1
    Вы не протестировали это вообще? Вы, вероятно, получите щедрость, но Ваш ответ не помогает мне вообще, и у меня есть та же самая установка как OP. –  Jonas G. Drange 17.02.2013, 23:27
  • 2
    Чем я могу помочь больше? Был ли один шаг в моем ответе, который не сделал никакой работы, или Вы выполнили их, и он не решил проблему? Нет, как сказано в моем ответе, LXC находится на моем списке пожеланий материала, чтобы сделать, но я не запустил еще реальное тестирование. –  Huygens 18.02.2013, 09:43

Я не добрался полностью в LXC,

но я имею, устанавливают несколько контейнеров с, там владеют статическим IP в LAN, которые обеспечивают интернет-сервисы для некоторых моих веб-сайтов...

Возможно, это может помочь, на том, что Вы хотите для Вашего.

Я выполняю несколько контейнеров, как так,

НА ХОСТ-МАШИНЕ я Отредактировал Файл Хоста, Добавив Каждую Контейнерную и Хост-машину: vi/etc/hosts

lxc host machine:   192.168.1.100
container1:   192.168.1.101
container2:     192.168.1.102
container3:   192.168.56.102
container4:   192.166.56.103

после сохранения...

Снова, На хост-машине я установил сеть и мост к:

# /etc/network/interfaces
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
        **address** 192.168.1.100
        netmask 255.255.255.0
        **network 192.168.1.1**
        **broadcast** 192.168.1.100
        gateway 192.168.1.1
        dns-nameservers 8.8.8.8 8.8.4.4

выше сети мой IP маршрутизатора, для LAN. (внутренний) адрес и широковещательная передача являются хост-машиной, внутренним IP, который я позже использую VHOST для доступа в Интернет, веб-серверов, ftp, и т.д.

ДЛЯ КОНТЕЙНЕРОВ LXC 1-4 Я УСТАНАВЛИВАЮ КОНФИГУРАЦИЮ КАК ТАК:

LXC CONFIG
lxc.network.type=veth
lxc.network.link=br0
lxc.network.flags=up
lxc.network.hwaddr=00:16:3e:13:48:4e
**lxc.network.ipv4=192.168.1.101**

теперь Контейнер 1 IP = 192.168.1.101

я повторяюсь, чтобы дополнительные контейнеры имели там собственный статический IP на LAN..

в контейнере 1-4,

войдите в систему от хоста:

lxc-console -n CONTAINERNAME,

И я установил каждую сеть контейнеров на помехи, eth0 к:

auto eth0
iface eth0 inet static
        address 192.168.1.101
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.101
        gateway 192.168.1.1
        dns-nameservers 8.8.8.8 8.8.4.4

КАЖДЫЙ ИЗ КОНТЕЙНЕРОВ ИМЕЕТ IT СОБСТВЕННЫЙ IP, (локальный) ДОСТУПНЫЙ НА LAN. ВЫ CAN SSH КАЖДЫЙ ОТДЕЛЬНЫЙ ЛОКАЛЬНЫЙ IP, ДЛЯ ТЕСТИРОВАНИЯ ИСПОЛЬЗУЯ ШПАКЛЕВКУ!

После этого я - вполне уверенный u, должен выяснить, как выполнить их через Интернет после, пример, vhost к контейнерному IP / подсистемы балансировки нагрузки / прокси / и т.д.

Возможно, эта установка может выручить в так или иначе.

6
27.01.2020, 19:46
  • 1
    При конфигурировании IP и шлюза и т.д. в конфигурации контейнера LXC нет никакой потребности повторить ту внутреннюю часть контейнер. Вместо этого установите iface строка файла конфигурации к manual (нет static или dhcp). up, down, dns-nameservers и т.д. может все еще использоваться в Debian и т.д. –  0xC0000022L 16.05.2015, 03:17

CLI клиента LXD, lxc, позволяет настроить тип сетевого интерфейса; установите его на macvlanдля профиля default.

lxc profile device set default eth0 nictype macvlan

Контейнеры, использующие профиль default, будут иметь IP-адрес в локальной сети.

0
27.01.2020, 19:46

Теги

Похожие вопросы