स्थिर IP के साथ ब्रिजित LXC कंटेनरों की स्थापना


15

मैं एक मेजबान पर कई LXC कंटेनरों को स्थापित करने की कोशिश कर रहा हूं, प्रत्येक अपने स्वयं के सार्वजनिक स्थैतिक आईपी के साथ।

मेरा होस्ट नवीनतम उबंटू चल रहा है। इसमें एक नेटवर्क इंटरफ़ेस है जिसका नाम eth0 है। स्थिर IP इंटरनेट से pingable हैं और इन्हें eth0: 210, eth0: 211 ... नाम दिया गया है, कॉलन के बाद के नंबर पतों के सबसे कम महत्वपूर्ण बाइट हैं। इन इंटरफेस के अलावा, मेरे पास होस्ट के सार्वजनिक आईपी पर br0 सेटअप है। लो, वेट 2 एलपीपी 9 ए, और एलएनसीबीआर0 इंटरफेस भी हैं। Lxcbr0 में एक निजी आईपी का पता है।

मेजबान / आदि / नेटवर्क / इंटरफेस की तरह दिखता है:

auto br0
iface br0 inet static
        bridge_ports eth0
        bridge_fd 0
        [...]

अब तक मैंने विभिन्न ऑनलाइन स्रोतों का उपयोग किया है, जिसमें एलएक्ससी कंटेनरों को शामिल करने के लिए एथ 0 की मेजबानी की जाती है ताकि वे मुझे स्थापित करने में मदद करने के लिए सार्वजनिक आईपी रख सकें

कंटेनर की कॉन्फ़िगरेशन फ़ाइल में है:

lxc.network.type = veth
lxc.network.link = br0

मैंने इस फ़ाइल से स्थिर lxc.network.ipv4 कॉन्फ़िगरेशन को हटा दिया है क्योंकि इससे समस्याएं पैदा हुई थीं। जब मैंने इस कॉन्फ़िगरेशन के साथ lxc-ls --fancy चलाई, तो मुझे आउटपुट में एक ही सार्वजनिक IP दो बार दिखाई देगा। इसके अतिरिक्त, यह कंटेनर / / / नेटवर्क / इंटरफेस के सबनेट कॉन्फ़िगरेशन के साथ गड़बड़ करेगा।

कंटेनर के इंटरफेस फ़ाइल की बात करें तो यह थोड़ा सा दिखता है:

auto eth0
iface eth0 inet static
        address [...]
        netmask 255.255.255.255
        #gateway [...]
        dns-nameservers 8.8.8.8

        post-up route add [...] dev eth0
        post-up route add default gw [...]
        post-down route del [...] dev eth0
        post-down route del default gw [...]

मुझे गेटवे पर टिप्पणी करनी थी और इस फ़ाइल में रूट एड कमांड जोड़ना था। अन्यथा, कंटेनर बूट होने में कुछ मिनट लेगा।

मेजबान पर / proc / sys / net / Bridge / Bridge-nf- * फाइलें सभी के लिए सेट हैं। 0. / proc / sys / net / ipv4 / ip_forward मान 1 है।

समस्या यह है, भले ही कंटेनर का "मार्ग -n" ऐसा दिखता है, जैसे कि मुझे कंटेनर से बाहर नहीं जाना चाहिए। कंटेनर का आईपी क्या होना चाहिए, इसके बारे में बताते हुए, मुझे मेजबान से जोड़ता है।

संपादित करें: होस्ट से कंटेनर के स्थिर आईपी को हटाने से मदद मिली, लेकिन अब मुझे एक नई त्रुटि मिल रही है। पुनर्निर्देशित HostFrom, New nexthop में होस्ट परिणामों से कंटेनर को पिंग करने की कोशिश कर रहा है। पैकेट्स केवल गेटवे से होस्ट तक, बार-बार जा रहे हैं। मेजबान से ट्रेसरआउट चलाने से पता चलता है कि पहला पड़ाव प्रवेश द्वार पर है। फिर सभी अन्य मार्ग * * * हैं। मुझे एक ही समस्या है कि चाहे कंटेनर ऑनलाइन हो या न हो।

जवाबों:


17

वास्तव में आप कर सकते हैं से पता और प्रवेश द्वार सेट के भीतर मेजबान बिल्कुल इंटरफेस को छूने के लिए कीवर्ड का उपयोग नहीं और कंटेनर कॉन्फ़िगर manual

इसे मेहमानों के भीतर रखें /etc/network/interfaces:

auto eth0
iface eth0 inet manual

इंटरफ़ेस सेट करने के लिए कंटेनर की कॉन्फ़िग फ़ाइल पर भी इसे छोड़ दें:

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxc-bridge-nat
lxc.network.ipv4 = 192.168.100.16/24
lxc.network.ipv4.gateway = auto

अतिथि ऐसा व्यवहार करेगा जैसे वह पहले से ही इंटरफ़ेस सेट करने के लिए BIOS है और बस इसका उपयोग करें।

विशेष रूप से अन्वेषण करें lxc.network.ipv4.gateway


धन्यवाद! इससे मेरी जान बच गई ... मेरा कंटेनर हमेशा एक नया dhcp पता प्राप्त करने की कोशिश करेगा ... इसे कंटेनर (स्थैतिक) के अंदर एक निश्चित मूल्य पर सेट करने से कंटेनर में बूटिंग नहीं हुई!
डोमिनिक डोर्न

ध्यान दें कि यदि होस्ट को निलंबित और फिर से शुरू किया गया है तो यह अच्छी तरह से काम नहीं करता है। Lxc अपने आवंटित आईपी-पते के साथ जारी है, लेकिन मेजबान को लगता है कि उसके पास अब कोई आईपी-पता नहीं है। मैंने पाया है कि lxc-net के लिए dnsmasq को कॉन्फ़िगर करना बेहतर है और वहां एक निश्चित पते को हैंडआउट करें।
HRJ

@ एचआरजे - आपको अपनी टिप्पणी में 'कैसे' को शामिल करना चाहिए या रेफरी से लिंक करने के बजाय केवल यह करना चाहिए। यह एक तकनीकी साइट है और आपको वास्तव में प्रयोग करने योग्य कुछ कहना चाहिए।
इयान मैकिन्टोश

2
ऐसा लगता है कि ऐसा करने के लिए सही जगह दोनों / etc / default / lxc में है जहाँ आप अपनी सीमा (LXC_DHCP_RANGE देखें) और /etc/dnsmasq.d-available/lxc में dnsmasq डॉक्स या मैनपेज के अनुसार सेट कर सकते हैं
Ian Macintosh


4

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


2

मैंने इसे दूसरे दिन Ubuntu 14.04 के साथ किया। यह आसान है। आपको बस /etc/network/interfacesअपने कंटेनर में फ़ाइल को संपादित करना है , और इसे सेट करना है:

auto eth0
iface eth0 inet static
 address $IP
 netmask $NETMASK
 gateway $GW
 dns-nameservers $DNS

प्रत्येक चर को वांछित मान से बदलें।

आपको कुछ और नहीं करना है!

पुनश्च: कुछ लाइनों से पहले अंतरिक्ष को नोटिस करें। यह जरूरी है।


इसके परिणामस्वरूप मेरे कंटेनर में बूटिंग नहीं हुई (ubuntu 14.04 सर्वर) .. sebastianwagner का उत्तर मेरे लिए काम करता है।
डोमिनिक डोर्न

2

सबसे अच्छा तरीका मुझे लगता है और सबसे तेज है lxc प्रोफाइल का उपयोग करना

lxc profile list - फिर आपके पास मौजूद सभी प्रोफाइल की सूची तैयार करें

lxc profile copy default minecraft(यह आपकी नई प्रोफ़ाइल का नाम है)

फिर lxc profile edit minecraft

यह ऊपर आ जाएगा

devices:
  eth0:
    ipv4.address: 192.168.1.114/24  - add this line and enter any ip address you like
    name: eth0
    nictype: macvlan - this is my setting
    parent: enp0s25
    type: nic
  root:
    path: /
    pool: lxc_zfs
    type: disk
name: mine
used_by:

फिर इसे सहेजें

अगले प्रोफाइल को अपने LXC कंटेनर में इस तरह से असाइन करें

lxc profile assign YOUR_CONTAINER_NAME YOUR_NEW_PROFILE_NAME

फिर बस कंटेनर को पुनरारंभ करें और आपका नया आईपी पता उस कंटेनर पर सेट हो जाए


1

मैं @Enrique मोरेनो टेंट के उत्तर का पालन करने के बाद अपने lxc कंटेनरों को सही ढंग से सेट कर सकता हूं, इसलिए मैं समझाऊंगा कि यदि आप अन्य वस्तुओं को स्थापित करना नहीं जानते हैं तो अधिक विवरण में क्या करना है।

1. अपने LXC कंटेनर को lxc-attachकमांड के माध्यम से एक्सेस करें

कमान:

$ lxc-attach -n YOUR-CONTAINER-NAME

2. के साथ अपने वर्तमान विन्यास देखें ifconfig

आदेश

root@mycontainer:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.3.160  netmask 255.255.255.0  broadcast 10.0.3.255
        inet6 fe80::216:3eff:fec9:2fa0  prefixlen 64  scopeid 0x20<link>
        ether 00:16:3e:c9:2f:a0  txqueuelen 1000  (Ethernet)
        RX packets 62  bytes 7142 (7.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 60  bytes 9788 (9.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 20285  bytes 175021803 (175.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20285  bytes 175021803 (175.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

`` `

3. पता, नेटमास्क और गेटवे प्राप्त करना

ifconfigउपरोक्त आदेश का परिणाम देखकर , हम फिर देखते हैं:

पता वह पता है जो आप चाहते हैं, आप इसे 10.0.3.166 में बदल सकते हैं।

नेटमास्क है: 255.255.255.0

गेटवे : गेटवे के लिए आप यहां दिए गए प्रसारण पते का उपयोग 10.0.3.255 के साथ करते हैं

जैसा कि आप ऊपर देख सकते हैं, वर्तमान में आपके पास अपने अतिथि (कंटेनर) को भरने के लिए आवश्यक सभी जानकारी है /etc/network/interfaces

4. dns-nameserversमूल्य प्राप्त करना ।

आदेश जारी करें:

cat /etc/resolv.conf

लेकिन शायद Google DNS का उपयोग करना सबसे अच्छा है, जो कि asre 8.8.8.8और8.8.4.4

5. /etc/network/interfacesकंटेनर में एडिटिंग

auto eth0 iface eth0 inet static address 10.0.3.166 netmask 255.255.255.0 gateway 10.0.3.255 dns-nameservers 8.8.8.8


ifconfigip aहाल के डेबियन / ubuntu संस्करणों के साथ प्रतिस्थापित किया गया है linuxconfig.org/…
rvazquezglez
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.