BGP strict bind socket error

Ondrej Zajicek santiago at crfreenet.org
Sun Jan 9 03:41:50 CET 2022


On Wed, Dec 29, 2021 at 06:11:32PM +0100, Alexander Zubkov wrote:
> Yes, probably it is ok to use it by default, at least in our case we
> use it always-on (as in attached patch). Only in this case it may be
> better to lower the log level for it then for the cases when it does
> not work.
> With default on there may be cases when someone will be surprised to
> see the bird listening on nonexistent address in netstat. And may be
> someone has some sort of security concerns with it, then please speak
> now or forever hold your peace. :)

Thanks, merged (the first patch). After all, i make it 'free bind' BGP
option, disabled by default [*], applying SKF_FREEBIND to the listening
socket. But your second patch enabled SKF_FREEBIND for both listening and
active socket, i see reasons for listening one, but why to do it for
the active socket (in bgp_connect())?

[*] commit 60e9def9ef7b5d16f868b0fb4ab1192d59fd7541


> I looked a bit about the FreeBSD, but there are different options for
> it and it can probably be disabled with sysctl there. So I thought it
> would be better if some people with more FreeBSD (or other *BSD)
> experience updated this part later.

Yes, after some research it seems that it is not an equivalent option.


> diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c
> index e4d754b1..5d985e25 100644
> --- a/proto/bgp/bgp.c
> +++ b/proto/bgp/bgp.c
> @@ -180,7 +180,7 @@ bgp_open(struct bgp_proto *p)
>    sk->sport = port;
>    sk->iface = ifa;
>    sk->vrf = p->p.vrf;
> -  sk->flags = 0;
> +  sk->flags = SKF_FREEBIND;
>    sk->tos = IP_PREC_INTERNET_CONTROL;
>    sk->rbsize = BGP_RX_BUFFER_SIZE;
>    sk->tbsize = BGP_TX_BUFFER_SIZE;
> @@ -1117,6 +1117,7 @@ bgp_connect(struct bgp_proto *p)	/* Enter Connect state and start establishing c
>    s->dport = p->cf->remote_port;
>    s->iface = p->neigh ? p->neigh->iface : NULL;
>    s->vrf = p->p.vrf;
> +  s->flags = SKF_FREEBIND;
>    s->ttl = p->cf->ttl_security ? 255 : hops;
>    s->rbsize = p->cf->enable_extended_messages ? BGP_RX_BUFFER_EXT_SIZE : BGP_RX_BUFFER_SIZE;
>    s->tbsize = p->cf->enable_extended_messages ? BGP_TX_BUFFER_EXT_SIZE : BGP_TX_BUFFER_SIZE;


-- 
Elen sila lumenn' omentielvo

Ondrej 'Santiago' Zajicek (email: santiago at crfreenet.org)
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
"To err is human -- to blame it on a computer is even more so."


More information about the Bird-users mailing list