एलएक्ससी मेहमानों के लिए बाहरी आईपी पते कैसे कॉन्फ़िगर करें?


18

मैं Ubuntu 12.04 में LXC सुविधाओं की खोज कर रहा हूं और मैं वास्तव में इस तरह एक नेटवर्क स्थापित करना चाहता हूं:

client1:   192.168.56.101/24
lxc-host:  192.168.56.102/24
guest1     192.168.56.201/24
guest2     192.168.56.202/24
guest3     192.166.56.203/24

मैं सिर्फ एक "फ्लैट" नेटवर्क चाहता हूं, जहां मेहमान लैन तक पूरी पहुंच रखते हैं और ग्राहकों से दिखाई देते हैं। मैं यहाँ वर्णित के रूप में libvirt / KVM के साथ नेटवर्किंग का उपयोग करने के लिए उपयोग किया जाता हूँ: http://libvirt.org/formatdomain.html#elementsNICSBridge

मेजबान पर:

# /etc/network/interfaces
auto br0
iface br0 inet static
    address 192.168.56.102
    netmask 255.255.255.0
    broadcast 192.168.56.255
    bridge_ports eth1

पहले अतिथि के लिए lxc.conf:

# /var/lib/lxc/guest1/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.56.201/24

ऐसा लगता है कि 192.168.56.201 बाहर की दुनिया के लिए अदृश्य है, जो मुझे नहीं चाहिए। लगता है कि मुझे इनमें से एक काम करना है:

1) मेजबान और अतिथि पर मैन्युअल रूप से रूटिंग सेट करें

2) कुछ होके करें ... समय से पहले होस्ट पर वर्चुअल इंटरफेस बनाएं, और मेहमानों को उनका उपयोग करने के लिए कॉन्फ़िगर करें lxc.network.type=phys। मुझे नहीं पता कि क्या वास्तव में काम करेगा।

मैं उबंटू पर केंद्रित हूं, लेकिन आरएचईएल / फेडोरा के लिए उत्तर भी उपयोगी होगा ...।


1
अनुवर्ती: मैं br0 को प्रांतीय मोड पर सेट करता हूं और ऐसा लगता है कि मैं अभी जो चाहता हूं वह कर रहा हूं। मुझे लगता है कि यह मानक अभ्यास है, लेकिन यह मेरे द्वारा पढ़े गए कई एलएक्ससी ट्यूटोरियल में से किसी में भी शामिल नहीं था। मैं इस सवाल को एक समय के लिए खुला छोड़ देता हूँ, जब मुझे कोई प्रतिक्रिया मिलती है ...
Twblamer

मैंने लगभग ऐसा ही किया (थोड़ा और मैनुअल सेटिंग के साथ छोड़कर): प्रत्येक lxc config में netup स्क्रिप्ट पुल (होस्ट पर) में veth जोड़ने के लिए, प्रत्येक कंटेनर में मैन्युअल IP सेटअप, सेट करने के लिए प्रत्येक कंटेनर में अतिरिक्त स्क्रिप्ट / इंटरफ़ेस रूटिंग (होस्ट पर ip4 अग्रेषण के माध्यम से)। लेकिन, जहां तक ​​मैं देखता हूं, दोनों समाधानों का मतलब है कि कंटेनर खुद के आईपी पते को बहुत ज्यादा कुछ भी सेट कर सकता है (और एक पुल के लिए मेजबान के प्राथमिक इंटरफ़ेस को जोड़ना थोड़ा असुविधाजनक है)। इसलिए मुझे कुछ प्रतिक्रिया / समाधान में भी दिलचस्पी है।
होवरहेल

जवाबों:


13

यह बहुत सही है - हालांकि आप इस तरह से एक पंक्ति याद कर रहे हैं:

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

मेरे पास डेबियन पर एक LXC अतिथि चल रहा है। सबसे पहले, आप मेजबान पुल (आसान तरीका) स्थापित करते हैं /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

होवरहेल नोट के रूप में, कंटेनर में रूट वाला कोई व्यक्ति आईपी पता बदल सकता है। हां। यह एक पुल (उर्फ ईथरनेट स्विच) है। यदि आप इसे रोकना चाहते हैं, तो आप होस्ट पर फ़ायरवॉल नियमों का उपयोग कर सकते हैं - कम से कम मेरे मामले में, पैकेट को होस्ट के iptables से गुजरना होगा।


10
सबको धन्यवाद। यह दुख की बात है, लेकिन मैं अभी इस पर वापस आया, यह Google के माध्यम से पाया और भूल गया कि मैं मूल
प्रश्नकर्ता

2
@derobert: सुनिश्चित नहीं है कि यह तब उपलब्ध था, लेकिन मेरी समझ के autoलिए एक वैध मूल्य भी है lxc.network.ipv4.gateway, उस पुल के आईपी के लिए चूक जिसे वीथ-इंटरफ़ेस जुड़ा हुआ है।
0xC0000022L

क्या पुल इंटरफ़ेस को अपने आईपी की आवश्यकता है? यदि wan_phyइंटरनेट का सामना करना पड़ रहा है, तो पुल आईपी को अभी तक एक और वैध, सार्वजनिक आईपीवी 4 पता होना चाहिए क्योंकि इसे अन्य सार्वजनिक आईपीवी 4 पते के समान सबनेट में होना चाहिए जो मैं अपने lxc मेहमानों को सही से कॉन्फ़िगर करूंगा? लेकिन यह काफी बेकार लगता है। askubuntu.com/a/884293/394569 से पता चलता है कि पुल पते को कॉन्फ़िगर करना कड़ाई से आवश्यक नहीं है।
जॉस

@josch उस उदाहरण में, wan_phy के पास IP नहीं है, यह पुल के बजाय है। मुझे संदेह है कि इसे एक आईपी की आवश्यकता है, हालांकि, यदि आप नहीं चाहते कि "होस्ट" में बाहरी आईपी हो।
व्युत्पन्न

6

मैं LXC में पूरी तरह से नहीं मिला,

लेकिन मेरे पास स्थिर कंटेनरों के साथ कई कंटेनर हैं, जो मेरी कुछ वेबसाइटों के लिए इंटरनेट सेवाएं प्रदान करते हैं ...

शायद यह आपकी मदद कर सकता है, जो आप के लिए चाहते हैं।

मैं कई कंटेनर चलाता हूं, जैसे,

होस्ट मशीन पर मैंने प्रत्येक कंटेनर और होस्ट मशीन को जोड़कर होस्ट की फ़ाइल को संपादित किया: vi / etc / host

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

नेटवर्क के ऊपर मेरा राउटर आईपी है, लैन के लिए। (आंतरिक) पता और प्रसारण होस्ट मशीन, आंतरिक आईपी है, जिसे बाद में मैं इंटरनेट एक्सेस, वेबसर्वर, फ़ीचर, आदि के लिए एक VHOST का उपयोग करता हूं।

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 आईपी = 192.168.1.101

मैं अतिरिक्त कंटेनरों के लिए दोहराता हूं कि लैन पर स्वयं के स्थिर आईपी हैं ।।

कंटेनर में 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

समर्थकों में से एक है आईटी आईपी, (स्थानीय) लैन पर उपलब्ध। यू एसएसएच व्यक्तिगत व्यक्तिगत आईपी कर सकते हैं, टेस्ट का उपयोग करने के लिए!

उसके बाद im को पूरा यकीन है कि यू को यह पता लगाना चाहिए कि उन्हें इंटरनेट के माध्यम से कैसे चलाना है, उदाहरण के लिए, vhost को कंटेनर आईपी / लोड बैलेंसर्स / प्रॉक्सी / आदि।

शायद यह सेटअप किसी भी तरह से मदद कर सकता है।


यदि आप IP और गेटवे आदि को LXC कंटेनर कॉन्फिगर में कॉन्फ़िगर करते हैं, तो कंटेनर के अंदर इसे दोहराने की कोई आवश्यकता नहीं है। इसके बजाय ifaceश्लोक को manual(नहीं staticया dhcp) सेट करें । up, down, dns-nameserversआदि अभी भी डेबियन आदि में इस्तेमाल किया जा सकता
0xC0000022L

1

मैंने अभी तक LXC के साथ नहीं खेला है, लेकिन इस लेख को आपकी मदद करनी चाहिए: ईथरनेट पुलों (चेक विधि 2) का उपयोग करके नेटवर्क कॉन्फ़िगरेशन

आपको कॉन्फ़िगरेशन के बारे में कुछ संकेत देने के लिए (मुझे लगता है कि आपके पास br0 ठीक से पहले से ही ocnfigured है):

  1. आपको उपयोग करके वीथ डिवाइस की एक जोड़ी बनाने की आवश्यकता है 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. अब आप चाहते हैं कि आईपी पते के लिए lxc खोल में veth1 को कॉन्फ़िगर करके (जैसे 192.168.56.201) आपको सभी सेट करना चाहिए।

आपने यह सब नहीं देखा है? आपको शायद इनाम मिल जाएगा, लेकिन आपका जवाब मुझे बिल्कुल मदद नहीं करता है और मेरे पास ओपी के समान सटीक सेटअप है।
जोनास जी।

मैं आपकी अधिक सहायता कैसे कर सकता हूं? क्या मेरे जवाब में एक कदम था कि कोई काम नहीं किया, या आपने उन्हें प्रदर्शन किया और इससे समस्या हल नहीं हुई? नहींं, जैसा कि मेरे जवाब में कहा गया है, एलएक्ससी मेरे काम करने की इच्छा सूची में है, लेकिन मैंने अभी तक वास्तविक परीक्षण शुरू नहीं किया है।
Huygens
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.