让Linux服务器变成交换机

最近迷上了玩Minecraft

我不太喜欢玩其他人的服,于是自己开着玩;

然后一开开了三四个,榨干了主服务器的资源😂

Minecraft_Hikari

要不再添置一台服务器吧

然后我就搬出了吃灰很久的一台机子

当我准备插网线的时候发现….

MiRouter

😂淦!这辣鸡路由的口给我插满了

嘛…能用交换机解决的问题都不是大问题!

可当我准备下单的时候突然想起来,这台服务器可是双网口的呀!

root@Lolipop:~# ifconfig
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.2.3.55  netmask 255.0.0.0  broadcast 10.255.255.255
        inet6 fe80::2e0:4cff:fefc:eba6  prefixlen 64  scopeid 0x20<link>
        ether 00:00:00:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 17487997  bytes 2520968230 (2.3 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14582469  bytes 2298402522 (2.1 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::2e0:4cff:fefc:eba7  prefixlen 64  scopeid 0x20<link>
        ether 00:00:00:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 3340396  bytes 1565396495 (1.4 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5142490  bytes 3783706643 (3.5 GiB)
        TX errors 34  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 836055  bytes 82236816 (78.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 836055  bytes 82236816 (78.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 

秉承着不能浪费的传统,一个大胆的想法浮现了出来

劳资要拿它来做交换机

0x00 实现原理

首先放上一张网络拓补图~~(低配~~

graph

说白了,就是

  1. 交换机得连上网,保留服务器的基本功能
  2. 建立网桥,使得客户机能直接透过网桥连回路由(非NAT

0x01 开干

工欲善其事,必先利其器!

开始之前,要做好以下几项工作

  • 记录下每个网口对应的名称,不要搞混。(我这边是enp1s0enp2s0

  • 接上外设、显示器/采集卡。这步很重要,因为建桥的时候会断网,不能完全依赖SSH!


以下操作仅适用于Debian系列的操作系统

首先,执行apt install bridge-utils net-tools -y安装对应环境

键入brctl show检查桥接程序是否安装正常

root@Lolipop:~# brctl show
bridge name	bridge id		STP enabled	interfaces	

可见,此处没有任何网桥;说明环境已经安装完毕。

0x02 搭桥

此处我编写了一个脚本~~(其实就是把所有的指令整合到一起~~

可以根据注释来更改适合自己的设置。

brctl addbr br0 #添加网桥,br0为网桥的名称
brctl addif br0 enp1s0 #添加需要搭桥的网卡1(enp1s0)
brctl addif br0 enp2s0 #添加需要搭桥的网卡2(enp2s0)
ifconfig br0 10.2.3.55 #为网桥机配置IP (10.2.3.55)
ifconfig enp1s0 up #开启卡1 (enp1s0)
ifconfig enp2s0 up #开启卡2 (enp2s0)
route add default gw 10.2.3.3 #为网桥机配置默认网关,若不需要网桥机联网可以忽略

这样一来,桥就搭起来了。

把脚本跑起来之后插上网线看看效果吧!

Shell

Ethernet

简直完美!✌

0x03 注意事项

  • brctl的操作是临时的,只要一重启桥就塌了,可以利用rc.local等方式开机启动
  • 不要照搬我的配置
  • 注意网卡的名称
  • 记得up所有网卡
Licensed under CC BY-NC-SA 4.0
Made with ❤ By GiriNeko
Built with Hugo
主题 StackJimmy 设计