Puncte:1

Container LXC în aceeași rețea ca și gazda cu acces la internet

drapel ng

În primul rând, permiteți-mi să spun ce configurație de rețea încerc să realizez:

  1. Containerul LXC ar trebui să fie expus rețelei mele locale
  2. Containerul LXC ar trebui să aibă acces la internet

Iată ce am reușit să obțin până acum:

reţea

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
--------------------------------------------- -----------------------------------
Ajinkya Bawaskar avatar
drapel ng
![Arhitectura de rețea](https://discuss.linuxcontainers.org/uploads/default/original/2X/3/347711b37bf6c52a5b55bceae877378a5d5811a0.png)
A.B avatar
drapel cl
A.B
Doar observând că există o discrepanță: interfețele dvs. sugerează Ethernet normal, în timp ce imaginea sugerează Wifi. Un bridge care funcționează pe Ethernet, de obicei, nu va funcționa pe wireless pentru un client STA (tion) mai degrabă decât un AP: implicit este modul de 3 adrese în loc de 4 (https://networkengineering.stackexchange.com/questions/25100/four- layer-2-addresses-in-802-11-frame-header pentru câteva detalii).
Puncte:0
drapel np

Conform cu aceasta:

ping: gazdă necunoscută google.com

Nu aveți un server DNS valid /etc/resolv.conf a containerului dvs. Editați-l și includeți serverul de nume x.x.x.x linii pentru a se potrivi cu serverele dvs. DNS. Sau instalați un server de nume recursiv local, cum ar fi dnsmasq în interiorul containerului dvs.

Poți să folosești DNS public Google servere de exemplu:

server de nume 8.8.8.8
server de nume 8.8.4.4

Dacă acest lucru nu funcționează, puteți încerca mai întâi să trimiteți IP-uri de Internet valide din containerul dvs. (adică nu după numele DNS), cum ar fi ping 8.8.8.8. De asemenea, ar trebui să verificați dacă puteți face ping pe Ubuntu-ul real al gazdei 192.168.0.166 din recipientul dvs. Ar trebui să fie accesibil.

Ajinkya Bawaskar avatar
drapel ng
Pot ajunge la gazda reală ubuntu în și din interiorul containerului, deși editarea `/etc/resolv.conf` nu a rezolvat problema. Nu am putut ajunge direct la google.com și nici la 8.8.8.8.
drapel np
@AjinkyaBawaskar, vă rugăm să rulați `ip route && traceroute 8.8.8.8` din CT și postați-l aici.
Ajinkya Bawaskar avatar
drapel ng
Mulțumesc pentru răspuns. ```bash root@con1:/# rută ip implicit prin 192.168.0.1 dev eth0 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.185 ``` Cu toate acestea, nu am putut rula `traceroute`, deoarece nu a fost preinstalat în container și nu l-am putut instala folosind apt-get din cauza indisponibilității internetului în container.
drapel np
Routerul dvs. `192.168.0.1` face ping din container? Dacă da, ați obținut IP-ul lui `192.168.0.185` prin DHCP sau l-ați setat manual (adică IP static)?
Ajinkya Bawaskar avatar
drapel ng
Primesc IP-ul de la închirierea DHCP de la routerul meu. Rezultatele `ping` sunt demonstrate [aici](https://discuss.linuxcontainers.org/t/lxc-container-on-same-network-as-host-with-internet-access/12038/7?u=ajinkyabawaskar )
drapel np
Ok, se pare că am ajuns acolo, acum ai o problemă. Trebuie să vă conectați cumva rețeaua cu fir și fără fir. În prezent, se află pe aceeași subrețea IP, dar sunt pe interfețe diferite. Puteți încerca să convertiți eth & wlan într-un bridge pe `192.168.0.166`, dar routerul dvs. wireless trebuie să „înțeleagă” că ar putea exista mai mult de 1 IP în spatele conexiunii fără fir. Depinde cu adevărat de router, dar ar trebui să funcționeze pentru majoritatea dintre ei.
Ajinkya Bawaskar avatar
drapel ng
Să [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/129158/discussion-between-ajinkya-bawaskar-and-nstorm).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.