ก่อนอื่น ให้ฉันบอกว่าฉันกำลังพยายามกำหนดค่าเครือข่ายแบบใด:
- ควรเปิดเผยคอนเทนเนอร์ LXC ในเครือข่ายท้องถิ่นของฉัน
- คอนเทนเนอร์ 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 มิลลิวินาที
--------------------------------------------- ----------------------------------