分类: 系统运维
2006-06-19 22:55:03
桥接概述
查看了解路由对比桥接的概述。
以太网桥接实质上是把一个以太网络接口和一个或多个虚拟TAP接口桥接在一个网桥接口上。以太网桥表现为使用软件模拟一个真实的以太网交换机。以太网桥可以理解为一种能够用来连接一个机器上的多个以太网接口(无论是物理的还是虚拟的)使它们共享一个IP子网的软件交换机。
把分布在两个独立网络的一个物理的以太网NIC和一个OpenVPN所使用的TAP接口桥接起来,这样就可以逻辑上合并两个以太网络,就像它们在一个以太网子网内。
配置桥接
这个例子将指导你配置一个OpenVPN服务器端的桥接。多个客户将会连接到这个网桥上,并且每个客户机的TAP接口将会分配到一个服务器端LAN网段的IP地址。
下面是两个实现客户IP地址分配的方法:
在这个例子中,我们将使用第一个方法即OpenVPN服务器管理其客户在LAN子网内的IP地址池,和DHCP服务器使用的地址池分开(如果存在的话)。两种方法在都有详细描述。
在我们的例子中,我们将使用下面的网桥配置:
设置 |
参数 |
取值 |
以太网络接口 |
eth |
eth0 |
本地IP地址 |
ip |
192.168.8.4 |
本地子网掩码 |
eth_netmask |
255.255.255.0 |
本地广播地址 |
eth_broadcast |
192.168.8.255 |
VPN客户地址池 |
|
192.168.8.128 to 192.168.8.254 |
虚拟网桥接口 |
br |
br0 |
虚拟TAP接口 |
tap |
tap0 |
第一步是按照中的“开始使用VPN并且测试其连通性(Starting
up the VPN and testing for initial connectivity)”章节。然后,根据你是在Linux或Windows下配置桥接继续配置。
在Linux上配置桥接服务器
首先,确认你已经安装了bridge-utils软件包。
编辑下面的(启动网桥)脚本。根据你要桥接的物理网络接口设置br, tap, eth, eth_ip,
eth_netmask, 和 eth_broadcast 参数。确认使用一个内部网络接口并且是连接在一个受防火墙保护的LAN内。你可以使用Linux的ifconfig命令获得网络接口的一些必要的信息来完成bridge-start(启动网桥)参数。
现在就运行bridge-start脚本。脚本将会创建一个永久[译者注:永久意为系统重新启动前永久,默认虚拟接口在OpenVPN退出后就消失]的tap0网络接口并且已经和以太网接口桥接成功了。
下一步,我们将要编辑(OpenVPN服务器端配置文件)来使能桥接配置。
注释掉dev tun这行行并且替换成:
dev tap0
注释掉以server开始的行并且替换成:
server-bridge 192.168.8.4 255.255.255.0 192.168.8.128
192.168.8.254
现在设置Linux防火墙使之允许数据包通过新建的tap0 和 br0接口:
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
OpenVPN桥接现在能够通过下面顺序来启动和停止:
到目前为止,桥接的配置就完成了,你可以(根据HOWTO继续完成剩下部分)。
在Windows XP中配置桥接服务器
这个配置在桥接端需要Windows XP或更高版本系统。据我所知,Windows 2000不支持桥接,然而Windows 2000系统可以是一个桥接网络的客户,而OpenVPN另一端的桥接是在Linux或Windows XP系统上实现的。
在Windows上安装OpenVPN时,安装程序将自动创建一个名为“本地连接2”的TAP-Win32适配器。转到控制面版中的网络连接下并且改名为“tap-bridge”。
接下来使用鼠标选择tap-bridge和以太网适配器,点击鼠标右键,并且选择桥接(Bridge Connections)。这样就在控制面板中创建了一个新的桥适配器图标。
在桥适配器的TCP/IP属性里配置IP地址192.168.8.4子网掩码255.255.255.0。
接下来,编辑(OpenVPN服务端配置文件) 使能桥接配置。
注释dev tun这行且替换成:
dev tap
dev-node tap-bridge
注释以server开始的行并且替换成:
server-bridge 192.168.8.4 255.255.255.0 192.168.8.128
192.168.8.254
如果你的系统时XP SP2,进入防火墙配置控制面板,并且禁用桥适配器和TAP适配器上的包过滤功能。
到目前为止,桥接的配置就完成了,你可以(根据HOWTO继续完成剩下部分)。
配置桥接客户端
在(OpenVPN客户配置)基础上进行配置。注释dev tun的行且替换成:
dev tap
最后,确认客户端的配置文件和服务器端的配置文件是否一致。需要着重注意的是proto (udp or tcp)选项是否一致。同样如果使用了comp-lzo 和 fragment确认客户端和服务器端是否一致。
以太网桥接说明
使用以太网桥接配置时,第一步是构造以太网桥--一种虚拟网络接口是其他网络接口的一个容器,可以是物理的NIC也可以是虚拟的TAP接口。以太网桥接口必须在OpenVPN启动之前创建。
没有通用的网桥配置方法--每个OS有自己的配置方法(见下面例子)。
网桥接口一旦被创建,并且以太网接口加入到网桥中,OpenVPN就可以启动了。
说明 – Windows下的以太网桥接
Check out
by Adam Pavelec.
页面有更多关于以太网桥接的说明。
说明 – Linux下的以太网桥接, 配置脚本
这些脚本将处理Linux下的网桥的启动和停止。在OpenVPN发行包的sample-scripts下可以找到。
sample-scripts/bridge-start |
#!/bin/bash
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################
# Define Bridge Interface
# 定义网桥接口
br="br0"
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
# 定义需要桥接的TAP接口列表,如:
tap="tap0"
# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
# 定义需要和TAP接口桥接的物理接口
eth="eth0"
eth_ip="192.168.8.4"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.8.255"
for t in $tap; do
openvpn --mktun
--dev $t
done
brctl addbr $br
brctl addif $br $eth
for t in $tap; do
brctl addif $br
$t
done
for t in $tap; do
ifconfig $t
done
ifconfig $eth
ifconfig $br $eth_ip netmask $eth_netmask broadcast
$eth_broadcast
sample-scripts/bridge-stop |
#!/bin/bash
####################################
# Tear Down Ethernet bridge on Linux
####################################
# Define Bridge Interface
br="br0"
# Define list of TAP interfaces to be bridged together
tap="tap0"
ifconfig $br down
brctl delbr $br
for t in $tap; do
openvpn --rmtun
--dev $t
done
Copyright © 2002-2005 by OpenVPN Solutions LLC <>. OpenVPN is a trademark
of OpenVPN Solutions LLC.