Marketplace:

Buy cheap domains and domain transfer service with free domain hosting features
Affordable domain name hosting and webhosting for small business
Register cheap domain name by cheap-domainregistrar.com 

 

   

IP Forwarding: Home Networks

next up previous contents index

Debian Packages: iptables

Consider a home network of GNU/Linux and MSWindows machines, connected via ethernet. A GNU/Linux machine can connect to the Internet via PPP. We want to provide network access from all machines. We use iptables (for kernel version 2.4).

Suppose Modern (98.9) is the host which will connect to the Internet using PPP. After installing iptables do the following on this host which will serve as the Internet gateway:



  # iptables --flush
  # iptables --table nat --flush
  # iptables --delete-chain
  # iptables --table nat --delete-chain
  # iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
  # iptables --append FORWARD --in-interface eth0 -j ACCEPT


This clears the rules for filtering and then adds a rule to provide the IP forwarding. Now we need to turn it on for the kernel:



  # echo 1 > /proc/sys/net/ipv4/ip_forward


And that's it! This host, Modern (98.9) will now act as a gateway to the Internet for your local machines.

There is some setup needed to have this survive a reboot. One approach is to do this through init.d, as explained in Section 46.2. The first step is to create a script file called /etc/init.d/myfirewall containing:



#! /bin/sh
#
# Set up a firewall for IP Masquerading
#
PATH=/bin:/usr/bin:/sbin:/usr/sbin

case "$1" in
  start)
    echo -n "Starting IP Masquerading: myfirewall"
    iptables --flush
    iptables --table nat --flush
    iptables --delete-chain
    iptables --table nat --delete-chain
    iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
    iptables --append FORWARD --in-interface eth0 -j ACCEPT
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo "."
    ;;
  stop)
    echo -n "Stopping IP Masquerading: myfirewall"
    echo 0 > /proc/sys/net/ipv4/ip_forward
    echo "."
    ;;
  reload)
    echo "Not implemented."
    ;;
  force-reload|restart)
    sh $0 stop
    sh $0 start
    ;;
  *)
    echo "Usage: /etc/init.d/myfirewall {start|stop|restart|force-reload|reload}"
    exit 1
    ;;
esac

exit 0


Then the firewall can be turned on and off with:



  $ wajig start myfirewall
  $ wajig stop myfirewall


To have it started at boot and stopped at shutdown:



  # update-rc.d myfirewall start 40 S . stop 89 0 6 .


This creates the following links:



   /etc/rc0.d/K89myfirewall -> ../init.d/myfirewall
   /etc/rc6.d/K89myfirewall -> ../init.d/myfirewall
   /etc/rcS.d/S40myfirewall -> ../init.d/myfirewall


Another approach is to only turn it on and off as a PPP connection is established. See the scripts in /usr/share/doc/iptables/examples for details.

Now Rose (98.31) and Inco (98.26), machines on the local home network, can have their network interface set up:



iface eth0 inet static
        address 192.168.1.2
        network 192.168.1.0
        netmask 255.255.255.0
        gateway 192.168.1.5             (modern)



next up previous contents index


Copyright (c) 1995-2004

 

      

Marketplace:
Facts: " Humans are the best value in computers. Where else can you get a non-linear computer weighing only about 160 lbs., having a billion binary decision elements, that can be mass-produced by unskilled labour?   "  

Tuesday 22 May 2012 05:41:43 1337665303