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.
- Create a directory named "addroute" under /System/Library/StartupItems/ with sudo privileges.
- 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"
# 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
Thanks! This was exactly what I was looking for.
ReplyDeletePerfect:) i'll try it later. Hope i get it to work...
ReplyDeletehi...Im student from Informatics engineering nice article,
ReplyDeletethanks for sharing :)
Hi,
ReplyDeleteThanks 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!