FreeBSD Static Routing Configuration

Posted on in Categories , , last updated February 3, 2008

Q. How do I configure FreeBSD for static routing? I’d like to set default route to 60.1.2.3 and static route for network 192.168.1.0/24 using 192.168.1.254 router. How do make configuration persistence?

A. You can use FreeBSD route command to setup a default route / gateway. You need to edit /etc/rc.conf configuration file to setup static and default routing.

FreeBSD Static Routing Configuration

Open /etc/rc.conf file using a text editor:
# vi /etc/rc.conf
Set default router IP to 60.1.2.3:
defaultrouter="60.1.2.3"
Create static routing for lan network 192.168.1.0/24, append following two lines:
static_routes="lan"
route_lan="-net 192.168.1.0/24 192.168.1.254"

Save and close the file. Where,

  • static_routes=”lan” : Set to the list of static routes that are to be addedat system boot time.
  • route_lan=”-net 192.168.1.0/24 192.168.1.254″ : Specify roting network and router IP address
  • defaultrouter=”60.1.2.3″ : Set a default route to this host name or IP address. It is recommended that you use an IP address.

Restart FreeBSD networking service to update routing information:
# /etc/rc.d/netif restart
To view routing table, enter:
# netstat -r
# netstat -rn

How do I add multiple static routes?

For each whitespace (blank space) separated element in the value, a route_ variable is assumed to exist whose contents will later be
passed to a route add operation at boot time. For example, setup static routing as follows:

networkrouter IP
lan (192.168.1.0/24)192.168.1.254
mumoffice (10.0.0.0/8)10.30.110.5
foo 169.254.1.1via loopback (lo0)

Add following to /etc/rc.conf
static_routes="lan mumoffice foo"
route_lan="-net 192.168.1.0/24 192.168.1.254"
route_mumoffice="-net 10.0.0.0/8 10.30.110.5"
route_foo="-host 169.254.1.1 -iface lo0"

FreeBSD Multicast Roting Configuration

Multicast routing requires that support be compiled into the kernel with the following option:
options MROUTING
In addition, the multicast routing daemon, mrouted must be installed and configured to set up tunnels and DVMRP via /etc/mrouted.conf. See mrouted page at offical FreeBSD project page for more information.

Further readings:

  • See man pages – mrouted, router and rc.conf

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

14 comment

  1. Note: Using “/etc/rc.d/netif restart” over a remote connection can be a bad idea. It’ll tear down all of your interfaces so you will lose your connection. Things such as ppp may get confused, leaving you unable to reconnect.

  2. I have set up the BSD routing so many time it is a joke but when I ping google.le it still tells me:
    ping: cannot resolve google.ie: Host name lookup failure
    So can some one please show me what to do?
    Thanks in advance, SEanS

  3. may be you not input dns corectly
    please input primary &secondary DNS

    #primary DNS
    nameserver=xxx.xxx.xxx.xxx
    #secondary DNS
    nameserver=xxx.xxx.xxx.xxx

    Good luck

  4. Him

    I have two nic card.
    de0 public ip address
    r10 private ip address
    when I enter de0 first i did the host and then gateway and the ip4 public aand subnett
    BUT when I try to enter the private ip on r10 I see the previous confguration I did with de0
    Please advise how to enter r10 the private ip address. Please show me an example how to make it work?

    Thanks, B

  5. I have two nic card.
    de0 public ip address
    r10 private ip address
    when I enter de0 first i did the host and then gateway and the ip4 public aand subnett
    BUT when I try to enter the private ip on r10 I see the previous confguration I did with de0
    Please advise how to enter r10 the private ip address. Please show me an example how to make it work?

    Thanks, B

  6. You should also apply default to your list of static routes.

    static_routes=”lan default”
    route_lan=”-net 192.168.1.0/24 192.168.4.1″

    defaultrouter=”aaa.bbb.215.185″

  7. Hi, everyone.

    can i ask some technical question, i have a setup lucent IP telephony i want to connect to the abudhabi using ip telephony also it is posible use freebsd as my firewall?

    Thank you.

    1. Danial

      Tons of thx man, you’re the man!!! =D
      I spent hours trying to solve this problem and this command worked like a charm to me =D

      now freebsd can resolve names =D

      thx thx thx

Leave a Comment