Difference between revisions of "Bridge with netctl"

From ArchWiki
Jump to: navigation, search
m (Configuration: fixed link; style)
(merge from QEMU)
 
(17 intermediate revisions by 9 users not shown)
Line 1: Line 1:
 
[[Category:Networking]]
 
[[Category:Networking]]
A bridge is a piece of software used to unite two or more network segments. A bridge behaves like a virtual network switch, working transparently (the other machines don't need to know or care about its existence). Any real devices (e.g. {{ic|eth0}}) and virtual devices (e.g. {{ic|tap0}}) can be connected to it.
+
[[ja:Netctl でブリッジ接続]]
 +
{{Related articles start}}
 +
{{Related|Network bridge}}
 +
{{Related|netctl}}
 +
{{Related articles end}}
  
This article explains how to create a bridge that contains at least an ethernet device. This is useful for things like the bridge mode of [[QEMU]], setting a software based access point, etc.
+
{{Merge|Network bridge|I suggest to move the netctl-specific parts of this article into a subsection of "Network bridge"}}
  
== Installation ==
+
Make sure [[netctl]] is installed.
  
[[pacman|Install]] the {{Pkg|netctl}} package from the [[Official Repositories|official repositories]].
+
Copy {{ic|/etc/netctl/examples/bridge}} to {{ic|/etc/netctl/bridge}}.
  
[[pacman|Install]] the {{Pkg|bridge-utils}} package from the [[Official Repositories|official repositories]].
+
In this example, we create a bridge called {{ic|br0}} which has real Ethernet adapter {{ic|eth0}} and (optionally) a tap device {{ic|tap0}} connected to it. Of course, edit {{ic|br0}}, {{ic|eth0}} and {{ic|tap0}} to your needs.
 
+
== Configuration ==
+
 
+
* Copy {{ic|/etc/netctl/examples/bridge}} to {{ic|/etc/netctl/bridge}}.
+
* In this example, we create a bridge called {{ic|br0}} which has real Ethernet adapter {{ic|eth0}} and a tap device {{ic|tap0}} connected to it. Of course, edit {{ic|br0}}, {{ic|eth0}} and {{ic|tap0}} to your needs.
+
  
 
{{hc|/etc/netctl/bridge|<nowiki>
 
{{hc|/etc/netctl/bridge|<nowiki>
Line 21: Line 20:
 
BindsToInterfaces=(eth0 tap0)
 
BindsToInterfaces=(eth0 tap0)
 
IP=dhcp
 
IP=dhcp
## sets forward delay time
 
#FwdDelay=0
 
## sets max age of hello message
 
#MaxAge=10
 
 
</nowiki>}}
 
</nowiki>}}
  
 +
This example creates a statically assigned bridge called {{ic|br0}} which has real Ethernet adapter {{ic|eth0}} connected to it. Edit {{ic|Interface}}, {{ic|BindsToInterfaces}}, {{ic|Address}}, and {{ic|Gateway}} to your needs.
 +
{{hc| /etc/netctl/bridge|<nowiki>
 +
Description="Example Bridge connection"
 +
Interface=br0
 +
Connection=bridge
 +
BindsToInterfaces=(eth0)
 +
IP=static
 +
Address='192.168.10.20/24'
 +
Gateway='192.168.10.200'
 +
## Ignore (R)STP and immediately activate the bridge
 +
SkipForwardingDelay=yes
 +
</nowiki>}}
 
{{Tip|If you are using static IP, see man pages of [[netctl]], and also edit {{ic|/etc/resolv.conf}} if necessary.}}
 
{{Tip|If you are using static IP, see man pages of [[netctl]], and also edit {{ic|/etc/resolv.conf}} if necessary.}}
  
* You can bridge any combination of network devices editing {{ic|BindsToInterfaces}} option.
+
This example ensures that the bridge gets assigned the MAC address of the ethernet device (reference https://github.com/joukewitteveen/netctl/issues/111 )
* If any of the bridged devices (e.g. {{ic|eth0}}, {{ic|tap0}}) had [[dhcpcd]] enabled, [[systemd#Using units|disable and stop]] the {{ic|dhcpcd@eth0.service}} daemon. Or set {{ic|1=IP=no}} to the netctl profiles.
+
* Finally, [[netctl#Just one profile|enable and start]] your {{ic|/etc/netctl/bridge}}.
+
  
== Tips and tricks ==
+
{{hc|/etc/netctl/bridge|<nowiki>
 +
Description="Bridge eth0-tap0"
 +
Interface=br0
 +
Connection=bridge
 +
BindsToInterfaces=(eth0 tap0)
 +
IP=no
 +
ExecUpPost="ip link set dev br0 address $(cat /sys/class/net/eth0/address); IP=dhcp; ip_set"
 +
ExecDownPre="IP=dhcp"
  
=== Manually adding/removing network devices ===
+
## Ignore (R)STP and immediately activate the bridge
 
+
SkipForwardingDelay=yes
The {{Pkg|bridge-utils}} package provides tool ''brctl'' to manipulate bridges. You can use it to manually add or remove a device from a bridge:
+
</nowiki>}}
 
+
# brctl addif br0 eth1
+
# brctl delif br0 eth0
+
  
See {{ic|brctl(8)}}
+
You can bridge any combination of network devices editing {{ic|BindsToInterfaces}} option.
  
=== Wireless interface on a bridge ===
+
If any of the bridged devices (e.g. {{ic|eth0}}, {{ic|tap0}}) had [[dhcpcd]] enabled, [[systemd#Using units|stop and disable]] the {{ic|dhcpcd@eth0.service}} daemon. Or set {{ic|1=IP=no}} to the netctl profiles.
  
To add a wireless interface to a bridge, you first have to assign the wireless interface to an access point or start an access point with hostapd. Otherwise the wireless interface won't be added to the bridge.
+
Finally, [[netctl#Just one profile|start and enable]] your {{ic|/etc/netctl/bridge}}.

Latest revision as of 23:50, 27 December 2015

Related articles

Merge-arrows-2.pngThis article or section is a candidate for merging with Network bridge.Merge-arrows-2.png

Notes: I suggest to move the netctl-specific parts of this article into a subsection of "Network bridge" (Discuss in Talk:Bridge with netctl#)

Make sure netctl is installed.

Copy /etc/netctl/examples/bridge to /etc/netctl/bridge.

In this example, we create a bridge called br0 which has real Ethernet adapter eth0 and (optionally) a tap device tap0 connected to it. Of course, edit br0, eth0 and tap0 to your needs.

/etc/netctl/bridge
Description="Example Bridge connection"
Interface=br0
Connection=bridge
BindsToInterfaces=(eth0 tap0)
IP=dhcp

This example creates a statically assigned bridge called br0 which has real Ethernet adapter eth0 connected to it. Edit Interface, BindsToInterfaces, Address, and Gateway to your needs.

 /etc/netctl/bridge
Description="Example Bridge connection"
Interface=br0
Connection=bridge
BindsToInterfaces=(eth0)
IP=static
Address='192.168.10.20/24'
Gateway='192.168.10.200'
## Ignore (R)STP and immediately activate the bridge
SkipForwardingDelay=yes
Tip: If you are using static IP, see man pages of netctl, and also edit /etc/resolv.conf if necessary.

This example ensures that the bridge gets assigned the MAC address of the ethernet device (reference https://github.com/joukewitteveen/netctl/issues/111 )

/etc/netctl/bridge
Description="Bridge eth0-tap0"
Interface=br0
Connection=bridge
BindsToInterfaces=(eth0 tap0)
IP=no
ExecUpPost="ip link set dev br0 address $(cat /sys/class/net/eth0/address); IP=dhcp; ip_set"
ExecDownPre="IP=dhcp"

## Ignore (R)STP and immediately activate the bridge
SkipForwardingDelay=yes

You can bridge any combination of network devices editing BindsToInterfaces option.

If any of the bridged devices (e.g. eth0, tap0) had dhcpcd enabled, stop and disable the dhcpcd@eth0.service daemon. Or set IP=no to the netctl profiles.

Finally, start and enable your /etc/netctl/bridge.