Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am testing BIRD to put into production to replace several VPN appliances I am using to route to my AWS site. I've never used BIRD before so please forgive ignorance/ If I put a test windows machine behind this routing server I am able to route to my amazon nets and my other networks locally, however I cannot route to the internet.

I can see in my BIRD routing tables an entry for

bird> show route          via 204.244.x.x on eth1 [kernel1 15:03] * (10)    dev eth0 [static1 15:07] ! (200)   via 204.244.x.x on eth1 [R1 15:03 from] * (100/?) [AS7224i]     dev eth0 [static1 15:07] ! (200)

Would this be causing issues with routing out to the internet from a server in the network that is using the router as its default gateway? If so how can I change the routing so that BIRD doesn't try to route internet traffic and only traffic for the internal networks?

Below is my configurations:

Client machine: IP gateway

BIRD configuration:

# Configure logging
log syslog all;
log "/var/log/bird.log" all;
log stderr all;

# Override router ID
#router id;

function avoid_martians()
prefix set martians;
        martians = [,,,,{25,32},{0,7} ];

        # Avoid RFC1918 networks
        if net ~ martians then return false;
        return true;

function avoid_crappy_prefixes()
        if net.len < 8 then return false;
        if net.len > 24 then return false;
        return true;

filter bgp_out
        if net = then accept;
        else reject;

filter bgp_in {
        if avoid_martians() && avoid_crappy_prefixes() then accept;
        else reject;

# Sync bird routing table with kernel
protocol kernel {
        scan time 20;
        export all;

# Include device route (warning, a device route is a /32)
protocol device {
        scan time 10;

protocol static {
        route via "eth0";
        route via "eth0";

protocol bgp R1 {
        local as 65200;
        neighbor as 65100;
        import filter bgp_in;
        export filter bgp_out;

Router interfaces configuration

# The loopback network interface
auto lo
iface lo inet loopback

# Internal Network
auto eth0
iface eth0 inet static

# External Network
auto eth1
iface eth1 inet static
        address 204.244.x.x
        gateway 204.244.x.y

# BGP Router IP
auto eth1:1
iface eth1:1 inet static

# DAG Network IP
auto eth0:1
iface eth0:1 inet static

# Test network IP
auto eth0:2
iface eth0:2 inet static
share|improve this question
I should also mention that IP forwarding is set root@r2:~# cat /proc/sys/net/ipv4/ip_forward 1 – bakesale Oct 16 '13 at 22:41
I am a bit confused about how you think BIRD will replace VPNs. I really don't understand what you are trying to actually do here. Can you create a diagram or something describing how your networks and how they should interlink? – Zoredache Oct 16 '13 at 23:41
Sorry perhaps I should be more clear, the BIRD routing is actually using a VPN with Racoon to get to its neighbour. My hope is to replace the three VPNs we are currently using for various routes and networks with one that uses BIRD. The reason why we want to use BGP as we expect to grow the environment over the next year or so and find it is easier to add routes with BGP. – bakesale Oct 16 '13 at 23:46

I've managed to resolve my problem. The issue here was a NAT one. The router was passing through the traffic to the internet not on the public IP of the router but as the internal IP of the machine which is obviously why it wouldnt work. By adding NAT rules for the network I resolved the problem.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.