Access the Internet Through a Border Router - Round 2

424 views
Skip to first unread message

Mark Sohm

unread,
Nov 1, 2018, 2:24:34 PM11/1/18
to openthread-users
Hi all,

Due to problems trying to get external Internet access through the Border Router working with Android things (my other thread) I decided to remove AT from my configuration.  I am now testing with.

My new configuration:

2 Raspberry Pi 3B+ devices running "RaspPi-Thread-Border-Router-Demo" downloaded from here.  
2 Nordic Semiconductor nRF52840 running the pre build NCP firmware from here.  

To the best of my knowledge, it looks like the demo image was created following the OpenThread Border router tutorial.

I then created a Thread network on "device A" using the WebGUI.  I joined that Thread network from "device B".  Both devices have an Ethernet connection to a network with private IPv4 addresses and no IPv6 support with an Internet connection.

Device A is able to ping the local mesh address of Device B. - Good
Device B is able to ping the local mesh address of Device A. - Also Good

Both devices are unable to ping external IPv6 addresses.

ping6 64:ff9b::808:808
PING 64:ff9b::808:808(64:ff9b::808:808) 56 data bytes
--- 64:ff9b::808:808 ping statistics ---
41 packets transmitted, 0 received, 100% packet loss, time 41627ms

Another ping, this time specifying the NCP interface.

ping6 -I wpan0 64:ff9b::808:808
connect: Network is unreachable

Tried using the nat64 interface but that doesn't work either.

ping6 -I nat64 64:ff9b::808:808
PING 64:ff9b::808:808(64:ff9b::808:808) from fdaa:bb:1::1 nat64: 56 data bytes
--- 64:ff9b::808:808 ping statistics ---
17 packets transmitted, 0 received, 100% packet loss, time 16605ms

Both devices are able to ping 8.8.8.8 (using their Ethernet connection).
ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=123 time=6.33 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=123 time=6.19 ms

I have attempted this from my work network and then moved everything home to my personal network in case something was blocking this at work, but have the same results in both locations.

What is the missing step to allow a device within the thread network to connect through the Border Router and get to the Internet?  This is similar behaviour to when I had the Android Things device attempting to connect to the Internet through the Border Router, so it doesn't look like AT was the culprit.

My assumption in all of this is that devices within the Thread Network should be able to seamlessly access public Internet resources with the route provided by the Border Router.  Is that true or did I completely misunderstand the Border Routers role?

Device A Diagnostics:

sudo wpanctl status
wpan0 => [
        "NCP:State" => "associated"
        "Daemon:Enabled" => true
        "NCP:Version" => "OPENTHREAD/20170716-00798-g0c07c53c; NRF52840; Aug 13 2018 14:22:45"
        "Daemon:Version" => "0.08.00d (; Aug 14 2018 17:56:38)"
        "Config:NCP:DriverName" => "spinel"
        "NCP:HardwareAddress" => [5CC18D1B4C4E86C5]
        "NCP:Channel" => 15
        "Network:NodeType" => "leader"
        "Network:Name" => "OpenThreadDemo2"
        "Network:XPANID" => 0x1111111122222222
        "Network:PANID" => 0x1234
        "IPv6:LinkLocalAddress" => "fe80::bc3e:ed5e:f327:8cea"
        "IPv6:MeshLocalAddress" => "fd11:1111:1122:0:adac:9549:9a68:ddc5"
        "IPv6:MeshLocalPrefix" => "fd11:1111:1122::/64"
        "com.nestlabs.internal:Network:AllowingJoin" => false
]

ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.137  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::ba27:ebff:fe67:e924  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:67:e9:24  txqueuelen 1000  (Ethernet)
        RX packets 8676  bytes 1106863 (1.0 MiB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 3790  bytes 3495751 (3.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 292  bytes 26079 (25.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 292  bytes 26079 (25.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

nat64: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 192.168.255.1  netmask 255.255.255.255  destination 192.168.255.1
        inet6 fe80::4bfe:5423:70a8:b9fb  prefixlen 64  scopeid 0x20<link>
        inet6 fdaa:bb:1::1  prefixlen 128  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 123  bytes 10332 (10.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 127  bytes 13096 (12.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.42.0.1  netmask 255.255.255.0  broadcast 10.42.0.255
        inet6 fe80::ba27:ebff:fe32:bc71  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:32:bc:71  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 3  overruns 0  frame 0
        TX packets 48  bytes 10088 (9.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wpan0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
        inet6 fe80::46db:a7e3:573b:43e4  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::bc3e:ed5e:f327:8cea  prefixlen 64  scopeid 0x20<link>
        inet6 fd11:1111:1122:0:adac:9549:9a68:ddc5  prefixlen 64  scopeid 0x0<global>
        inet6 fd11:22::bc3e:ed5e:f327:8cea  prefixlen 64  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 7  bytes 728 (728.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22  bytes 2124 (2.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Device B Diagnostics:

sudo wpanctl status
wpan0 => [
        "NCP:State" => "associated"
        "Daemon:Enabled" => true
        "NCP:Version" => "OPENTHREAD/20170716-00798-g0c07c53c; NRF52840; Aug 13 2018 14:22:45"
        "Daemon:Version" => "0.08.00d (; Aug 14 2018 17:56:38)"
        "Config:NCP:DriverName" => "spinel"
        "NCP:HardwareAddress" => [C0B33598380CD4CC]
        "NCP:Channel" => 15
        "Network:NodeType" => "router"
        "Network:Name" => "OpenThreadDemo2"
        "Network:XPANID" => 0x1111111122222222
        "Network:PANID" => 0x1234
        "IPv6:LinkLocalAddress" => "fe80::8c01:6277:584d:69f7"
        "IPv6:MeshLocalAddress" => "fd11:1111:1122:0:f113:3aaf:d44a:b16f"
        "IPv6:MeshLocalPrefix" => "fd11:1111:1122::/64"
        "com.nestlabs.internal:Network:AllowingJoin" => false
]

ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.195  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::ba27:ebff:fe58:4270  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:58:42:70  txqueuelen 1000  (Ethernet)
        RX packets 8011  bytes 926774 (905.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1104  bytes 114990 (112.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 323  bytes 28748 (28.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 323  bytes 28748 (28.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

nat64: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 192.168.255.1  netmask 255.255.255.255  destination 192.168.255.1
        inet6 fdaa:bb:1::1  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::4734:de45:4c95:d63  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 75  bytes 6300 (6.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 79  bytes 8104 (7.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.42.0.1  netmask 255.255.255.0  broadcast 10.42.0.255
        inet6 fe80::ba27:ebff:fe0d:1725  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:0d:17:25  txqueuelen 1000  (Ethernet)
        RX packets 5  bytes 490 (490.0 B)
        RX errors 0  dropped 3  overruns 0  frame 0
        TX packets 43  bytes 7062 (6.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wpan0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
        inet6 fe80::8c01:6277:584d:69f7  prefixlen 64  scopeid 0x20<link>
        inet6 fd11:22::8c01:6277:584d:69f7  prefixlen 64  scopeid 0x0<global>
        inet6 fd11:1111:1122:0:f113:3aaf:d44a:b16f  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::8d3d:6795:7a97:d72d  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 7  bytes 728 (728.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19  bytes 1836 (1.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Jonathan Hui

unread,
Nov 9, 2018, 5:56:49 PM11/9/18
to Mark Sohm, openthre...@googlegroups.com
The standard OTBR install configures NAT64 as a border router. For your use case, you want to disable NAT64 functionality on one of the devices.

If you perform `ip -6 route show`, you'll see an entry for `64:ff9b::/96` via the nat64 interface. What you want to do is change that route to the wpan0 interface.

To ping 8.8.8.8 over the Thread network, try this:
  1. sudo ip -6 route del 64:ff9b::/96
  2. sudo ip -6 route add 64:ff9b::/96 dev wpan0
  1. ping6 64:ff9b::808:808
    Hope that helps.

    --
    Jonathan Hui

    --
    You received this message because you are subscribed to the Google Groups "openthread-users" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to openthread-use...@googlegroups.com.
    To post to this group, send email to openthre...@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/c184868f-f10b-42ab-9aaa-54c2575e148a%40googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.
    Reply all
    Reply to author
    Forward
    0 new messages