Linux 弱⽹主机搭建⽅法

背景:

公司公用wifi速度不稳定,固想使用主机做网关做一个专网的弱网测试环境。
如何做弱网测试?
在这里插入图片描述

整体结构图

准备⼯作
主机 - ubuntu 64 位系统, 内核版本⾼于 2.6(建议使⽤最⼩安装)
双⽹卡 - 除原有板载⽹卡外, 额外需要⼀块 pci-e ⽹卡. (参考 intel 82574L)
路由器 - ⽀持桥接模式
系统模块和软件 - iproute2, iptables, sch_netem, dhcpd(参考 https://help.ubuntu.com/community/isc-dhcp-server)

部署⽅法

硬件连接⽅法

1.enp2s0 有线连接上级路由器, 通过 dhcp 获取 ip 地址。
2.enp5s0 有线连接下级路由器 WAN ⼝, 路由器设置为桥接模式。

打开 IP forward 功能

$ sudo vi /etc/sysctl.conf
 # 改 ip_forward=1
 net.ipv4.ip_forward=1 
 # 使⽣效
 $ sudo sysctl -p

设置 iptables 进⾏ NAT 转发

 # 安装 iptables-persistent 包
 $ sudo apt install iptables-persistent
 
 # 设置 iptables NAT 转发
 $ sudo iptables -F
 $ sudo iptables -P INPUT ACCEPT
 $ sudo iptables -P FORWARD ACCEPT
 $ sudo iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
 
 # 保存iptables的设置
 $ sudo iptables-save | sudo tee /etc/iptables/rules.v4

启⽤ ifb 模块

# 在⽂件的最后⼀⾏添加:ifb
 $ sudo vim /etc/modules

设置⽹卡 IP 地址

Ubuntu 17.10 -

$ sudo vim /etc/network/interfaces
 auto lo
 iface lo inet loopback
 
 auto enp5s0
 iface enp5s0 inet static
 address 192.168.5.1
 netmask 255.255.255.0
 broadcast 192.168.5.255
 gateway 192.168.5.2

Ubuntu 17.10 +

 $ sudo vim /etc/netplan/01-network-manager-all.yaml
 
 # Let NetworkManager manage all devices on this system
 network:
     version: 2
     renderer: NetworkManager
     ethernets:
         enp5s0: ## Lan ⽹卡名
             dhcp4: no
             addresses:
                 - 192.168.5.1/24 ## 静态 IP
             gateway4: 192.168.5.1
             nameservers:
             addresses: [114.114.114.114, 223.5.5.5]
 
 $ sudo netplan apply

安装和设置 DHCP 服务

推荐⽅案 dnsmasq

# 安装 dnsmasq
 sudo apt install dnsmasq
 sudo vim /etc/dnsmasq.conf
 
 # 关键配置如下
 # dhcp ⽹卡的 ip
 dhcp-option=option:router,192.168.5.1
 # dns 服务地址
 dhcp-option=option:dns-server,192.168.5.1
 # 分配 ip 范围 ⼦⽹掩码 租期
 dhcp-range=192.168.5.100,192.168.5.240,12h
 # dns服务端⼝
 port=53
 
 # 开启服务并设置开机启动
 sudo systemctl enable dnsmasq
 sudo systemctl start dnsmasq
 
 # 如果提示 53 端⼝冲突
 sudo vi /etc/systemd/resolved.conf
 DNSStubListener=no
 sudo systemctl restart systemd-resolved

备选⽅案 isc-dhcp-server

# 安装相关的软件包
 $ sudo apt install dhcpd
 $ sudo apt install isc-dhcp-server
 # 编辑⽂件,配置udhcpd服务
 $ sudo vim /etc/dhcp/dhcpd.conf
 # 添加如下
 subnet 192.168.5.0 netmask 255.255.255.0 {
     range 192.168.5.100 192.168.5.199;
     option routers 192.168.5.1;
     option domain-name-servers 114.114.114.114;
 }
 $ sudo vim /etc/default/isc-dhcp-server
 # 修改如下
 INTERFACESv4="enp5s0"
 
 # 启动DHCP服务
 $ systemctl enable isc-dhcp-server

启⽤ ifb ⽹卡(可考虑作为开机启动项)

 sudo modprobe ifb
 sudo ip link add ifb0 type ifb
 sudo ip link set ifb0 up
 
 sudo tc qdisc add dev enp5s0 ingress
 sudo tc filter add dev enp5s0 parent ffff: protocol ip u32 match u32 0 0
 flowid 1a37: action mirred egress redirect dev ifb0

使⽤⽅法

接下来可以通过 ifb0 对上⾏流量进⾏整形,通过 enp5s0 对下⾏流量进⾏整形,参考如下

HTB:https://man7.org/linux/man-pages/man8/tc-htb.8.html
NETEM:https://man7.org/linux/man-pages/man8/tc-netem.8.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值