New to routing: radv Network not found?
Hi all, I installed bird2 (Debian stock) and configured radv, following the documented example. When bird it started, it said: Apr 24 12:36:55 31 north bird: static1: Channel ipv6 connected to table radv_routes Apr 24 12:36:55 31 north bird: static1: Initializing Apr 24 12:36:55 31 north bird: radv1: Channel ipv6 connected to table radv_routes Apr 24 12:36:55 31 north bird: radv1: Initializing Apr 24 12:36:55 31 north bird: static1: Starting Apr 24 12:36:55 31 north bird: static1: State changed to up Apr 24 12:36:55 31 north bird: radv1: Starting Apr 24 12:36:55 31 north bird: radv1: State changed to up Apr 24 12:36:55 30 north bird: Started Apr 24 12:36:55 31 north bird: radv1 < interface eth2r created Apr 24 12:36:55 31 north bird: radv1 < interface ppp0 created No more logging. After some hours I get this: 541-north:bird# birdc show route for 2a02:29e1:300:e922::2 BIRD 2.0.7 ready. Network not found What does it mean? I configured static routes in the kernel. Perhaps I should only configure them in bird. 542-north:bird# ip route get 2a02:29e1:300:e922::2 2a02:29e1:300:e922::2 from :: dev eth2r proto kernel src 2a02:29e1:300:e922::1 metric 256 pref medium My ISP assigned to me 2a02:29e1:300:e900/56. I have a few addresses assigned locally, and 2a02:29e1:300:e922::1 to the lan interface (eth2r), reserving that /64 for lan hosts. A neighboring PC has 2a02:29e1:300:e922::2/64. External routing doesn't work, but this is another question (also asked on stackexchange: https://unix.stackexchange.com/questions/742826/ipv6-over-pppoe) There must be something wrong in the config, which I don't know how to fix. I paste it below. What did I get wrong? TIA Ale -----8<----- # This is a basic configuration file, which contains boilerplate options and # some basic examples. It allows the BIRD daemon to start but will not cause # anything else to happen. # # Please refer to the BIRD User's Guide documentation, which is also available # online at http://bird.network.cz/ in HTML format, for more information on # configuring BIRD and adding routing protocols. # Configure logging log syslog all; # Set router ID. It is a unique identification of your router, usually one of # IPv4 addresses of the router. It is recommended to configure it explicitly. router id 185.8.198.188; # Turn on global debugging of all protocols (all messages or just selected classes) debug protocols all; debug protocols { interfaces, states }; ipv6 table radv_routes; # Manually configured routes go here protocol static { ipv6 { table radv_routes; }; route 2a02:29e1:300:e922::/64 via "eth2r"; route 2a02:29e1:300:e900::/56 unreachable; route ::0/0 via "ppp0"; } protocol radv { propagate routes yes; # Propagate the routes from the radv_routes table ipv6 { table radv_routes; export all; }; interface "ppp0" { prefix ::/0 { autonomous off; # So do not autoconfigure any IP }; }; interface "eth2r"; # No need for any other options } ----->8-----
Hello! It looks like you are missing "protocol device {}" which you need for BIRD to actually know about the interfaces and assigned addresses. Maria On 24 April 2023 21:01:31 EEST, Alessandro Vesely <vesely@tana.it> wrote:
Hi all,
I installed bird2 (Debian stock) and configured radv, following the documented example.
When bird it started, it said: Apr 24 12:36:55 31 north bird: static1: Channel ipv6 connected to table radv_routes Apr 24 12:36:55 31 north bird: static1: Initializing Apr 24 12:36:55 31 north bird: radv1: Channel ipv6 connected to table radv_routes Apr 24 12:36:55 31 north bird: radv1: Initializing Apr 24 12:36:55 31 north bird: static1: Starting Apr 24 12:36:55 31 north bird: static1: State changed to up Apr 24 12:36:55 31 north bird: radv1: Starting Apr 24 12:36:55 31 north bird: radv1: State changed to up Apr 24 12:36:55 30 north bird: Started Apr 24 12:36:55 31 north bird: radv1 < interface eth2r created Apr 24 12:36:55 31 north bird: radv1 < interface ppp0 created
No more logging. After some hours I get this: 541-north:bird# birdc show route for 2a02:29e1:300:e922::2 BIRD 2.0.7 ready. Network not found
What does it mean? I configured static routes in the kernel. Perhaps I should only configure them in bird. 542-north:bird# ip route get 2a02:29e1:300:e922::2 2a02:29e1:300:e922::2 from :: dev eth2r proto kernel src 2a02:29e1:300:e922::1 metric 256 pref medium
My ISP assigned to me 2a02:29e1:300:e900/56. I have a few addresses assigned locally, and 2a02:29e1:300:e922::1 to the lan interface (eth2r), reserving that /64 for lan hosts. A neighboring PC has 2a02:29e1:300:e922::2/64.
External routing doesn't work, but this is another question (also asked on stackexchange: https://unix.stackexchange.com/questions/742826/ipv6-over-pppoe)
There must be something wrong in the config, which I don't know how to fix. I paste it below. What did I get wrong?
TIA Ale
-----8<----- # This is a basic configuration file, which contains boilerplate options and # some basic examples. It allows the BIRD daemon to start but will not cause # anything else to happen. # # Please refer to the BIRD User's Guide documentation, which is also available # online at http://bird.network.cz/ in HTML format, for more information on # configuring BIRD and adding routing protocols.
# Configure logging log syslog all;
# Set router ID. It is a unique identification of your router, usually one of # IPv4 addresses of the router. It is recommended to configure it explicitly. router id 185.8.198.188;
# Turn on global debugging of all protocols (all messages or just selected classes) debug protocols all; debug protocols { interfaces, states };
ipv6 table radv_routes; # Manually configured routes go here
protocol static { ipv6 { table radv_routes; };
route 2a02:29e1:300:e922::/64 via "eth2r"; route 2a02:29e1:300:e900::/56 unreachable; route ::0/0 via "ppp0"; }
protocol radv { propagate routes yes; # Propagate the routes from the radv_routes table ipv6 { table radv_routes; export all; };
interface "ppp0" { prefix ::/0 { autonomous off; # So do not autoconfigure any IP }; };
interface "eth2r"; # No need for any other options } ----->8-----
Hi, In an attempt to limit it to only two interfaces, I added this: protocol device { interface "eth2r", "ppp0"; } Nevertheless, "birdc show interface" displays _all_ interfaces. But it still says Network not found. So I also added a kernel stanza: protocol kernel { learn; persist; ipv6 {export all;}; } Now it shows routes! I have: 588-north:bird# birdc show route BIRD 2.0.7 ready. Table master6: ::/0 unicast [kernel1 12:10:08.587] (10) dev ppp0 2a02:29e1:300:e922::/64 unicast [kernel1 12:10:08.587] (10) dev eth2r Thank you! However, I thought that with static having route 2a02:29e1:300:e900::/56 unreachable; After learning the local interface addresses, bird would gather that (only) the addresses not configured are unreachable. It says: 589-north:bird# birdc show route for 2a02:29e1:300:e918::5 BIRD 2.0.7 ready. Table master6: ::/0 unicast [kernel1 12:10:08.587] (10) dev ppp0 That IP should be unreachable. How do I tell it that? Best Ale On Mon 24/Apr/2023 20:23:32 +0200 Maria Matejka via Bird-users wrote:
Hello!
It looks like you are missing "protocol device {}" which you need for BIRD to actually know about the interfaces and assigned addresses.
Maria
On 24 April 2023 21:01:31 EEST, Alessandro Vesely <vesely@tana.it> wrote:
Hi all,
I installed bird2 (Debian stock) and configured radv, following the documented example.
When bird it started, it said: Apr 24 12:36:55 31 north bird: static1: Channel ipv6 connected to table radv_routes Apr 24 12:36:55 31 north bird: static1: Initializing Apr 24 12:36:55 31 north bird: radv1: Channel ipv6 connected to table radv_routes Apr 24 12:36:55 31 north bird: radv1: Initializing Apr 24 12:36:55 31 north bird: static1: Starting Apr 24 12:36:55 31 north bird: static1: State changed to up Apr 24 12:36:55 31 north bird: radv1: Starting Apr 24 12:36:55 31 north bird: radv1: State changed to up Apr 24 12:36:55 30 north bird: Started Apr 24 12:36:55 31 north bird: radv1 < interface eth2r created Apr 24 12:36:55 31 north bird: radv1 < interface ppp0 created
No more logging. After some hours I get this: 541-north:bird# birdc show route for 2a02:29e1:300:e922::2 BIRD 2.0.7 ready. Network not found
What does it mean? I configured static routes in the kernel. Perhaps I should only configure them in bird. 542-north:bird# ip route get 2a02:29e1:300:e922::2 2a02:29e1:300:e922::2 from :: dev eth2r proto kernel src 2a02:29e1:300:e922::1 metric 256 pref medium
My ISP assigned to me 2a02:29e1:300:e900/56. I have a few addresses assigned locally, and 2a02:29e1:300:e922::1 to the lan interface (eth2r), reserving that /64 for lan hosts. A neighboring PC has 2a02:29e1:300:e922::2/64.
External routing doesn't work, but this is another question (also asked on stackexchange: https://unix.stackexchange.com/questions/742826/ipv6-over-pppoe)
There must be something wrong in the config, which I don't know how to fix. I paste it below. What did I get wrong?
TIA Ale
-----8<----- # This is a basic configuration file, which contains boilerplate options and # some basic examples. It allows the BIRD daemon to start but will not cause # anything else to happen. # # Please refer to the BIRD User's Guide documentation, which is also available # online at http://bird.network.cz/ in HTML format, for more information on # configuring BIRD and adding routing protocols.
# Configure logging log syslog all;
# Set router ID. It is a unique identification of your router, usually one of # IPv4 addresses of the router. It is recommended to configure it explicitly. router id 185.8.198.188;
# Turn on global debugging of all protocols (all messages or just selected classes) debug protocols all; debug protocols { interfaces, states };
ipv6 table radv_routes; # Manually configured routes go here
protocol static { ipv6 { table radv_routes; };
route 2a02:29e1:300:e922::/64 via "eth2r"; route 2a02:29e1:300:e900::/56 unreachable; route ::0/0 via "ppp0"; }
protocol radv { propagate routes yes; # Propagate the routes from the radv_routes table ipv6 { table radv_routes; export all; };
interface "ppp0" { prefix ::/0 { autonomous off; # So do not autoconfigure any IP }; };
interface "eth2r"; # No need for any other options } ----->8-----
On Tue, Apr 25, 2023, at 06:37, Alessandro Vesely wrote:
Now it shows routes! I have: 588-north:bird# birdc show route BIRD 2.0.7 ready. Table master6: ::/0 unicast [kernel1 12:10:08.587] (10) dev ppp0 2a02:29e1:300:e922::/64 unicast [kernel1 12:10:08.587] (10) dev eth2r
Thank you!
This shows the default IPv6 route table 'master6', because that's where the 'kernel' protocol places routes it exports unless you tell it otherwise.
However, I thought that with static having
route 2a02:29e1:300:e900::/56 unreachable;
After learning the local interface addresses, bird would gather that (only) the addresses not configured are unreachable. It says:
589-north:bird# birdc show route for 2a02:29e1:300:e918::5 BIRD 2.0.7 ready. Table master6: ::/0 unicast [kernel1 12:10:08.587] (10) dev ppp0
That IP should be unreachable. How do I tell it that?
You put your static routes into a table named 'radv_routes'; if you want to analyze an address against that table, you need to specify it: show route for 2a02:29e1:300:e918::5 table radv_routes Otherwise 'show route' uses the default table 'master6'. If you are only using Bird for the radv protocol, you should probably just let everything default to using the 'master6' table, and make your life simpler. You can remove the 'kernel' protocol completely, change the 'static' protocol and the 'radv' protocol to not specify a table name, and 'show route' will give you the result you are looking for without having to specify a table name.
On Tue 25/Apr/2023 12:49:13 +0200 Kevin P. Fleming wrote:
If you are only using Bird for the radv protocol, you should probably just let everything default to using the 'master6' table, and make your life simpler. You can remove the 'kernel' protocol completely, change the 'static' protocol and the 'radv' protocol to not specify a table name, and 'show route' will give you the result you are looking for without having to specify a table name.
I'm beginning to understand. Can I use table names for policy routing? I don't know what protocol I need. It is a new question. I should know what protocol is using the next hop on ppp0 (default gw). I'm not even sure what IPv6 hosts are out there; traceroute shows nothing. Running traceroute from an external site I find that, wherever the trace starts from, it falls into a loop: 2a00:6d42::1:0:1:36 Aruba S.p.A. (sometimes ???) 2a00:6d42:0:2:5::12 " " 2a02:29e1::a Seflow s.r.l. --> _my ISP_ 2a02:29e0:109:ff00::5 " 2a02:29e0:255::2 " 2001:7f8:c5::a503:1034:1 Samer Abdel-Hafez (sometimes ???) The bottom one, from Amsterdam, points back to Aruba in Italy. One of the three 2a02:29e0/30 should point to me instead of returning "uphill". I guess I should advertise something, but don't know how. nmap finds nothing, but confirms those hosts are up: 597-north:bird# nmap -6 -e ppp0 -Pn -T4 --system-dns 2a02:29e1::a 2a02:29e0:109:ff00::5 2a02:29e0:255::2 Starting Nmap 7.80 ( https://nmap.org ) at 2023-04-25 18:05 CEST Nmap scan report for 2a02:29e1::a Host is up. All 1000 scanned ports on 2a02:29e1::a are filtered Nmap scan report for 2a02:29e0:109:ff00::5 Host is up. All 1000 scanned ports on 2a02:29e0:109:ff00::5 are filtered Nmap scan report for 2a02:29e0:255::2 Host is up. All 1000 scanned ports on 2a02:29e0:255::2 are filtered Nmap done: 3 IP addresses (3 hosts up) scanned in 302.54 seconds What should I scan to find what are they listening to? (Or maybe there are some fe80 hosts I don't see?) My ISP say everything is fine on their side, and if I used an external router such as TP-Link, ZTE, Mikrotik or Fritz!box they have guides, but not for Linux box. What advertisements do those routers run? (The guides talk about DNS and DHCP, which I don't think I need.) A few further details about this question are here: https://unix.stackexchange.com/questions/742826/ipv6-over-pppoe Best Ale
On Tue, Apr 25, 2023, at 12:40, Alessandro Vesely wrote:
I don't know what protocol I need. It is a new question. I should know what protocol is using the next hop on ppp0 (default gw). I'm not even sure what IPv6 hosts are out there; traceroute shows nothing. Running traceroute from an external site I find that, wherever the trace starts from, it falls into a loop:
It might be best to back up a bit here. Can you describe the scenario: what is the network topology, and what requirements are placed on you by any upstream or downstream networks? In addition to those, what are your goals in using Bird? Bird does not actually *route* traffic at all, please keep that in mind. It is a routing table (FIB) manager, with a little bit of extra functionality for IPv6 Router Advertisements and some other bits. It gathers route information from a variety of sources, combines it together in the ways you tell it to, and then publishes some (or all) of it to the destinations you configure. Since it may not even be the right tool for the problem you are trying to solve, it would be helpful if you could describe the problem first. With that information the Bird user community can suggest ways Bird might be applicable, if it is.
On Tue 25/Apr/2023 19:12:13 +0200 Kevin P. Fleming wrote:
On Tue, Apr 25, 2023, at 12:40, Alessandro Vesely wrote:
I don't know what protocol I need. It is a new question. I should know what protocol is using the next hop on ppp0 (default gw). I'm not even sure what IPv6 hosts are out there; traceroute shows nothing. Running traceroute from an external site I find that, wherever the trace starts from, it falls into a loop:
It might be best to back up a bit here. Can you describe the scenario: what is the network topology, and what requirements are placed on you by any upstream or downstream networks? In addition to those, what are your goals in using Bird?
I changed ISP, and they assigned me a /56 of IPv6 addresses. My previous experience with IPv6 was using a tunnel offered by route48 for free. In that case, I just plugged it in and it worked. With my new ISP, I configured a couple of addresses on the interface (ppp0, they use PPPoE) but saw no IPv6 traffic. I opened a ticket at the ISP, they said something wrong on my side. I set up a /64 to use internally, and saw IPv6 works on the internal network. One internal user even managed to synthesize an IPv6 address in that range and connect to the server via WiFi. IPv6 on the lan is not a problem. I tried https://tools.keycdn.com/traceroute, and saw there is a loop. I had seen routing loops before, in IPv4, and they were usually errors in some static table somewhere. My ISP repeated that everything is fine on their side. So I derived I need some routing.
Bird does not actually *route* traffic at all, please keep that in mind. It is a routing table (FIB) manager, with a little bit of extra functionality for IPv6 Router Advertisements and some other bits. It gathers route information from a variety of sources, combines it together in the ways you tell it to, and then publishes some (or all) of it to the destinations you configure.
My understanding of radv is that it finds neighbors by itself. Should I configure any? And can I check what hosts it found?
Since it may not even be the right tool for the problem you are trying to solve, it would be helpful if you could describe the problem first. With that information the Bird user community can suggest ways Bird might be applicable, if it is.
The main problem is that my addresses, e.g. 2a02:29e1:300:e900::1, are not reachable from the wan. Symmetrically, I don't seem to be able to reach any external host on IPv6. The only hint that the interface works at all on IPv6 is that nmap says "Host is up." How can I get some visible reply from those hosts (2a02:29e1::a 2a02:29e0:109:ff00::5 2a02:29e0:255::2)? Best Ale
Hi The ISP-side router needs to know that it must route the /64s to your router. Most of the time this is done via DHCPv6/PD (PD stands for Prefix-Delegation). You won't be able to do this with bird. Router advertisement do not do routing at all. It is just there to auto-configure hosts. Arnaud Houdelette-Langlois Administrateur des infrastructures systèmes et réseaux Normandie Université +33 2 31 56 69 54 Le 26/04/2023 à 11:34, Alessandro Vesely a écrit :
On Tue 25/Apr/2023 19:12:13 +0200 Kevin P. Fleming wrote:
On Tue, Apr 25, 2023, at 12:40, Alessandro Vesely wrote:
I don't know what protocol I need. It is a new question. I should know what protocol is using the next hop on ppp0 (default gw). I'm not even sure what IPv6 hosts are out there; traceroute shows nothing. Running traceroute from an external site I find that, wherever the trace starts from, it falls into a loop:
It might be best to back up a bit here. Can you describe the scenario: what is the network topology, and what requirements are placed on you by any upstream or downstream networks? In addition to those, what are your goals in using Bird?
I changed ISP, and they assigned me a /56 of IPv6 addresses. My previous experience with IPv6 was using a tunnel offered by route48 for free. In that case, I just plugged it in and it worked. With my new ISP, I configured a couple of addresses on the interface (ppp0, they use PPPoE) but saw no IPv6 traffic. I opened a ticket at the ISP, they said something wrong on my side.
I set up a /64 to use internally, and saw IPv6 works on the internal network. One internal user even managed to synthesize an IPv6 address in that range and connect to the server via WiFi. IPv6 on the lan is not a problem.
I tried https://tools.keycdn.com/traceroute, and saw there is a loop. I had seen routing loops before, in IPv4, and they were usually errors in some static table somewhere. My ISP repeated that everything is fine on their side. So I derived I need some routing.
Bird does not actually *route* traffic at all, please keep that in mind. It is a routing table (FIB) manager, with a little bit of extra functionality for IPv6 Router Advertisements and some other bits. It gathers route information from a variety of sources, combines it together in the ways you tell it to, and then publishes some (or all) of it to the destinations you configure.
My understanding of radv is that it finds neighbors by itself. Should I configure any? And can I check what hosts it found?
Since it may not even be the right tool for the problem you are trying to solve, it would be helpful if you could describe the problem first. With that information the Bird user community can suggest ways Bird might be applicable, if it is.
The main problem is that my addresses, e.g. 2a02:29e1:300:e900::1, are not reachable from the wan. Symmetrically, I don't seem to be able to reach any external host on IPv6. The only hint that the interface works at all on IPv6 is that nmap says "Host is up." How can I get some visible reply from those hosts (2a02:29e1::a 2a02:29e0:109:ff00::5 2a02:29e0:255::2)?
Best Ale
Hi, thank you! I thought DHCPv6 was something similar to DHCP. After some browsing, I hardly understand how can they be implemented by the same program. I'll try and work out how to configure a DHCPv6 client which doesn't mess up with DNS and DHCPv4 server... When it works I'll send an answer to https://unix.stackexchange.com/questions/742826/ipv6-over-pppoe (unless someone else replies before me.) Best Ale On Wed 26/Apr/2023 14:47:26 +0200 Arnaud Houdelette-Langlois wrote:
Hi
The ISP-side router needs to know that it must route the /64s to your router.
Most of the time this is done via DHCPv6/PD (PD stands for Prefix-Delegation). You won't be able to do this with bird.
Router advertisement do not do routing at all. It is just there to auto-configure hosts.
Arnaud Houdelette-Langlois Administrateur des infrastructures systèmes et réseaux Normandie Université +33 2 31 56 69 54
Le 26/04/2023 à 11:34, Alessandro Vesely a écrit :
On Tue 25/Apr/2023 19:12:13 +0200 Kevin P. Fleming wrote:
On Tue, Apr 25, 2023, at 12:40, Alessandro Vesely wrote:
I don't know what protocol I need. It is a new question. I should know what protocol is using the next hop on ppp0 (default gw). I'm not even sure what IPv6 hosts are out there; traceroute shows nothing. Running traceroute from an external site I find that, wherever the trace starts from, it falls into a loop:
It might be best to back up a bit here. Can you describe the scenario: what is the network topology, and what requirements are placed on you by any upstream or downstream networks? In addition to those, what are your goals in using Bird?
I changed ISP, and they assigned me a /56 of IPv6 addresses. My previous experience with IPv6 was using a tunnel offered by route48 for free. In that case, I just plugged it in and it worked. With my new ISP, I configured a couple of addresses on the interface (ppp0, they use PPPoE) but saw no IPv6 traffic. I opened a ticket at the ISP, they said something wrong on my side.
I set up a /64 to use internally, and saw IPv6 works on the internal network. One internal user even managed to synthesize an IPv6 address in that range and connect to the server via WiFi. IPv6 on the lan is not a problem.
I tried https://tools.keycdn.com/traceroute, and saw there is a loop. I had seen routing loops before, in IPv4, and they were usually errors in some static table somewhere. My ISP repeated that everything is fine on their side. So I derived I need some routing.
Bird does not actually *route* traffic at all, please keep that in mind. It is a routing table (FIB) manager, with a little bit of extra functionality for IPv6 Router Advertisements and some other bits. It gathers route information from a variety of sources, combines it together in the ways you tell it to, and then publishes some (or all) of it to the destinations you configure.
My understanding of radv is that it finds neighbors by itself. Should I configure any? And can I check what hosts it found?
Since it may not even be the right tool for the problem you are trying to solve, it would be helpful if you could describe the problem first. With that information the Bird user community can suggest ways Bird might be applicable, if it is.
The main problem is that my addresses, e.g. 2a02:29e1:300:e900::1, are not reachable from the wan. Symmetrically, I don't seem to be able to reach any external host on IPv6. The only hint that the interface works at all on IPv6 is that nmap says "Host is up." How can I get some visible reply from those hosts (2a02:29e1::a 2a02:29e0:109:ff00::5 2a02:29e0:255::2)?
Best Ale
participants (4)
-
Alessandro Vesely -
Arnaud Houdelette-Langlois -
Kevin P. Fleming -
Maria Matejka