În primul rând, permiteți-mi să spun ce configurație de rețea încerc să realizez:
- Containerul LXC ar trebui să fie expus rețelei mele locale
- Containerul LXC ar trebui să aibă acces la internet
Iată ce am reușit să obțin până acum:
M-am referit Conversia eth0 în br0 și introducerea tuturor LXC sau LXD în LAN | Ubuntu pentru a atinge cerința #1 în configurația de mai sus. Cu toate acestea, LXC nu are conexiune la internet.
Alte observatii:
- Pot să fac ping către și de la toate dispozitivele din rețea, cu excepția containerului LXC.
- Pot să fac ping către și de la containerul LXC către gazda acestuia: VM Ubuntu.
M-am referit la câteva subiecte de pe acest forum care sunt relevante pentru problema mea, dar nu au avut niciun rezultat. Orice idee despre cum să activezi accesul la internet în interiorul containerului?
Pe gazdă (VM Ubuntu)
ajinkya@metaverse:~$ lsb_release -a
Nu sunt disponibile module LSB.
ID distribuitor: Ubuntu
Descriere: Ubuntu 20.04.2 LTS
Lansare: 20.04
Nume de cod: focal
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 Mar 13 iulie 17:41:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
--------------------------------------------- -----------------------------------
ajinkya@metaverse:~$ ip un spectacol
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 ::1/128 scope host
valid_lft pentru totdeauna preferred_lft pentru totdeauna
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 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 group default qlen 1000
link/ether 08:00:27:db:a6:da brd ff:ff:ff:ff:ff:ff
inet 192.168.0.161/24 brd 192.168.0.255 scope global dynamic br0
valid_lft 85283sec preferred_lft 85283sec
inet6 fd01::124:c625:211:6384/64 domeniul de aplicare global temporar dinamic
valid_lft 251sec preferred_lft 251sec
inet6 fd01::a00:27ff:fedb:a6da/64 scope global dynamic mngtmpaddr
valid_lft 251sec preferred_lft 251sec
inet6 fe80::a00:27ff:fedb:a6da/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
4: veth1000_JY5u@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
link/ether fe:03:d9:b4:05:29 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::fc03:d9ff:feb4:529/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
--------------------------------------------- -----------------------------------
ajinkya@metaverse:~$ brctl show
numele podului ID pod Interfețe activate STP
br0 8000.080027dba6da nu enp0s3
veth1000_JY5u
--------------------------------------------- -----------------------------------
ajinkya@metaverse:~$ cat /etc/default/lxc-net
# Acest fișier este generat automat de lxc.postinst dacă nu
# există. Personalizările nu vor fi înlocuite.
# Lăsați USE_LXC_BRIDGE ca „adevărat” dacă doriți să utilizați lxcbr0 pentru
# containere. Setați la „false” dacă veți folosi virbr0 sau altul existent
# bridge, sau mavlan la NIC-ul gazdei dvs.
USE_LXC_BRIDGE="fals"
# Dacă schimbați LXC_BRIDGE cu altceva decât lxcbr0, atunci
# va trebui, de asemenea, să actualizați /etc/lxc/default.conf, precum și fișierul
# configurație (/var/lib/lxc/<container>/config) pentru orice container
# deja creat folosind configurația implicită pentru a reflecta noul pod
# Nume.
# Dacă aveți demonul dnsmasq instalat, va trebui și să actualizați
# /etc/dnsmasq.d/lxc și reporniți demonul dnsmasq la nivel de sistem.
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"
# Decomentați următoarea linie dacă doriți să utilizați un fișier de conf pentru lxcbr0
# dnsmasq. De exemplu, puteți utiliza „dhcp-host=mail1,10.0.3.100” pentru a avea
# containerul „mail1” primește întotdeauna adresa IP 10.0.3.100.
#LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf
# Decomentați următoarea linie dacă doriți ca dnsmasq lui lxcbr0 să rezolve .lxc
# domeniu. Apoi puteți adăuga „server=/lxc/10.0.3.1” (sau $LXC_ADDR actual)
# în fișierul de configurare dnsmasq de sistem (în mod normal /etc/dnsmasq.conf,
# sau /etc/NetworkManager/dnsmasq.d/lxc.conf pe sistemele care folosesc NetworkManager).
# Odată făcute aceste modificări, reporniți serviciile lxc-net și network-manager.
# „container1.lxc” se va rezolva apoi pe gazda dvs.
#LXC_DOMAIN="lxc"
--------------------------------------------- -----------------------------------
ajinkya@metaverse:~$ cat /etc/lxc/default.conf
lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = sus
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 = u 0 100000 65536
lxc.idmap = g 0 100000 65536
--------------------------------------------- -----------------------------------
ajinkya@metaverse:~$ lxc-ls --fancy
NUME STAT AUTOSTART GRUPURI IPV4 IPV6 NEPRIVILEGAT
con1 RUNNING 0 - 192.168.0.185 fd01::216:3eff:fe67:d14e true
--------------------------------------------- -----------------------------------
Pe container
root@con1:/# lsb_release -a
Nu sunt disponibile module LSB.
ID distribuitor: Ubuntu
Descriere: Ubuntu 16.04.7 LTS
Lansare: 16.04
Nume de cod: xenial
root@con1:/# uname -a
Linux con1 5.11.0-25-generic #27~20.04.1-Ubuntu SMP Mar 13 iulie 17:41:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
--------------------------------------------- -----------------------------------
root@con1:/# ip un spectacol
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 ::1/128 scope host
valid_lft pentru totdeauna preferred_lft pentru totdeauna
2: eth0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue stare UP grup implicit qlen 1000
link/ether 00:16:3e:67:d1:4e brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.0.185/24 brd 192.168.0.255 scope global eth0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fd01::216:3eff:fe67:d14e/64 scope global mngtmpaddr dinamic
valid_lft 272sec preferred_lft 272sec
inet6 fe80::216:3eff:fe67:d14e/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
--------------------------------------------- -----------------------------------
root@con1:/# ping google.com
ping: gazdă necunoscută google.com
--------------------------------------------- -----------------------------------
root@con1:/# ping 192.168.0.161
PING 192.168.0.161 (192.168.0.161) 56(84) octeți de date.
64 de octeți de la 192.168.0.161: icmp_seq=1 ttl=64 time=0,115 ms
64 de octeți de la 192.168.0.161: icmp_seq=2 ttl=64 time=0,133 ms
64 de octeți din 192.168.0.161: icmp_seq=3 ttl=64 time=0,189 ms
64 de octeți din 192.168.0.161: icmp_seq=4 ttl=64 time=0,127 ms
^C
--- 192.168.0.161 statistici ping ---
4 pachete transmise, 4 primite, 0% pierdere de pachete, timp 3069 ms
rtt min/avg/max/mdev = 0,115/0,141/0,189/0,028 ms
--------------------------------------------- -----------------------------------