Howto Setup Linux as router for ppp dial up (PSTN/ISDN) connections

last updated in Categories Linux, Networking, RedHat/Fedora Linux, Ubuntu Linux

This step by step howto will help you to setup Linux as router only in two (2) minutes. I’m assuming that your setup is as follows:


(A) You are using RedHat Linux, FC linux/Debian Linux (this should work with ALL Other distros as well 😀 )

(B) ppp0 is internet interface (connected to Modem for example) and eth0 connected to your internal lan (connected to your HUB/Switch for example)

My Linux  --> eth0
Box      --> ppp0 (comes up when you dial up into ISP)

Step # 1 Turn on ip forwarding in kernel

1) Open linux kernel configuration file:
# vi /etc/sysctl.conf

2) Add/modify following line:
net.ipv4.ip_forward = 1

Step # 2 Restart network
# /etc/init.d/network restart
# service network restart

(Note first dial to ISP using wvdial or similar program )

Step # 3 Setup IP forwarding and Masquerading (to act as router), you need to use NAT option of iptables as follows:
# iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
# iptables --append FORWARD --in-interface eth0 -j ACCEPT

Step # 4 You are done! Test it with ping or dig:
# ping
# dig
# dig

Step # 5 Point all client to your eth0 IP address as Router/Gateway.

Step # 6 Put code described in step # 3 to script and call it from /etc/rc.local

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.


1 comment

  1. Hi
    this configuration is not working for me

    i have USB modem, and eth0
    i am dialing with wvdial, using centos 5.2
    connection is working, i can use internet on the same machine, but i am not able to enable the routing using your post, tried many post but i am not able to manage it

    my ppp0 is having dynamic IP address when ever i connect to the internet
    eth0 is connected to my local lan haivng ip address to

    get me some thing, i am very much stuck
    Thanks in advance

Leave a Comment