Skip to main content

How to add persistent/permanent routes in Mac OS X

Mac OS X looses static routes when it is rebooted. To preserve the static route on mac we would need to create a startup script which adds your static route upon system startup. The following steps will help  in achieving this.

  1. Create a directory named "addroute" under /System/Library/StartupItems/ with sudo privileges.
  2. Under addroute directory create "StartupParameters.plist" with below contents in it
         
  
     3. Now, create addroute shell script under  /System/Library/StartupItems/addroute directory. The addroute script should be like below.
     
#!/bin/sh
# Setting up static routing tables for Mac OS X                 
. /etc/rc.common
syslogger ( ) {   
        printf "%s\n" "$*" >> /var/log/system.log
}  


StartService ()
{
        syslogger $(/bin/date) " : Adding static route to route table"
        syslogger $(sudo /sbin/route add 192.168.1.0/24 172.16.193.100)
        return 0
}

StopService ()
{
        syslogger $(/bin/date) ": Deleting static routes from routing table"
        syslogger $(sudo /sbin/route delete 192.168.1.0/24 172.16.193.100)
        return 0
}

RestartService ()
{
        StopService
        StartService   
        return 0
}

RunService "$1"
   



4. Now change the permission of addroute script to 755 with sudo chmod 755 addroute command.
5. Reboot the system  or Run command "sudo SystemStarter start addroute" to run the startup item script.
6. Run "netstat -rn" command to verify the route is present in route table.

Now Every time you reboot your mac , you will have static route added to route table automatially. If you want to delete the route entry from table then run "sudo SystemStarter stop addroute"


There is also 3rd party application named "RouteSplit" is available to perform above operation. The tool can be downloaded from here

Comments

  1. Thanks! This was exactly what I was looking for.

    ReplyDelete
  2. Perfect:) i'll try it later. Hope i get it to work...

    ReplyDelete
  3. hi...Im student from Informatics engineering nice article,
    thanks for sharing :)

    ReplyDelete
  4. Hi,

    Thanks for the useful post. May I ask how do I call this service and why do you need...
    StopService ()
    {
    syslogger $(/bin/date) ": Deleting static routes from routing table"
    syslogger $(sudo /sbin/route delete 192.168.1.0/24 172.16.193.100)
    return 0
    }

    Thank you!

    ReplyDelete

Post a Comment

Popular posts from this blog

How to find firmware or boot ROM version in Mac OS X

Firmware and boot ROM version of your mac can be found in two ways. Way 1 : 1. From "Apple" menu , choose "About This Mac" menu item. 2. Click " More Info " to open "System Profiler" application. 3. Under Contents -> Select Hardware Tree item. On the right side panel Under hardware overview section, we can see Boot ROM Version and SMC (Firmware) Version. Way 2 : Run the below command in terminal to get boot ROM version and SMC(firmware) version : $ system_profiler SPHardwareDataType | grep -i "Version" | awk -F ':' '{print $1 $2}'

How to extract signing certificates from macOS binary files

Code signing is a macOS security technology that you use to certify that an app was created by you. Once an app is signed, the system can detect any change to the app—whether the change is introduced accidentally or by malicious code. As Apple Developer site says ( click here for more details  on code signing) : code signing allows the operating system to: Ensure that a piece of code has not been altered since it was signed.  The system can detect even the smallest change, whether it was intentional (by a malicious attacker, for example) or accidental (as when a file gets corrupted). When a code signature is intact, the system can be sure the code is as the signer intended. Identify code as coming from a specific source (a developer or signer).  The code signature includes cryptographic information that unambiguously points to a particular author. Determine whether code is trustworthy for a specific purpose.  Among other things, a developer can use a code signature to s

What are the useful nvram settings in macOS ?

The OS X boot arguments are useful for troubleshooting problems with system startup and how the system behaves when running. sudo nvram boot-args="-v" :  This command will set the system to always boot to verbose mode, so we do not need to hold Command + V at system startup. sudo nvram boot-args="-x" :  This will set the system to always boot into Safe Mode. sudo nvram boot-args="-s" :  This command will boot the system into single user mode without needing to hold Command-S at system startup. sudo nvram boot-args="iog=0x0"  :   when you close the display but connect the system to an external monitor and keyboard the system will stay awake. After running this command, when connecting an external monitor, the internal display will be disabled, which can be beneficial in some situations such as those where you are mirroring your desktop but wish to run the external display at a higher resolution than your laptop can run. sudo nvram b