Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations derfloh on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Internet connection shareing ?

Status
Not open for further replies.

hotreca

Technical User
Joined
Nov 19, 2002
Messages
25
Location
DE
Can anyone tell me how to configure Internet connection shareing with the following

Main PC -running MS XP Pro 192.168.0.1
Second PC - running MS ME 192.168.0.3
Third PC - running Red HAT 9 (shrike)192.168.0.2
connected with a hub
the internet connection is a DSL
RED HAT has DHCP switched of as I use it a a testing Server (LAMP). My dev tools are on the Main PC the Internet connection is also run from there. Any help would be appreciated
 
This is what I use on a rh8, rh9, and a rh7.2

Its a firewall and router...all has comments in it.
Of course you have to configue the PPOE for yourself and then this should work..more secure than windows too. Or go get yourself a LinkSys router for $50 that supports PPOE.
I have static and no changes are made.


Cut below to the end....
---------------------------------------

#!/bin/sh

#nitial SIMPLE IP Firewall test script for 2.4.x
#
# Author: Oskar Andreasson <blueflux@koffein.net>
# (c) of BoingWorld.com, use at your own risk, do whatever you please with
# it as long as you don't distribute this with due credits to
# BoingWorld.com
#
# Modified by Haim Dimermanas (dudle at linuxroot dot org)
#
# To install under Redhat : ckconfig --add iptables
# To install under Debian : update-rc.d iptables defaults 21

# chkconfig specific parameters follow
# iptables:
# chkconfig: 2345 82 80
# description: starts or stops netfilter rules

###########
# Configuration options, these will speed you up getting this script to
# work with your own setup.
# NOTE : even though I am lucky enough to have a static IP address on my
# interface connected to the Internet, this IP address is never
# mentionned anywhere. This way, if you connect to the Internet
# and receive a dynamic IP, you won't have to change to much stuff.
#
# your LAN's IP range and localhost IP. /24 means to only use the first 24
# bits of the 32 bit IP adress. the same as netmask 255.255.255.0
#

LAN_IP_RANGE=&quot;192.168.1.0/24&quot;
LAN_IP=&quot;192.168.1.111/32&quot;
LAN_BCAST_ADRESS=&quot;192.168.1.255/32&quot;
LOCALHOST_IP=&quot;127.0.0.1/32&quot;
INET_IFACE=&quot;eth0&quot;
LAN_IFACE=&quot;eth1&quot;
IPTABLES=&quot;/sbin/iptables&quot;
ANYWHERE=&quot;0/0&quot;
BROADCAST=&quot;255.255.255.0/32&quot;

case &quot;$1&quot; in
start)

#
# CRITICAL: Enable IP forwarding since it is disabled by default.
#
echo -n &quot;Enabling IP Forwarding ... &quot;
echo &quot;1&quot; > /proc/sys/net/ipv4/ip_forward
echo &quot;done.&quot;

# Dynamic IP users:
#
# If you get your IP address dynamically from SLIP, PPP, or DHCP, enable this
# option. This enables dynamic-ip address hacking in IP MASQ, making the connection
# with Diald and similar programs much easier.
#
#echo -n &quot;Enabling dynamic IP addressing ... &quot;
#echo &quot;1&quot; > /proc/sys/net/ipv4/ip_dynaddr
#echo &quot;done.&quot;

#
# The allowed chain for TCP connections (tcp_allowed)
#
# This chain will be utilised if someone tries to connect to an allowed
# port from the internet. If they are opening the connection, or if it's
# already established we ACCEPT the packages, if not we fuck them. This is
# where the state matching is performed also, we allow ESTABLISHED and
# RELATED packets.
echo -n &quot;Creating tcp_allowed chain ... &quot;
$IPTABLES -N tcp_allowed
$IPTABLES -A tcp_allowed -p TCP --syn -j ACCEPT
$IPTABLES -A tcp_allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A tcp_allowed -p TCP -j DROP
echo &quot;done.&quot;

#
# Destination Network Address Translation.
# If you don't know what it is, just comment the lines.
#
# 1 - We want all traffic coming to port 4200 to be redirected to an ssh server
# inside our network.
# 2 - We allow this very traffic to pass the FORWARD chain.
#
# Then we use the same techique to redirect 80) requests to our internal
# web server on port 80.
#
# NOTE : Do not forget to enable the port you want your clients to come into on the firewall
# In this case, it's port number 4200 and 80. Enabling this port is done at the INPUT
# chain level.
# Of course, you can replace 4200 with anything you want. I suggest you use a non
# assigned port though :-)
#
echo -n &quot;Setting up DNAT ... &quot;
# MEDIA_SERVER=&quot;192.168.1.222&quot;
# MEDIA_PORT=&quot;8080&quot;
# $IPTABLES -A PREROUTING -t nat -p tcp -i $INET_IFACE --dport 63637 -j DNAT --to $MEDIA_SERVER:$MEDIA_PORT
# $IPTABLES -A FORWARD -i $INET_IFACE -o $LAN_IFACE -d $MEDIA_SERVER -p tcp --dport $MEDIA_PORT -j tcp_allowed
#SSH_SERVER=&quot;192.168.1.111&quot;
# SSH_PORT=&quot;22&quot;
# $IPTABLES -A PREROUTING -t nat -p tcp -i $INET_IFACE --dport 4200 -j DNAT --to $SSH_SERVER:$SSH_PORT
# $IPTABLES -A FORWARD -i $INET_IFACE -o $LAN_IFACE -d $SSH_SERVER -p tcp --dport $SSH_PORT -j tcp_allowed
# # #$IPTABLES -A PREROUTING -t nat -p tcp -i $INET_IFACE --dport 80 -j DNAT --to $ #$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN_IFACE -d $ -p tcp --dport $ -j tcp_allowed
echo &quot;done.&quot;


# Enable simple IP FORWARDing and Masquerading
#
# NOTE: The following is an example for an internal LAN, where the lan
# runs on $LAN_IFACE, and the Internet is on $INET_IFACE.
#
# 1 - We masquerade at the 'nat' table, POSTROUTING chain if and only if:
# * It comes from our LAN
# * It goes out through our Internet interface.
# 2 - We ACCEPT to FORWARD if :
# * It goes through our LAN interface ... or ...
# * The connection is in a state ESTABLISHED or RELATED
# 3 - We LOG the rest.
echo -n &quot;Setting up FORWARD chain and MASQUERADE ... &quot;
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -s $LAN_IP_RANGE -j MASQUERADE
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m limit --limit 10/minute --limit-burst 10 -j LOG --log-level DEBUG --log-prefix &quot;FORWARD : &quot;
echo &quot;done.&quot;

#
# Set default policies for the INPUT, FORWARD and OUTPUT chains
# Guess what? We DROP everything by default!
echo -n &quot;Setting up default policies ... &quot;
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
echo &quot;done.&quot;

#
# Create separate chains for ICMP, TCP and UDP to traverse
#
echo -n &quot;Creating ICMP, TCP and UDP accepting chains ... &quot;
$IPTABLES -N icmp_packets
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
echo &quot;done.&quot;

#
# ICMP rules
#
echo -n &quot;Setting up icmp_packets chain ... &quot;
$IPTABLES -A icmp_packets -p ICMP -s $ANYWHERE --icmp-type 0 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s $ANYWHERE --icmp-type 3 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s $ANYWHERE --icmp-type 5 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s $ANYWHERE --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s $ANYWHERE --icmp-type 11 -j ACCEPT
echo &quot;done.&quot;

#
# TCP rules
#
# Allow ssh and smtp.
# Allow 4200 for forwarding.
#
# We also allow port 113 (auth a.k.a. ident). Even if you don't have
# a ident server, I suggest you leave that port open. It will speed
# things up. For more info, visit
# echo -n &quot;Setting up tcp_packets chain ... &quot;
# $IPTABLES -A tcp_packets -p TCP -s $ANYWHERE --dport 22 -j tcp_allowed
#$IPTABLES -A tcp_packets -p TCP -s $ANYWHERE --dport 25 -j tcp_allowed
#$IPTABLES -A tcp_packets -p TCP -s $ANYWHERE --dport 113 -j tcp_allowed
# $IPTABLES -A tcp_packets -p TCP -s $ANYWHERE --dport 63637 -j tcp_allowed
# $IPTABLES -A tcp_packets -p TCP -s $LAN_IFACE --dport 5955 -j tcp_allowed
# $IPTABLES -A tcp_packets -p TCP -s $LAN_IFACE --dport 7100 -j tcp_allowed
echo &quot;done.&quot;

#
# UDP ports
#
# Allow DHCP
#
# Uncomment the following 2 lines if you are running a DNS server on your firewall
# $IPTABLES -A udp_packets -p UDP -s $ANYWHERE --source-port 53 -j ACCEPT
# $IPTABLES -A udp_packets -p UDP -s $ANYWHERE --destination-port 53 -j ACCEPT
echo -n &quot;Setting up udp_packets... &quot;
$IPTABLES -A udp_packets -p UDP -s $ANYWHERE --source-port 67 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $ANYWHERE --source-port 68 -j ACCEPT
echo &quot;done.&quot;

#
# PREROUTING chain.
#
# Do some checks for obviously spoofed IP's coming to our Internet
# interface
#
echo -n &quot;Blocking private networks ... &quot;
$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -s 192.168.0.0/16 -j DROP
$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -s 10.0.0.0/8 -j DROP
$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -s 172.16.0.0/12 -j DROP
echo &quot;done.&quot;

#
# INPUT chain
#
# 1 - We associate each protocol to its own chain in the
# following order:
# * ICMP -> icmp_packets
# * TCP -> tcp_packets
# * UDP -> udp_packets
# 2 - We ACCEPT a packet in the following conditions:
# * It's part of a RELATED or ESTABLISHED connection
# * It comes from our LAN interface and goes to our LAN broadcast
# address
# * It comes from our LAN interface and goes to the 255.255.255.255
# broadcast address (usefull if you have a DHCP server on your fw)
# * It's destination is our localhost (127.0.0.1)
# * It's destination is our LAN ip address.
echo -n &quot;Associating packet types with their chains ... &quot;
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
echo &quot;done.&quot;

echo -n &quot;Setting up the INPUT chain ... &quot;
$IPTABLES -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BCAST_ADRESS -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $BROADCAST -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $LOCALHOST_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -m limit --limit 10/minute --limit-burst 10 -j LOG --log-level DEBUG --log-prefix &quot;INPUT : &quot;
echo &quot;done.&quot;

#
# OUTPUT chain
#
# The idea is to accept everything, even though the default
# policy of the OUTPUT chain is DROP. Basically, if a packet
# doesn't pass the OUTPUT chain, there is something *serious*
# going on.
#
# 1 - ACCEPT all packets coming from localhost
# 2 - ACCEPT all packets coming from our LAN ip address
# 3 - ACCEPT all packets going to localhost
# 4 - ACCEPT all packets going to our LAN ip address
# 5 - ACCEPT all packets going through our Internet interface

echo -n &quot;Setting up OUTPUT chain ... &quot;
$IPTABLES -A OUTPUT -p ALL -s $LOCALHOST_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -d $LOCALHOST_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -d $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT
$IPTABLES -A OUTPUT -m limit --limit 10/minute --limit-burst 10 -j LOG --log-level DEBUG --log-prefix &quot;OUTPUT : &quot;
echo &quot;done.&quot;
;;
stop)

# Flush all rules
echo -n &quot;Flushing all rules ... &quot;
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -t nat -X
echo &quot;done.&quot;
;;
restart)
$0 stop
$0 start
;;
status)
$IPTABLES -nL
;;
*)
echo &quot;usage: $0 {start|stop|restart|status}&quot;
exit 1
esac
exit 0
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top