Setting Up Multilink PPP on el6
Alteeve Wiki :: How To :: Setting Up Multilink PPP on el6 |
This guide is meant to walk you through setting up a multilink PPP connection under RHEL 6.0.
Overview
Multilink PPP, MP, but sometimes referred to as MPPP, provides three main benefits.
Load Balancing
When both links are up, MP will bond the two links and provide extra bandwidth. It is important to note that both links will run at the slower speed, times two.
For example; If one link runs at 5.0 Mbps down and 800 Kbps up while the second link runs at 6.0 Mbps down and 512 Kbps up, your bonded speed will be (5.0 + 5.0) 10 Mbps down and (512 + 512) 1.24 Mbps up.
High Availability
The bonded MP can work perfectly well when a given link fails, albeit with a reduced bandwidth.
This paper bonds two DSL accounts, but this is not a requirement. In fact, it's quite common to bond connections from DSL and cable ISPs to improve availability.
Privacy
Let me say up front that MP is no replacement for proper encryption. Further, it does nothing to provide anonymity on the Internet itself.
Now, with that said, the way that MP works makes it much more difficult for people between you and your ISP to see the contents of your traffic. This is particularly useful if you are a customer of an ISP who resells a major carrier's service which uses deep packet inspection (DPI) to detect and throttle certain connection types, like bittorrent. As a side effect, other connection types like SSH are throttled as well. This can pose a serious headache for sysadmins trying to work on servers from throttled connections.
By setting up MP, a sysadmin should be able to protect their traffic's content from the prying eyes of the upstream ISP.
Requirements
There are three sets of requirements in order to make the most of this tutorial; System Administration experience and Hardware.
ISP Support
Your ISP must support MP. Otherwise this simply won't work.
Sysadmin Experience
This assumes a certain level of familiarity with the command line in Linux, specifically bash or similar. It also is assumed that you have a familiarity with networking in general and PPPoE specifically.
Technical Requirements
A computer with three network interfaces (ideally wired) is required. I'm adding a wireless link so that the router can also act as a wireless access point. If you are not concerned with this step, feel free to skip it.
For this article, an Asus Eee PC 1000H netbook will be used. Two Apple USB Ethernet Adapters (part number MB442Z/A) are used to provide the connection to two bridged DSL modems.
Let's Begin
For reference, this paper will use the following interface names for the specified roles.
- eth0: LAN interface
- eth1: DSL interface 1
- eth2: DSL interface 2
- wlan0: Wireless AP Interface
Network Setup
If you added network devices after install, they may not have correlating /etc/sysconfig/network-scripts/ifcfg-eth# files. Before we begin, we'll want to record what ifconfig reports by piping it's output to a text file for later reference.
ifconfig > ~/if.txt
Identifying Your Interfaces
Depending on the hardware you use, the MAC address may be labelled on the device itself. Check to see if this is the case before you begin. If so, then you simply need to run ifconfig and match the HWaddr entries. This isn't useful though if your network interface is internal or, like the Apple USB to Ethernet adapters, not labelled. In these cases, you will need to follow the steps below.
Each network interface on your computer will have a unique MAC address. Before we continue, we need to know the MAC address of each interface. Given how most homes and offices have a router or server providing DHCP, I find that the easiest way to do this is to set all interfaces to DHCP and then plug a single network cable into a given interface. Then simply restart all interfaces and see which one gets an IP address.
/etc/init.d/NetworkManager restart
Stopping NetworkManager daemon: [ OK ]
Setting network parameters... [ OK ]
Starting NetworkManager daemon: [ OK ]
So now we can run ifconfig and see which interface came up. We'll know which it was as it will be the only one with an IP address set.
ifconfig
eth0 Link encap:Ethernet HWaddr 00:22:15:88:82:C5
inet addr:192.168.1.113 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::222:15ff:fe88:82c5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:43884 errors:0 dropped:0 overruns:0 frame:0
TX packets:26835 errors:0 dropped:0 overruns:0 carrier:8
collisions:0 txqueuelen:1000
RX bytes:59667887 (56.9 MiB) TX bytes:2044272 (1.9 MiB)
Interrupt:28
eth1 Link encap:Ethernet HWaddr D8:30:62:A5:CA:14
inet6 addr: fe80::da30:62ff:fea5:ca14/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:210 errors:0 dropped:0 overruns:0 frame:0
TX packets:90 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:18792 (18.3 KiB) TX bytes:17554 (17.1 KiB)
eth2 Link encap:Ethernet HWaddr D8:30:62:A5:C9:F0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:45 errors:0 dropped:0 overruns:0 frame:0
TX packets:78 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:19032 (18.5 KiB) TX bytes:13080 (12.7 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:960 (960.0 b) TX bytes:960 (960.0 b)
You can see in the eth0 entry that it has the entry inet addr:192.168.1.113. This tells us that eth0 is the interface currently connected to the network cable. So now we look at the line HWaddr 00:22:15:88:82:C5 to see what the MAC address is (00:22:15:88:82:C5 in this case).
So now I know that the MAC address for the interface eth0 is 00:22:15:88:82:C5 and that this corresponds to the netbook's built-in network interface. Now I can repeat this step by plugging the network cable into either Apple USB Ethernet adapter. For future reference, I like to label each device with it's corresponding MAC address and eth# identity. if you have access to a label maker, I advice you to do the same. Failing that, a china pencil or appropriate tape will do.
Switching From NetworkManager to network
Assuming that you've done a pretty standard install, we'll have to start by stopping and disabling NetworkManager and starting and enabling network. On normal workstation, NetworkManager is great as it makes the movement between networks very smooth. However, as my boss likes to say; "The more technology does for you, the more it does to you". We want to use network because it doesn't try to sort anything out for you. It does just what it is told and nothing more. Perfect for what will be our server.
These commands will disable NetworkManager and prevent it from starting with the system. Likewise it will start the network daemon and ensure that it starts again on system boot.
chkconfig NetworkManager off
chkconfig network on
/etc/init.d/NetworkManager stop
/etc/init.d/network start
Static Network Configuration
For now, we will put aside the wireless access point configuration as it is secondary.
With network set and the interface name to MAC address mapping known, we now need to create or edit ifcfg-eth# files in the /etc/sysconfig/network-scripts/ directory. Each file will control the configuration of a given physical interface
If eth0, eth1 or eth2 doesn't exist, create empty files before proceeding. In my case, the second two need to be created.
cd /etc/sysconfig/network-scripts/
touch ifcfg-eth1 ifcfg-eth2
For each of the three interface files, set the following values. Obviously edit as needed to match you values.
The eth0 interface will connect to the internal LAN, which I will set to use the 192.168.1.0/24 network. Specifically, I like to use the top IP in the range for the firewall, so I will tell this interface to statically set to 192.168.1.254.
vim ifcfg-eth0
# Atheros Communications AR8121/AR8113/AR8114 Gigabit or Fast Ethernet
HWADDR=00:22:15:88:82:C5
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.254
NETMASK=255.255.255.0
NM_CONTROLLED=no
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
PREFIX=24
The next two interfaces will have a pretty minimal setup.
vim ifcfg-eth1
# Apple USB to Ethernet adapter 1
DEVICE=eth1
HWADDR=D8:30:62:A5:CA:14
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
IPV6INIT=no
TYPE=Ethernet
vim ifcfg-eth2
# Apple USB to Ethernet adapter 2
DEVICE=eth2
BOOTPROTO=none
HWADDR=d8:30:62:a5:c9:f0
ONBOOT=yes
USERCTL=no
IPV6INIT=no
TYPE=Ethernet
Raw Notes
cd /etc/sysconfig/network-scripts/
touch ifcfg-bond0
touch ifcfg-bond1
Any questions, feedback, advice, complaints or meanderings are welcome. | |||
Alteeve's Niche! | Alteeve Enterprise Support | Community Support | |
© 2025 Alteeve. Intelligent Availability® is a registered trademark of Alteeve's Niche! Inc. 1997-2025 | |||
legal stuff: All info is provided "As-Is". Do not use anything here unless you are willing and able to take responsibility for your own actions. |