Score:1

LXC Container บนเครือข่ายเดียวกับโฮสต์ที่มีการเข้าถึงอินเทอร์เน็ต

ธง ng

ก่อนอื่น ให้ฉันบอกว่าฉันกำลังพยายามกำหนดค่าเครือข่ายแบบใด:

  1. ควรเปิดเผยคอนเทนเนอร์ LXC ในเครือข่ายท้องถิ่นของฉัน
  2. คอนเทนเนอร์ LXC ควรมีการเข้าถึงอินเทอร์เน็ต

นี่คือสิ่งที่ฉันสามารถทำได้จนถึงตอนนี้:

เครือข่าย

ฉันได้อ้างถึง แปลง eth0 เป็น br0 และรับ LXC หรือ LXD ทั้งหมดของคุณไปยัง LAN | อูบุนตู เพื่อให้บรรลุข้อกำหนด #1 ในการกำหนดค่าด้านบน อย่างไรก็ตาม LXC ไม่มีการเชื่อมต่ออินเทอร์เน็ต

ข้อสังเกตอื่นๆ:

  • ฉันสามารถ ping ไปยัง & จากอุปกรณ์ทั้งหมดบนเครือข่ายยกเว้นคอนเทนเนอร์ LXC
  • ฉันสามารถ ping ไปยัง & จากคอนเทนเนอร์ LXC ไปยังโฮสต์: Ubuntu VM

ฉันอ้างถึงบางหัวข้อในฟอรัมนี้ซึ่งเกี่ยวข้องกับปัญหาของฉัน แต่ก็ไม่มีประโยชน์ ความคิดใด ๆ เกี่ยวกับ จะเปิดใช้งานการเข้าถึงอินเทอร์เน็ตภายในคอนเทนเนอร์ได้อย่างไร


บนโฮสต์ (Ubuntu VM)

ajinkya@metaverse:~$ lsb_release -a
ไม่มีโมดูล LSB
รหัสผู้จัดจำหน่าย: Ubuntu
คำอธิบาย: Ubuntu 20.04.2 LTS
เผยแพร่: 20.04
ชื่อรหัส: โฟกัส
ajinkya@metaverse:~$ lxc-ls --version
4.0.6
ajinkya@metaverse:~$ uname -a
Linux metaverse 5.11.0-25-generic #27~20.04.1-Ubuntu SMP อ. 13 ก.ค. 17:41:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ ip การแสดง
1: จริง: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN กลุ่มเริ่มต้น qlen 1,000
    ลิงค์ / ย้อนกลับ 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 ขอบเขตโฮสต์เลย
       valid_lft ตลอดไป reserved_lft ตลอดไป
    inet6 ::1/128 ขอบเขตโฮสต์ 
       valid_lft ตลอดไป reserved_lft ตลอดไป
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP กลุ่มเริ่มต้น qlen 1,000
    ลิงค์/อีเธอร์ 08:00:27:db:a6:da brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP กลุ่มเริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ 08:00:27:db:a6:da brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.161/24 brd 192.168.0.255 ขอบเขตโกลบอลไดนามิก br0
       valid_lft 85283วินาทีที่ต้องการ_lft 85283วินาที
    inet6 fd01::124:c625:211:6384/64 ขอบเขตแบบไดนามิกชั่วคราวทั่วโลก 
       valid_lft 251 วินาทีที่ต้องการ_lft 251 วินาที
    inet6 fd01::a00:27ff:fedb:a6da/64 ขอบเขต mngtmpaddr ไดนามิกระดับโลก 
       valid_lft 251 วินาทีที่ต้องการ_lft 251 วินาที
    ลิงค์ขอบเขต inet6 fe80::a00:27ff:fedb:a6da/64 
       valid_lft ตลอดไป reserved_lft ตลอดไป
4: veth1000_JY5u@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 สถานะ UP กลุ่มเริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ fe:03:d9:b4:05:29 brd ff:ff:ff:ff:ff:ff ลิงค์-netnsid 0
    inet6 fe80::fc03:d9ff:feb4:529/64 ลิงค์ขอบเขต 
       valid_lft ตลอดไป reserved_lft ตลอดไป

--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ brctl แสดง
ชื่อบริดจ์ รหัสบริดจ์ อินเทอร์เฟซที่เปิดใช้งาน STP
br0 8000.080027dba6da ไม่มี enp0s3
                                                 veth1000_JY5u
--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ cat /etc/default/lxc-net
# ไฟล์นี้สร้างขึ้นโดยอัตโนมัติโดย lxc.postinst หากไม่เป็นเช่นนั้น
# มีอยู่. การปรับแต่งจะไม่ถูกแทนที่
# ปล่อย USE_LXC_BRIDGE เป็น "จริง" ถ้าคุณต้องการใช้ lxcbr0 สำหรับคุณ
#ตู้คอนเทนเนอร์. ตั้งค่าเป็น "เท็จ" หากคุณจะใช้ virbr0 หรืออื่นที่มีอยู่
# บริดจ์หรือ mavlan ไปยัง NIC ของโฮสต์ของคุณ
USE_LXC_BRIDGE="เท็จ"

# หากคุณเปลี่ยน LXC_BRIDGE เป็นอย่างอื่นที่ไม่ใช่ lxcbr0
# คุณจะต้องอัปเดต /etc/lxc/default.conf ของคุณ เช่นเดียวกับไฟล์
# การกำหนดค่า (/var/lib/lxc/<container>/config) สำหรับคอนเทนเนอร์ใดๆ
# สร้างแล้วโดยใช้การกำหนดค่าเริ่มต้นเพื่อสะท้อนสะพานใหม่
# ชื่อ.
# หากคุณติดตั้ง dnsmasq daemon คุณจะต้องอัปเดตด้วย
# /etc/dnsmasq.d/lxc และรีสตาร์ท dnsmasq daemon ทั่วทั้งระบบ
LXC_BRIDGE="lxcbr0"
LXC_ADDR="10.0.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.3.0/24"
LXC_DHCP_RANGE="10.0.3.2,10.0.3.254"
LXC_DHCP_MAX="253"
# ยกเลิกการแสดงความคิดเห็นในบรรทัดถัดไป หากคุณต้องการใช้ไฟล์ conf สำหรับ lxcbr0
#dnsmasq ตัวอย่างเช่น คุณสามารถใช้ 'dhcp-host=mail1,10.0.3.100' เพื่อให้
# คอนเทนเนอร์ 'mail1' รับที่อยู่ IP 10.0.3.100 เสมอ
#LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf

# ยกเลิกการแสดงความคิดเห็นในบรรทัดถัดไปหากคุณต้องการให้ dnsmasq ของ lxcbr0 แก้ไขไฟล์ .lxc
#โดเมน. จากนั้น คุณสามารถเพิ่ม "server=/lxc/10.0.3.1' (หรือ $LXC_ADDR จริงของคุณ)
# ไปยังไฟล์การกำหนดค่า dnsmasq ของระบบของคุณ (ปกติ /etc/dnsmasq.conf
# หรือ /etc/NetworkManager/dnsmasq.d/lxc.conf บนระบบที่ใช้ NetworkManager)
# เมื่อทำการเปลี่ยนแปลงเหล่านี้แล้ว ให้เริ่มบริการ lxc-net และ network-manager ใหม่
# 'container1.lxc' จะแก้ไขบนโฮสต์ของคุณ
#LXC_DOMAIN="lxc"
--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ cat /etc/lxc/default.conf 
lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = ขึ้น
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx
--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ cat .config/lxc/default.conf
lxc.include = /etc/lxc/default.conf
lxc.idmap = คุณ 0 100000 65536
lxc.idmap = g 0 100000 65536
--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ lxc-ls --fancy
สถานะชื่อกลุ่มเริ่มต้นอัตโนมัติ IPV4 IPV6 ไม่ได้รับสิทธิ์ 
con1 กำลังทำงาน 0 - 192.168.0.185 fd01::216:3eff:fe67:d14e จริง 
--------------------------------------------- ----------------------------------

บนคอนเทนเนอร์

root@con1:/# lsb_release -a
ไม่มีโมดูล LSB
รหัสผู้จัดจำหน่าย: Ubuntu
คำอธิบาย: Ubuntu 16.04.7 LTS
เผยแพร่: 16.04
สมญานาม: xenial
root@con1:/# uname -a
Linux con1 5.11.0-25-generic #27~20.04.1-Ubuntu SMP อ. 13 ก.ค. 17:41:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
--------------------------------------------- ----------------------------------
root@con1:/# ip แสดง
1: จริง: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN กลุ่มเริ่มต้น qlen 1,000
    ลิงค์ / ย้อนกลับ 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 ขอบเขตโฮสต์เลย
       valid_lft ตลอดไป reserved_lft ตลอดไป
    inet6 ::1/128 ขอบเขตโฮสต์ 
       valid_lft ตลอดไป reserved_lft ตลอดไป
2: eth0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP กลุ่มเริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ 00:16:3e:67:d1:4e brd ff:ff:ff:ff:ff:ff ลิงค์-netnsid 0
    inet 192.168.0.185/24 brd 192.168.0.255 ขอบเขต global eth0
       valid_lft ตลอดไป reserved_lft ตลอดไป
    inet6 fd01::216:3eff:fe67:d14e/64 ขอบเขตแบบไดนามิก mngtmpaddr ทั่วโลก 
       valid_lft 272 วินาทีที่ต้องการ_lft 272 วินาที
    ลิงค์ขอบเขต inet6 fe80::216:3eff:fe67:d14e/64 
       valid_lft ตลอดไป reserved_lft ตลอดไป
--------------------------------------------- ----------------------------------
root@con1:/# ping google.com
ping: โฮสต์ที่ไม่รู้จัก google.com
--------------------------------------------- ----------------------------------
root@con1:/# ปิง 192.168.0.161
PING 192.168.0.161 (192.168.0.161) 56(84) ไบต์ของข้อมูล
64 ไบต์จาก 192.168.0.161: icmp_seq=1 ttl=64 เวลา=0.115 ms
64 ไบต์จาก 192.168.0.161: icmp_seq=2 ttl=64 เวลา=0.133 ms
64 ไบต์จาก 192.168.0.161: icmp_seq=3 ttl=64 เวลา=0.189 ms
64 ไบต์จาก 192.168.0.161: icmp_seq=4 ttl=64 เวลา=0.127 ms
^ซี
--- สถิติ ping 192.168.0.161 ---
ส่ง 4 แพ็กเก็ต ได้รับ 4 แพ็กเก็ต การสูญเสียแพ็กเก็ต 0% เวลา 3069ms
rtt นาที/เฉลี่ย/สูงสุด/mdev = 0.115/0.141/0.189/0.028 มิลลิวินาที
--------------------------------------------- ----------------------------------
Ajinkya Bawaskar avatar
ng flag
![สถาปัตยกรรมเครือข่าย](https://discuss.linuxcontainers.org/uploads/default/original/2X/3/347711b37bf6c52a5b55bceae877378a5d5811a0.png)
A.B avatar
cl flag
A.B
เพิ่งสังเกตว่ามีความคลาดเคลื่อน: อินเทอร์เฟซของคุณแนะนำอีเทอร์เน็ตปกติ ในขณะที่รูปภาพแนะนำ Wifi บริดจ์ที่ทำงานบนอีเทอร์เน็ตมักจะไม่ทำงานบนเครือข่ายไร้สายสำหรับ STA(tion client) แทนที่จะเป็น AP: ค่าเริ่มต้นคือโหมดที่อยู่ 3 ที่อยู่แทนที่จะเป็น 4 (https://networkengineering.stackexchange.com/questions/25100/four- layer-2-addresses-in-802-11-frame-header สำหรับรายละเอียดบางอย่าง)
Score:0
ธง np

ตามนี้:

ping: โฮสต์ที่ไม่รู้จัก google.com

คุณไม่มีเซิร์ฟเวอร์ DNS ที่ถูกต้องใน /etc/resolv.conf ของคอนเทนเนอร์ของคุณ แก้ไขและรวม เนมเซิร์ฟเวอร์ x.x.x.x บรรทัดให้ตรงกับเซิร์ฟเวอร์ DNS ของคุณ หรือติดตั้งเนมเซิร์ฟเวอร์แบบเรียกซ้ำในเครื่อง เช่น dnsmasq ภายในคอนเทนเนอร์ของคุณ

คุณสามารถใช้ได้ DNS สาธารณะของ Google เซิร์ฟเวอร์ ตัวอย่างเช่น:

เนมเซิร์ฟเวอร์ 8.8.8.8
เนมเซิร์ฟเวอร์ 8.8.4.4

หากไม่ได้ผล คุณสามารถลอง ping IP อินเทอร์เน็ตที่ถูกต้องจากคอนเทนเนอร์ของคุณก่อน (เช่น ไม่ใช่โดยใช้ชื่อ DNS) เช่น ปิง 8.8.8.8. นอกจากนี้ คุณควรตรวจสอบว่าคุณสามารถ ping Ubuntu โฮสต์จริงของคุณได้ 192.168.0.166 จากคอนเทนเนอร์ของคุณ มันควรจะสามารถเข้าถึงได้

Ajinkya Bawaskar avatar
ng flag
ฉันสามารถเข้าถึงโฮสต์อูบุนตูจริงไปยัง & จากภายในคอนเทนเนอร์ได้ แม้ว่าการแก้ไข `/etc/resolv.conf` จะไม่สามารถแก้ปัญหาได้ ฉันไม่สามารถเข้าถึง google.com หรือ 8.8.8.8 ได้โดยตรง
np flag
@AjinkyaBawaskar โปรดเรียกใช้ `ip route && traceroute 8.8.8.8` จาก CT และโพสต์ไว้ที่นี่
Ajinkya Bawaskar avatar
ng flag
ขอบคุณสำหรับการตอบกลับ ```ทุบตี root@con1:/# เส้นทาง ip ค่าเริ่มต้นผ่าน 192.168.0.1 dev eth0 192.168.0.0/24 dev eth0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 192.168.0.185 ``` อย่างไรก็ตาม ฉันไม่สามารถเรียกใช้ `traceroute` ได้เนื่องจากไม่ได้ติดตั้งไว้ล่วงหน้าภายในคอนเทนเนอร์ & ฉันไม่สามารถติดตั้งโดยใช้ apt-get เนื่องจากอินเทอร์เน็ตภายในคอนเทนเนอร์ไม่พร้อมใช้งาน
np flag
เราเตอร์ของคุณ `192.168.0.1` ส่ง Ping จากคอนเทนเนอร์หรือไม่ ถ้าใช่ คุณได้รับ IP `192.168.0.185` ผ่าน DHCP หรือตั้งค่าด้วยตนเอง (เช่น IP แบบคงที่) หรือไม่
Ajinkya Bawaskar avatar
ng flag
ฉันได้รับ IP จากการเช่า DHCP จากเราเตอร์ของฉัน ผลลัพธ์ `ping` แสดงไว้ [ที่นี่](https://discuss.linuxcontainers.org/t/lxc-container-on-same-network-as-host-with-internet-access/12038/7?u=ajinkyabawaskar )
np flag
โอเค ดูเหมือนว่าฉันไปถึงแล้ว คุณมีปัญหาแล้ว คุณต้องเชื่อมโยงเครือข่ายแบบมีสายและไร้สายของคุณด้วยวิธีใดวิธีหนึ่ง ขณะนี้พวกเขาอยู่ในเครือข่ายย่อย IP เดียวกัน แต่อยู่บนอินเทอร์เฟซที่แตกต่างกัน คุณสามารถลองแปลง eth & wlan เป็นบริดจ์บน `192.168.0.166` แต่เราเตอร์ไร้สายของคุณต้อง "เข้าใจ" ว่าอาจมีมากกว่า 1 IP ที่อยู่เบื้องหลังการเชื่อมต่อไร้สาย ขึ้นอยู่กับเราเตอร์จริงๆ แต่น่าจะใช้ได้กับส่วนใหญ่
Ajinkya Bawaskar avatar
ng flag
ให้เรา [สนทนาต่อในแชท](https://chat.stackexchange.com/rooms/129158/discussion-between-ajinkya-bawaskar-and-nstorm)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา