OpenWRT/Linux多WAN带宽叠加使用iptables标记策略路由负载均衡
发布时间:November 7, 2012 // 分类:OpenWrt // 18 Comments
之前有介绍OpenWrt下ADSL多拨使用nexthop负载均衡,负载不是很理想,本次使用iptable标记数据包并配合策略路由实现负载均衡。
WAN1数据标记:
iptables -t mangle -N WAN1
iptables -t mangle -A WAN0 -j MARK --set-mark 1
#标记数据包
iptables -t mangle -A WAN0 -j CONNMARK --save-mark
#把数据包中的mark设置到整个连接中
WAN2数据标记:
iptables -t mangle -N WAN2
iptables -t mangle -A WAN2 -j MARK --set-mark 1
iptables -t mangle -A WAN2 -j CONNMARK --save-mark
把已存在连接中的mark设置到数据包中:
iptables -t mangle -N RESTORE
iptables -t mangle -A RESTORE -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m state --state ESTABLISHED,RELATED -j RESTORE
使用NTH模块公平分发新数据包到WAN1和WAN2:
iptables -t mangle -A PREROUTING -m state --state NEW -m statistic --mode nth --every 2 --packet 0 -j WAN1
iptables -t mangle -A PREROUTING -m state --state NEW -m statistic --mode nth --every 2 --packet 1 -j WAN2
设置路由表:
cat /etc/iproute2/rt_tables
#https://www.haiyun.me
255 local
254 main
253 default
0 unspec
252 WAN1
251 WAN2
设置路由表默认路由:
ip route flush table WAN1
ip route add table WAN1 default via 2.2.2.2 dev ppp0
ip route flush table WAN2
ip route add table WAN2 default via 1.1.1.1 dev ppp1
根据iptables标记应用路由:
ip rule del from all fwmark 2 2>/dev/null
ip rule del from all fwmark 1 2>/dev/null
ip rule add fwmark 1 table my_wan0
ip rule add fwmark 2 table my_wan1
ip route flush cache
禁用源地址验证:
cat /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 0
Openwrt路由宽带多拨叠加及多线路wan负载均衡
发布时间:September 8, 2012 // 分类:OpenWrt // 2 Comments
OpenWRT使用macvlan虚拟多wan:
opkg update
opkg install kmod-macvlan
#https://www.haiyun.me
#eth1.1为wan接口
ip link add link eth1.1 eth1.2 type macvlan
ip link set eth1.2 address 00:1f:a3:65:55:2d
ip link set eth1.2 up
ip link add link eth1.1 eth1.3 type macvlan
ip link set eth1.3 address 00:1f:a3:65:55:3d
ip link set eth1.3 up
拨号时写入脚本同时多拨,也可使用morfast修改的pppd提高多拨成功率,PPPD拨号参数:
/usr/sbin/pppd plugin rp-pppoe.so mtu 1492 mru 1492 nic-eth1.1 persist usepeerdns nodefaultroute \
user <user> password <passwd> ipparam wan ifname pppoe-wan1 &
多拨成功后配置多路由负载均衡:
ip route add default scope global nexthop via ip1 dev pppoe-wan1 weight 1 nexthop via ip2 dev \
pppoe-wan2 weight 1 nexthop via ip3 dev pppoe-wan3 weight 1
iptables添加SNAT:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o pppoe-wan1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o pppoe-wan2 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o pppoe-wan3 -j MASQUERADE
一段时间后查看负载均衡效果:
iptables -t nat -L POSTROUTING -nv
Chain POSTROUTING (policy ACCEPT 1206 packets, 81303 bytes)
pkts bytes target prot opt in out source destination
1948 158K MASQUERADE all -- * pppoe-wan1 192.168.1.0/24 0.0.0.0/0
1943 159K MASQUERADE all -- * pppoe-wan2 192.168.1.0/24 0.0.0.0/0
1912 559K MASQUERADE all -- * pppoe-wan3 192.168.1.0/24 0.0.0.0/0
为公平分配可禁用路由缓存:
echo -1 > /proc/sys/net/ipv4/rt_cache_rebuild_count
Linux/Openwrt策略路由配置使用
发布时间:September 8, 2012 // 分类:OpenWrt // No Comments
Linux多可支持255个路由表,查看当前路由表:
#https://www.haiyun.me
ip rule ls
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
根据源IP或目标IP选择路由表:
echo '252 onovps'>>/etc/iproute2/rt_tables
#新建路由表ID与名称映射
ip rule add from 192.168.1.5 table onovps pref 32764
#新建路由表onovps,优先级32764
ip route add default via 192.168.1.2 dev pppoe-wan2 table onovps
#新建路由表onovps默认路由项
ip route flush cache
#刷新路由缓存
基于iptables标记选择路由表:
ip rule add fwmark 20 table onovps pref 32763
#新建路由表,防火墙标记20的数据
ip route add default via 192.168.1.2 dev pppoe-wan2 table onovps
#默认路由
iptables -t mangle -APREROUTING -p udp --dport 53 -j MARK --set-mark 20
#标记数据
查看当前路由表:
ip rule ls
0: from all lookup local
32764: from 192.168.1.5 lookup onovps
32765: from all lookup main
32766: from all lookup main
32767: from all lookup default
查看路由表onovps下路由项:
ip route ls table onovps
default via 192.168.1.2 dev eth1
分类
- Apache (13)
- Nginx (45)
- PHP (86)
- IIS (8)
- Mail (17)
- DNS (16)
- Cacti (14)
- Squid (5)
- Nagios (4)
- Puppet (7)
- CentOS (13)
- Iptables (23)
- RADIUS (3)
- OpenWrt (41)
- DD-WRT (1)
- VMware (9)
- 网站程序 (2)
- 备份存储 (11)
- 常用软件 (20)
- 日记分析 (10)
- Linux基础 (18)
- 欧诺代理 (0)
- Linux服务 (18)
- 系统监控 (4)
- 流量监控 (7)
- 虚拟化 (28)
- 伪静态 (2)
- LVM (3)
- Shell (18)
- 高可用 (2)
- 数据库 (16)
- FreeBSD (3)
- 网络安全 (25)
- Windows (35)
- 网络工具 (22)
- 控制面板 (3)
- 系统调优 (10)
- Cisco (3)
- VPN (5)
- ROS (20)
- Vim (14)
- KMS (4)
- PXE (2)
- Mac (1)
- Git (1)
- PE (1)
- LNS (2)
- Xshell (7)
- Firefox (13)
- Cygwin (4)
- OpenSSL (9)
- Sandboxie (3)
- StrokesPlus (1)
- AutoHotKey (4)
- Total Commander (3)
- WordPress (3)
- iMacros (6)
- Typecho (2)
- Ollydbg (1)
- Photoshop (1)
- 正则 (3)
- Debian (3)
- Python (8)
- NoSQL (6)
- 消息队列 (4)
- JS (7)
- Tmux (3)
- GO (7)
- HHVM (2)
- 算法 (1)
- Docker (2)
- PT (15)
- N1 (16)
- K2P (6)
- LUKS (4)
最新文章
- linux用tc给软件应用或ip做qos限制下载上传速度
- linux/ubuntu交叉静态编译mips tmux和dropbear/openssl/openssh/bash
- 使用squashfs-tools和binwalk修改路由/光猫固件rootfs文件
- 此内容被密码保护
- openwrt/immortalwrt编译内核模块并修改版本号
- 联通贝尔光猫G-140W-UG修改为桥接/管理员密码并开启telnet
- linux/openwrt清空iptables连接跟踪状态表conntrack
- debian11或pve编译安装最新版qbittorrent-nox
- x86运行arm64 docker
- 编译纯净版k2p padavan支持802.11 kvr固件
最近回复
- jiangker: good, very helpful to me
- fengfeng: N1 armbian 能有编译下内核吗。。我要开启can 不懂怎么操作
- 1: 方法一ngtcp2要改下:./configure PKG_CONFIG_PATH=/usr/l...
- 海运: 关闭服务器
- 海风: override.battery.charge.low以及override.battery.r...
- koldjf: 不能过滤
- 杰迪武士: 此文甚好甚强巨,依照此文在树莓派2 + Rasbian上部署成功 感谢博主美文共赏
- 海运: ups不知有没选项可设置此参数,不过你可以在另外一台电脑上安装nut客户端自动关机。
- kgami: 想请教一下,设置了的电脑自动关机之后,几秒后UPS怎么也跟着关机了,导致另外一台电脑没关机就断...
- 海运: 写的很详细了啊,/etc/nut/hosts.conf用以nut-cgi连接nut服务器参数,...