Difference between revisions of "Internet sharing"

From ArchWiki
Jump to: navigation, search
(Changes on interface names, commands (rc.d), and some clean up)
Line 60: Line 60:
:'''DNS:''' The same DNS as the first PC
:'''DNS:''' The same DNS as the first PC
Proceed like this (internet0 is assumed to be your network interface on PC2 with which you are connected to PC1):
<pre>ifconfig local1 netmask
<pre>ifconfig local1 netmask
ifconfig local1 up
ifconfig local1 up

Revision as of 04:47, 8 November 2011

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.

Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어

External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی


Let's assume you have an Internet connection and you want to share it. There are two main ways to do that.

   Internet                           pc1
1. ----> |router| ---> |switch| --->-<
                                      pc2 ..etc
2. ------> |pc1 (router)| --> pc2..etc


I'll explain the second way (it is easier and requires one less machine).

  1. Install a second network card to the first PC.
  2. Connect the two PCs using crossover cable or a switch. If one of the two computers has a gigabit ethernet card, a regular ethernet cable should work.
  3. Let's assume that the first card (with the internet) is called internet0 and the other one (for the sharing) is called local0. (If those two keep switching at every boot read this ). The newtork interface of the client machine will be called local1.
  4. Configure the second network card with:
    or enter in a console (as root)
    ifconfig local0 netmask
    ifconfig local0 up
  5. To make this permanent, install netcfg if you don't have it and set up a network profile in /etc/network.d, drawing on the examples in /etc/network.d/examples. Or, put the above lines in /etc/rc.local.
  6. Enable packet forwarding. To do so, write a "1" to /proc/sys/net/ipv4/ip_forward with:
    echo 1 > /proc/sys/net/ipv4/ip_forward
  7. Then edit /etc/sysctl.conf and set net.ipv4.ip_forward=1. This will make that change persistant after a reboot.
  8. Install iptables and enter this rule (because NAT is needed when sharing internet) and save iptables.
    pacman -S iptables
    iptables -t nat -A POSTROUTING -o internet0 -j MASQUERADE
    rc.d save iptables
  9. Edit /etc/sysctl.conf and add the lines
  10. Start iptables:
    rc.d start iptables
  11. Add iptables in your DAEMONS array in your /etc/rc.conf so that it is started each time.
  12. Go to the client PC and set:
    DNS: The same DNS as the first PC
    ifconfig local1 netmask
    ifconfig local1 up
    route add default gw local1
    echo "nameserver <adr of nameserver>" >> /etc/resolv.conf
    You can figure out the address of the nameserver by looking into the /etc/resolv.conf of PC1, if its internet connection is already established. If you don't have a nameserver, you can use Google Public DNS which is relatively fast. Its addresses are and
Note: Of course, this also works with a mobile broadband connection (usually called ppp0 on PC1)

That's it. The client PC should now have Internet.

See also