CentOS / Redhat Linux Internet Connection Sharing

Q. How do I configure CentOS / Redhat Linux computer to share my internet connection? How do I configure RHEL as a software router with two interfaces? How do I share my single connection with other PCs on LAN?

A. Linux can be easily configured to share an internet connection using iptables. Al you need to two network interface cards as follows:
a) Your internal (LAN) network connected via eth0 with static ip address
b) Your external WAN) network is connected via eth1 with static ip address


Please note that interface eth1 may have public IP address or IP assigned by ISP. eth1 may be connected to a dedicated DSL / ADSL / WAN / Cable router.

Step # 1: Enable Packet Forwarding

Login as the root user. Open /etc/sysctl.conf file
# vi /etc/sysctl.conf
Add the following line to enable packet forwarding for IPv4:
Save and close the file. Restart networking:
# service network restart

Step # 2: Enable IP masquerading

In Linux networking, Network Address Translation (NAT) or Network Masquerading (IP Masquerading) is a technique of transceiving network traffic through a router that involves re-writing the source and/or destination IP addresses and usually also the TCP/UDP port numbers of IP packets as they pass through. In short, IP masquerading is used to share the internet connection.

Share internet connection

To share network connection via eth1, enter the following rule at command prompt (following useful for ppp0 or dial up connection):
# service iptables stop
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# service iptables save
# service iptables restart

Open your Windows / Mac / Linux computer networking GUI tool and point router IP to (eth0 Linux IP). You also need to setup DNS IP such as and You should now able to ping or browse the internet:
c:> ping
c:> ping google.com

Shell Script to Setup Basic Linux Network Sharing

This is basic connection sharing, following shell script is for more advance user. [ Download the script here and modify SHARE_IF as per your requirements. ]

# Created by nixCraft - www.cyberciti.biz

# set wan interface such as eth1 or ppp0

# clean old fw
echo "Clearing old firewall rules..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT

# Get some kernel modules
echo "Loading kernel modules..."
$MOD ip_tables
$MOD iptable_filter
$MOD iptable_nat
$MOD ip_conntrack
$MOD ip_nat_ftp
$MOD ip_nat_irc
$MOD ip_conntrack_ftp
$MOD ip_conntrack_irc

# Clean old rules if any, rhel specific but above will take care of everything
# service iptables stop

# unlimited traffic via loopback device

echo "Setting ${SHARE_IF} as router interface..."
$IPT --table nat --append POSTROUTING --out-interface ${SHARE_IF} -j MASQUERADE

# Start other custom rules
# End other custom rules

echo "*** Instructions on TCP/IP On The Windows / Mac / Linux Masqueraded Client ***"
echo "1. Login to your other LAN desktop computers"
echo "2. Open network configuration GUI tool such. Under Windows XP - Click Start, click Control Panel, click Network and Internet Connections, and then click Network Connections"
echo "3. Set DNS (NS1 and NS2) to and"
echo "4. Select the 'Gateway' tab in the TCP/IP properties dialog."
echo "5. Enter $(ifconfig ${SHARE_IF} | grep 'inet addr:'| grep -v '' | cut -d: -f2 | awk '{ print $1}') as the default gateway."

🥺 Was this helpful? Please add a comment to show your appreciation or feedback.

nixCrat Tux Pixel Penguin
Hi! 🤠
I'm Vivek Gite, and I write about Linux, macOS, Unix, IT, programming, infosec, and open source. Subscribe to my RSS feed or email newsletter for updates.

19 comments… add one
  • SIFE Jan 1, 2011 @ 13:16

    I have issue with that in VirtualBox, I have lab in VirtualBox like this:
    VBOX ( CentOS(2 nic’s, eth0 -> NAT and eth1 -> internal), 3 client’s)
    eth0: have dynamic IP, eth1 have static IP, CentOS can access to internet but other client can’t, I setup in them default gateway and static IP but it doesn’t work.

  • Gurpreet Singh Feb 21, 2011 @ 7:01

    its working thanks a lot…………….

  • vijay jadon Jul 20, 2011 @ 10:18

    i am new to red hat and i am not able to make any wireless connection. so plz provide a solution ???

  • khimanand Nov 28, 2011 @ 4:39

    thanks, this solution helps me

  • KS Ghosh Jan 30, 2012 @ 10:37

    Thanks a Lot.. Its work fine…. Now I want to stop the LAN user for accessing Bit torrent , mp3 download and other bandwidth consuming process. Will you please guide me.

  • Jouni "Rautamiekka" Järvinen Sep 12, 2012 @ 13:33

    The script uses
    1) hardcoded paths to programs where the §`which iptables`§ would be better.
    2) direct calls to iptables instead of the hardcoded.

    I had a 3rd point but forgot it.

  • luis Sep 29, 2013 @ 6:37

    Can someone please tell me how I can share my wireless internet connection via my ethernet connection to another computer? Here is my scenario: Computer 1 is connected to internet via Wireless. I want to share that wireless internet connection to computer 2 via ethernet. I don’t want to use static IP’s, I want computer 2 to be able to pick up an IP address from my home router, via computer 1. How can I accomplish this?

  • luis Sep 29, 2013 @ 6:38

    thanks in advance for your response.

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre> for code samples. Your comment will appear only after approval by the site admin.