Linux网关模式下将有线LAN和无线LAN共享网段实现局域网内互联
思路其实很简单:就是将虚拟出一个bridge口,将对应的有线LAN和无线LAN都绑定在这个虚拟bridge口上,并给这个bridge口分配一个地址,其他子网微机配置网关为bridge口的地址便可以了。
当然,因为是设备是网关模式,路由和nat也是必须的了。如果设备本身便是网桥模式,那么路由和nat便可以省掉了。
Linux网桥配置br-lan、eth0、eth1、ra0、rai0
如果你的设备含有不少于1个的LAN接口,那这个设备在不同的接口之间可能有一个被称为交换(switch)的特殊连接。
大多数的内部构造如下图所示:
Linux 系统下输入ifconfig命令,会有如下输出
br-lan=lan网桥 eth0=lan接口(注意 是路由上的LAN RJ45口) eth1=wan接口(注解同上) ra0=无线端口
在路由器中输入ifconfig命令,输出如下图:
eth0
eth0是一块物理网卡。eth0.1 eth0.2都是从此设备上虚拟出来的。
- eth0.1 是vlan1分出的lan口。
- eth0.2 是vlan分出的wan口。
rao raio
这两个是成对出现,一看就知道是无线设备,它们各自对应一个SSID,分别是2.4G和5G。
br-lan
br-lan 虚拟设备,用于LAN口设备桥接,可以用brctl show
查看使用情况。
br-lan = eth0.1 + rai0 + ra0,即将有线LAN口和无线网统一划分为 LAN,便于管理!
lo
lo 虚拟设备,自身的回环网设备。
linux brctl brctl addbr bridge brctl addif bridge eth0 brctl addif bridge ath0 ifconfig eth0 0.0.0.0 ifconfig bridge 10.0.0.1 netmask 255.255.255.0 up
添加iptables -t nat -A POSTROUTING -o eth1 -j SNAT –to 192.168.2.173
将有线和无线都设置为10.0.0.*网段,即可通过网上邻居进行访问
#直接输入brctl命令将显示帮助信息! Usage: brctl [commands]
commands:
addbr |
add bridge |
|
delbr |
delete bridge |
|
addif |
add interface to bridge |
|
delif |
delete interface from bridge |
|
setageing |
set ageing time |
|
setbridgeprio |
set bridge priority |
|
setfd |
set bridge forward delay |
|
sethello |
set hello time |
|
setmaxage |
set max message age |
|
setpathcost |
set path cost |
|
setportprio |
set port priority |
|
show |
show a list of bridges |
|
showmacs |
show a list of mac addrs |
|
showstp |
show bridge stp info |
|
stp |
{on|off} |
turn stp on/off |
设置linux让网桥运行 配置网桥
1.我们需要让linux知道网桥,首先告诉它,我们想要一个虚拟的以太网桥接口:(这将在主机bridge上执行,不清楚的看看测试场景)
root@bridge:~> brctl addbr br0
2.其次,我们不需要STP(生成树协议)等。因为我们只有一个路由器,是绝对不可能形成一个环的。我们可以关闭这个功能。(这样也可以减少网络环境的数据包污染):
root@bridge:~> brctl stp br0 off
3.经过这些准备工作后,我们终于可以做一些立竿见影的事了。我们添加两个(或更多)以太网物理接口,意思是:我们将他们附加到刚生成的逻辑(虚拟)网桥接口br0上。
root@bridge:~> brctl addif br0 eth0 root@bridge:~> brctl addif br0 eth1
4.现在,原来我们的两个以太网物理接口变成了网桥上的两个逻辑端口。那两个物理接口过去存在,未来也不会消失。要不信的话,去看看好了。.现在他们成了逻辑网桥设备的一部分了,所以不再需要IP地址。下面我们将这些IP地址释放掉
root@bridge:~> ifconfig eth0 down root@bridge:~> ifconfig eth1 down root@bridge:~> ifconfig eth0 0.0.0.0 up root@bridge:~> ifconfig eth1 0.0.0.0 up
好了!我们现在有了一个任何IP地址都没有的box w/o了。好了,这下如果你想通过TP配置你的防火墙或路由器的话,你就只能通过本地的控制端口了。你不会告诉我你的机器上连串行端口都没有吧?
注:上面红色部分其实是可选的,在试验中,我发现,就算不把原有的网卡地址释放掉,网桥也能工作!但是,为了更规范,或者说
为了避免有什幺莫名其妙的问题,最好还是按要求做,执行这四步吧!
5.最后,启用网桥root@bridge:~> ifconfig br0 up
可选: 我们给这个新的桥接口分配一个IP地址
root@bridge:~> ifconfig br0 10.0.3.129
或者把最后这两步合成一步:
root@bridge:~> ifconfig br0 10.0.3.129 up
就是多一个up!
关闭生成树
[inbi@debian~]#brctl stp br0 off #关闭生成树协议,减少数据包污染,因为我这里只有一个路由器哦!
配置桥开机激活
[inbi@debian~]#echo "modprobe bridge">>/etc/rc.local #开机加载 bridge 模块,或者echo "bridge">>/etc/modules [inbi@debian~]#cp /etc/network/interfaces /etc/network/interfaces.default #备份下,方便以后使用啊! [inbi@debian~]#vim /etc/network/interfaces auto lo eth0 eth1 br0 iface lo inet loopback iface br0 inet static address 10.10.10.1 netmask 255.255.0.0 gateway 10.10.10.254 pre-up ip link set eth0 promisc on pre-up ip link set eth1 promisc on pre-up echo "1">/proc/sys/net/ipv4/ip_forward bridge_ports eth0 eth1 #配置eth0 eth1 br0开机启动,eth0,eth1未设置IP信息,在启动br0网卡时,开启了eth0,eth1的混杂模式,并桥接了它们。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。