Puncte:0

Rutare IPv6 pentru închisorile VNET pe FreeBSD 13-RELEASE

drapel in

Am un bloc de adrese IPv6 cu dimensiunea de prefix 64. Pe computerul meu gazdă care rulează FreeBSD 13-RELEASE am trei închisori:

jls

   JID Adresa IP Calea numelui de gazdă
     1 svcfw /usr/jail/svcfw
     2 www /usr/jail/www
     3 ifee /usr/jail/ifee

Adaptor de rețea gazdă conectat la Internet global:

ifconfig vtnet0

vtnet0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metrica 0 mtu 1500
    options=4804bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,LRO,LINKSTATE,TXCSUM_IPV6>
    eter 56:00:03:7a:2c:a1
    inet 192.248.184.48 netmask 0xfffffe00 difuzare 192.248.185.255
    inet6 fe80::5400:3ff:fe7a:2ca1%vtnet0 prefixlen 64 scopeid 0x1
    inet6 2001:19f0:6c01:2033::2 prefixlen 65
    media: selecție automată Ethernet (10Gbase-T <full-duplex>)
    stare: activ
    nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

Conținutul meu /etc/rc.conf:

hostname="login"

clear_tmp_enable="DA"
syslogd_flags="-ss"
sendmail_enable="NIMIC"
static_routes="linklocal"

route_linklocal="-net 169.254.0.0/16 -interfață vtnet0"
ifconfig_vtnet0="inet 192.248.184.48 netmask 255.255.254.0"
defaultrouter="192.248.184.1"
ifconfig_vtnet0_ipv6="inet6 2001:19f0:6c01:2033::2 prefixlen 65"
ipv6_default_interface="vtnet0"
# XXX:
# - https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233283#c4
# - https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233283#c16
ipv6_defaultrouter="fe80::fc00:3ff:fe7a:2ca1%vtnet0"
cloned_interfaces="bridge0 epair0"
ifconfig_epair0a_ipv6="inet6 2001:19f0:6c01:2033:8000::1 prefixlen 65"
ifconfig_epair0a="inet 10.22.0.1 netmask 255.255.0.0"

# Rețea privată: net5ab50b04a6b66
ifconfig_vtnet1="inet 10.9.96.5 netmask 255.255.240.0 mtu 1450"

#pf_enable="DA"
#pf_rules="/etc/pf.conf"
#pflog_enable="DA"
#pflog_logfile="/var/log/pflog"

sshd_enable="DA"

dumpdev="NU"
zfs_enable="DA"
devmatch_blacklist="virtio_random.ko"
gateway_enable="DA"
ipv6_gateway_enable="DA"
wireguard_enable="DA"
wireguard_interfaces="wg0"
jail_enable="DA"

Rețeaua de la gazdă funcționează așa cum ar trebui:

aduceți -6 -o /dev/null http://example.com

/dev/null 1256 B 10 MBps 00s

ping6 -c 4 google.com

PING6(56=40+8+8 octeți) 2001:19f0:6c01:2033::2 --> 2a00:1450:4001:802::200e
16 octeți din 2a00:1450:4001:802::200e, icmp_seq=0 hlim=119 time=0,832 ms
16 octeți din 2a00:1450:4001:802::200e, icmp_seq=1 hlim=119 timp=0,793 ms
16 octeți din 2a00:1450:4001:802::200e, icmp_seq=2 hlim=119 time=0,867 ms
16 octeți din 2a00:1450:4001:802::200e, icmp_seq=3 hlim=119 time=0,827 ms
--- statistici ping6 google.com ---
4 pachete transmise, 4 pachete primite, 0,0% pierdere de pachete
dus-întors min/avg/max/std-dev = 0,793/0,830/0,867/0,026 ms

Adaptorul de rețea principal al primei închisori:

doas jexec svcfw ifconfig bridge0

bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metrica 0 mtu 1500
    eter 58:9c:fc:10:e2:24
    inet6 2001:19f0:6c01:2033:8000::2 prefixlen 65
    inet 10.22.0.2 netmask 0xffff0000 difuzare 10.22.255.255
    id 00:00:00:00:00:00 prioritate 32768 hellotime 2 fwddelay 15
    maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
    ID rădăcină 00:00:00:00:00:00 prioritate 32768 ifcost 0 portul 0
    membru: epair2a flags=143<LEARNING, DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 5 prioritate 128 calea cost 2000
    membru: epair1a flags=143<LEARNING, DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 4 prioritate 128 calea cost 2000
    membru: epair0b flags=143<LEARNING, DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 3 prioritate 128 calea cost 2000
    grupe: pod
    nd6 options=8001<PERFORMNUD,DEFAULTIF>

Ping închisoarea de la gazdă funcționează așa cum ar trebui:

ping6 -c 4 2001:19f0:6c01:2033:8000::2

PING6(56=40+8+8 octeți) 2001:19f0:6c01:2033:8000::1 --> 2001:19f0:6c01:2033:8000::2
16 octeți din 2001:19f0:6c01:2033:8000::2, icmp_seq=0 hlim=64 time=0,077 ms
16 octeți din 2001:19f0:6c01:2033:8000::2, icmp_seq=1 hlim=64 time=0,062 ms
16 octeți din 2001:19f0:6c01:2033:8000::2, icmp_seq=2 hlim=64 time=0,080 ms
16 octeți din 2001:19f0:6c01:2033:8000::2, icmp_seq=3 hlim=64 time=0,062 ms
--- 2001:19f0:6c01:2033:8000::2 ping6 statistici ---
4 pachete transmise, 4 pachete primite, 0,0% pierdere de pachete
dus-întors min/avg/max/std-dev = 0,062/0,070/0,080/0,008 ms

Ping gazda din închisoare funcționează și așa cum ar trebui:

doas jexec svcfw ping6 -c 4 2001:19f0:6c01:2033:8000::1

PING6(56=40+8+8 octeți) 2001:19f0:6c01:2033:8000::2 --> 2001:19f0:6c01:2033:8000::1
16 octeți din 2001:19f0:6c01:2033:8000::1, icmp_seq=0 hlim=64 time=0,068 ms
16 octeți din 2001:19f0:6c01:2033:8000::1, icmp_seq=1 hlim=64 time=0,064 ms
16 octeți din 2001:19f0:6c01:2033:8000::1, icmp_seq=2 hlim=64 time=0,059 ms
16 octeți din 2001:19f0:6c01:2033:8000::1, icmp_seq=3 hlim=64 time=0,060 ms
--- 2001:19f0:6c01:2033:8000::1 statistici ping6 ---
4 pachete transmise, 4 pachete primite, 0,0% pierdere de pachete
dus-întors min/avg/max/std-dev = 0,059/0,063/0,068/0,004 ms

Configurația perechii pe partea gazdă conectată la pod:

ifconfig epair0a

epair0a: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metrica 0 mtu 1500
    opțiuni=8<VLAN_MTU>
    eter 02:a8:b4:85:57:0a
    inet 10.22.0.1 netmask 0xffff0000 difuzare 10.22.255.255
    inet6 fe80::a8:b4ff:fe85:570a%epair0a prefixlen 64 scopeid 0x5
    inet6 2001:19f0:6c01:2033:8000::1 prefixlen 65
    grupuri: epair
    media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
    stare: activ
    nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

De obicei, pf face NAT pentru IPv4. În prezent, am dezactivat pf, astfel încât pf să nu ruleze în timp ce încerc să fac IPv6 global să funcționeze pentru închisori.

Gazda este configurată să direcționeze traficul IPv6, cf /etc/rc.conf pe care le-am inclus mai devreme în acest mesaj.

Iată ce spune închisoarea despre ruta către o adresă IPv6 de pe internet:

doas jexec svcfw route -6 get 2a00:1450:400f:802::200e

   ruta către: 2a00:1450:400f:802::200e
destinație: implicit
       masca: implicit
    gateway: 2001:19f0:6c01:2033:8000::1
        fib: 0
  interfață: bridge0
      steaguri: <SUS,GATEWAY,DONE,STATIC>
 recvpipe sendpipe ssthresh rtt,msec mtu weight expire
       0 0 0 0 1500 1 0

Ar trebui trimis la pod0, arata bine.

Iată ce îmi spune gazda despre rutele pentru google.com și, respectiv, pentru închisoare:

ruta -6 obțineți google.com

   ruta către: fra24s01-in-x0e.1e100.net
destinație: implicit
       masca: implicit
    gateway: fe80::fc00:3ff:fe7a:2ca1%vtnet0
        fib: 0
  interfață: vtnet0
      steaguri: <SUS,GATEWAY,DONE,STATIC>
 recvpipe sendpipe ssthresh rtt,msec mtu weight expire
       0 0 0 0 1500 1 0

ruta -6 obține 2001:19f0:6c01:2033::2

   ruta către: 2001:19f0:6c01:2033::2
destinație: 2001:19f0:6c01:2033::2
        fib: 0
  interfata: lo0
      steaguri: <UP,HOST,DONE,STATIC,PINNED>
 recvpipe sendpipe ssthresh rtt,msec mtu weight expire
       0 0 0 0 16384 1 0

Arata bine in mare parte. Nu știu de ce din urmă rută spune interfața loopback lo0 în loc de interfața epair epair0a. Este aceasta o problemă? Sau altceva provoacă problema?

Problema este că nu pot ajunge la Internetul public prin IPv6 din închisoarea mea, chiar dacă rutarea IPv6 pe gazdă este activată și firewall-ul gazdei (pf) este dezactivat, iar gazda poate vorbi cu Internetul prin IPv6 foarte bine și sunt folosind adrese din /64 alocat. (Atribuirea mai multor adrese de la /64 la gazdă funcționează bine.)

Când încerc chiar să ping ceva pe Internet prin IPv6 care a funcționat bine de la gazdă, nu funcționează din închisoare:

doas jexec svcfw ping6 -c 4 2a00:1450:400f:802::200e

PING6(56=40+8+8 octeți) 2001:19f0:6c01:2033:8000::2 --> 2a00:1450:400f:802::200e
--- 2a00:1450:400f:802::200e ping6 statistics ---
4 pachete transmise, 0 pachete primite, 100,0% pierdere de pachete

Nu merge.

Ce îmi lipsește? ce fac greșit? Se întâmplă la asta de ore întregi.

dinoex avatar
drapel in
Routerul dvs. implicit de la vtnet0 are nevoie de o rută către gazda dvs. pentru /65 neconectat, altfel pachetele ies, dar răspunsurile nu revin. folosește tracerour6 din închisoare, așa că vezi cât de departe funcționează configurarea.

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.