Alamat IP publik untuk wadah LXC

26

Ok, jadi saya ingin tahu bagaimana melakukan networking pada wadah LXC. Bukan hanya jenis informasi samar yang Anda dapatkan dari situs web lain, tetapi panduan pemula yang benar untuk membuatnya bekerja .. Karena sebagian besar contoh pada dasarnya adalah pengaturan untuk orang-orang untuk diuji, saya ingin menjalankan layanan pada satu ... seperti sebuah server web misalnya.

Saya menjalankan Ubuntu 12.04 LTS dan saya telah menginstal LXC dan saya dapat membuat, memulai dan menghentikan sebuah wadah. Server saya jelas memiliki IP yang menghadap publik dan saya ingin tahu cara mengatur wadah sehingga juga dapat memiliki IP publik. Karena tampaknya sudah ada jembatan di tempat dari wadah saya saat ini, sepertinya saya juga perlu memberikan kisaran DHCP yang umum untuk mereka untuk bekerja atau secara manual memberikan alamat IP statis ke wadah saya.

Jika saya ingin menetapkan IP secara statis ke wadah, bagaimana saya melakukannya? Apakah saya perlu melakukan perubahan pada konfigurasi jembatan saya pada tuan rumah? Apakah sebenarnya lebih baik melakukannya dengan opsi MACVLAN?

Bantuan apa pun akan dihargai.

pengguna132151
sumber
Saya tidak terbiasa dengan LXC, tetapi ISP Anda biasanya hanya akan memberi Anda satu alamat IP publik. Apakah Anda memiliki paket dengan beberapa ips statis?
wlraider70
IP yang menghadap publik bukan satu-satunya kasus penggunaan, kami ingin 2 IP publik ditugaskan ke wadah penyeimbang beban kami, tetapi kami ingin IP LAN khusus yang didedikasikan untuk berbagai layanan lainnya. Dengan begitu jika kita memindahkan wadah di perangkat yang berbeda, semudah memindahkan IP (DNS tidak berfungsi dalam hal ini untuk beberapa komponen yang kita gunakan)
David Parks

Jawaban:

23

Pendekatan saya mengasumsikan bahwa server Anda memiliki NIC tunggal, dan Anda perlu membagikan NIC itu antara tuan rumah dan tamu LXC. Ini melibatkan menggunakan jembatan. Jembatan memiliki dan mengelola eth0. Tuan rumah sekarang mengkonfigurasi jaringannya sendiri br0sebagai ganti eth0. Para tamu LXC dikonfigurasi untuk terhubung ke jembatan.

  1. Di tuan rumah sudo apt-get install bridge-utils,.

  2. Di tuan rumah, ganti eth0dengan jembatan:

    Ini berbahaya. Dapatkan ini salah dan Anda bisa dikunci dari server Anda. Pastikan login lokal diaktifkan dan akses konsol lokal berfungsi, sehingga Anda dapat mengembalikan perubahan ini jika Anda memiliki masalah.

    Di /etc/network/interfaces:

    1. Ganti auto eth0dengan auto br0.
    2. Menggantikan:

      iface eth0 inet dhcp
      

      dengan:

      iface br0 inet dhcp
          bridge_ports eth0
      

      Jika Anda memiliki konfigurasi jaringan statis, maka Anda akan mengganti:

      iface eth0 inet static
          address ...
          netmask ...
          gateway ...
          etc.
      

      dengan:

      iface br0 inet static
          bridge_ports eth0
          address ...
          netmask ...
          gateway ...
          etc.
      

      Anda hanya mengubah eth0untuk br0dan menambahkan bridge_ports eth0line.

    3. Nyalakan ulang host. Jika Anda melakukan ini secara lokal, maka jalankan sudo ifdown eth0sebelum Anda mulai, dan sudo ifup br0setelah itu juga akan melakukannya. Perhatikan bahwa jembatan dapat membutuhkan sedikit waktu untuk muncul, jadi berikan lima menit setelah reboot sebelum Anda menganggap bahwa semuanya hilang.

  3. Untuk memindahkan wadah bernama LXC yang diberikan ke IP publik:

    1. Hentikan wadahnya.
    2. Di host, edit dan ubah ke ./var/lib/lxc/container_name/configlxc.network.linkbr0
    3. Pada host, edit dan konfigurasikan IP publik Anda seperti biasa (DHCP atau konfigurasi statis sesuai kebutuhan). Perhatikan bahwa antarmuka masih dipanggil dari sudut pandang wadah./var/lib/lxc/container_name/rootfs/etc/network/interfaceseth0
    4. Mulai ulang wadah.
  4. Untuk mengubah default untuk wadah LXC baru, edit /etc/lxc/default.confpada host dan ubah lxc.network.linkke br0.

  5. Jika Anda tidak memerlukan jembatan NAT yang disediakan LXC sama sekali (mis. Semua wadah Anda akan menggunakan jembatan baru sebagai gantinya), maka pada host edit /etc/default/lxcdan ubah USE_LXC_BRIDGEke "false", dan kemudian pada host berjalan sudo service lxc restart.

Robie Basak
sumber
Terima kasih! Ada banyak pertanyaan serupa di sekitar. Tapi, jawaban ini akhirnya membantu saya menyelesaikan pekerjaan.
Mausy5043
1

Robie, terima kasih banyak untuk memposting jawaban ini, saya telah berusaha keras untuk mendapatkan ini dan ini adalah satu-satunya metode yang berhasil!

Saya pikir saya harus menyebutkan beberapa hal yang saya temukan untuk membantu memperjelas instruksi untuk admin lainnya.

Tuan rumah saya memiliki beberapa alias ip statis yang ditugaskan ke eth0 pada tamu, misalnya:

iface eth0:1 inet static
  address 5.5.5.5
  netmask 255.255.255.5
  gateway 5.5.5.1
etc.

Sekarang kami tidak ingin mengatur br0 dengan cara yang sama, kami hanya ingin satu IP tanpa alias seperti yang ditunjukkan Robie di atas.

Jadi katakanlah Anda ingin 5.5.5.5 ditugaskan ke wadah debian8.

Edit /var/lib/lxc/debian8/etc/network/interfacesdan tambahkan:

iface eth0 inet static 
      address 5.5.5.5
      netmask 255.255.255.5
      gateway 5.5.5.1
    etc.

Kemudian terbitkan perintah ini: route add default gw <gateway-ip, in my case 5.5.5.1>

Setelah itu, reboot wadah dan semuanya akhirnya bekerja! :)

Gregory Wolf
sumber
1

Saya memiliki masalah yang sama dan saya punya solusi ini (cepat dan kotor).

server: eth0 = 10.1.0.77/24
server: lxdbr0 (lxd bridge) = 10.255.255.77/24

container: eth0 = 10.255.255.100/24 (same network as lxdbr0)
container: eth0:0 = 194.99.99.99/28  (public ip address on eth0 alias)

Di server: route add -host 194.99.99.99 gw 10.255.255.100 dev lxdbr0

Juga, jika perlu tambahkan rute ke router hulu.

Mungkin, bukan solusi terbaik tetapi tidak membutuhkan usaha keras! Tepuk tangan.

andrea
sumber