Jump to content
From ArchWiki

This article or section is a candidate for merging with Internet Sharing.

Notes: Just a specific case of the topic described there. (Discuss in Talk:Sharing PPP Connection)

## Requirements

Before proceeding, you must make sure:

1. You must have a working PPP connection.
2. You must have an extra Ethernet interface card in your computer with which to share your connection.

## Installing

The following packages must be installed for both Wired and Wireless sharing:

- iptables: for controlling packets in your network.
- dnsmasq: for acting as a DHCP and DNS caching server.
- bridge-utils: for setting up a network bridge.

Depending on whether you want to share a wireless or wired connection, you also have to install:

- wired: iproute2 or net-tools (this article uses `iproute2` since `net-tools` is deprecated).
- wireless: iw or wireless_tools (this article uses `iw` since `wireless_tools` is deprecated).

## Sharing via wired ethernet

- Set the PPP connection up.

  You can assign an IP address to the interface as usual, by running (as root):

    # ip addr add 192.168.0.254 dev eth0

- Set the kernel to router mode. This is done by running:

    # sysctl net.ipv4.ip_forward=1

- Configure dnsmasq. Make the following changes to `/etc/dnsmasq.conf` (uncomment if necessary):

    /etc/dnsmasq.conf

    domain-needed
    bogus-priv
    interface=eth0 # change to your chosen interface
    dhcp-range=192.168.0.1,192.168.0.100,12h

- Start the dnsmasq daemon.
- Finally, set firewall to forward connections to and from the Internet for clients connecting to your WLAN. This is done by issuing:

    # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

  In the above the ppp0 interface is the used PPP interface, you can substitute it for yours if needed.

- You are done! Happy surfing!

Warning: The previous configuration has no security options enabled. If you are using a firewall, you should adapt this documentation to suit your needs. Same applies also to setting up keys for WLAN interface.

### Network bridge

Let us assume your PPP connection is on eth0, and you want to share the connection on eth1 and eth2.

    # ip addr add 0.0.0.0 dev eth1  # remove IP from eth0
    # ip link set eth1 up           # ensure the interface is up

    # ip addr add 0.0.0.0 dev eth2  # remove IP from eth1
    # ip link set eth2 up           # ensure the interface is up

    # brctl addbr br0               # create br0 node
    # brctl addif br0 eth1          # add eth0 to bridge br0
    # brctl addif br0 eth2          # add eth1 to bridge br0

    # ip addr add 192.168.0.254 dev br0

change your interface in `dnsmasq.conf` to br0:

    interface=br0

and restart the dnsmasq daemon.

Now you should be able to connect to the internet using eth1 or eth2.

## Sharing via WLAN

Warning: These instructions create unencrypted ad-hoc network. See Ad-hoc networking#wpa_supplicant for method using WPA1 encryption. For better security, create an access point secured by WPA2.

- Set up the PPP connection.
- Set up the WLAN connection: choose an SSID and select Ad-hoc as network type. In the following it is assumed that you are using the wlan0 interface.

  Set the wlan0 interface up address for example 192.168.0.254. Setting up the interface is usually done by running:

    # iw wlan0 set type ibss
    # iw wlan0 ibss join MyFreeWlan

  After that you can assign an IP address to the interface as usual, by running:

    # ip addr add 192.168.0.254 dev wlan0

  Please note that different wlan cards may be configured differently and one should adapt this documentation accordingly.

- Set the kernel to router mode. This is done by running:

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

- Configure dnsmasq. Make the following changes to `/etc/dnsmasq.conf` (uncomment if necessary):

    etc/dnsmasq.conf

    domain-needed
    bogus-priv
    interface=wlan0    # change to your interface
    dhcp-range=192.168.0.1,192.168.0.100,12h

- Start the dnsmasq daemon.
- Finally, set firewall to forward connections to and from the Internet for clients connecting to your WLAN. This is done by issuing:

    # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

  In the above the ppp0 interface is assumed to be the used PPP interface, you can substitute it for yours if needed.

- You are done! Happy surfing!

Warning: The previous configuration has no security options enabled! If you are using firewall, you should adapt this documentation to suit your needs. Same applies also to setting up keys for wlan interface.

## Sharing script

A quick script for sharing eth0 over wlan0 on an ad-hoc network.

    ethoverwlan.sh

    #!/bin/bash

    iw wlan0 set type ibss
    iw wlan0 ibss join proxywlan
    ip addr add 192.168.0.254 dev wlan0
    ip link set wlan0 up
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward

## See also

- Simple stateful firewall
- Router
- Wireless network configuration
- USB 3G Modem
- Share your 3G Internet connection over wifi

Category:

- Network sharing

Hidden category:

- Pages or sections flagged with Template:Merge