海运的博客

OpenWRT/Linux多WAN带宽叠加使用iptables标记策略路由负载均衡

发布时间:November 7, 2012 // 分类:OpenWrt // 18 Comments

之前有介绍OpenWrt下ADSL多拨使用nexthop负载均衡,负载不是很理想,本次使用iptable标记数据包并配合策略路由实现负载均衡。
WAN1数据标记:

iptables -t mangle -N WAN1
#标记数据包
iptables -t mangle -A WAN1 -j MARK --set-mark 1 
#把数据包中的mark设置到整个连接中
iptables -t mangle -A WAN1 -j CONNMARK --save-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设置到数据包中,实现同个连接同个宽带IP出:

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

Linux下NetFlow输出工具Fprobe

发布时间:October 27, 2012 // 分类:常用软件 // 4 Comments

Fprobe通过libpcap监听数据并输出NetFlow格式到分析端,极大方便网络管理及监控。
所需组件安装:

yum install libpcap-devel

Fprobe安装:

wget http://sourceforge.net/projects/fprobe/files/fprobe/1.1/fprobe-1.1.tar.bz2
tar jxvf fprobe-1.1.tar.bz2
cd fprobe-1.1/
./configure 
make
make install

Fprobe监听eth0数据并输出NetFlow到127.0.0.1:9995:

fprobe -i eth0 127.0.0.1:9995

NetFlow分析端可使用Nfsen,测试下是否有Netflow数据输出:

tcpdump -i lo -nn port 9995
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
14:49:33.004041 IP 127.0.0.1.57368 > 127.0.0.1.9995: UDP, length 1464
14:49:43.006334 IP 127.0.0.1.57368 > 127.0.0.1.9995: UDP, length 1464
14:49:48.003252 IP 127.0.0.1.57368 > 127.0.0.1.9995: UDP, length 264
14:49:53.002271 IP 127.0.0.1.57368 > 127.0.0.1.9995: UDP, length 744
14:49:58.002295 IP 127.0.0.1.57368 > 127.0.0.1.9995: UDP, length 456

Nfsen插件PortTracker安装

发布时间:October 21, 2012 // 分类:流量监控 // No Comments

之前有介绍Nfsen和Nfdump安装,本次记录下Nfsen端口查看插件PortTracker安装。
重编译Nfdump开启nftrack:

cd /usr/local/src/nfdump-1.6.6/
./configure --enable-nfprofile --enable-nftrack --with-rrdpath=/usr/bin
make
cp bin/nftrack /usr/local/bin/

新建PortTracker数据存放目录:

mkdir /usr/local/nfsen/ports-db
chown -R apache:apache /usr/local/nfsen/ports-db/

编辑PortTracker.pm修改$PORTSDBDIR目录:

vim /usr/local/src/nfsen-1.3.6p1/contrib/PortTracker/PortTracker.pm
my $PORTSDBDIR = "/usr/local/nfsen/ports-db";

复制PortTracker插件至相应目录:

cp PortTracker.pm /usr/local/nfsen/plugins/
cp PortTracker.php /var/www/html/nfsen/plugins/

修改Nfsen配置文件添加插件信息:

vim /usr/local/nfsen/etc/nfsen.conf 
#https://www.haiyun.me
@plugins = (
[ 'live',   'PortTracker'], 
);

生成PortTracker数据:

sudo -u apache nftrack -I -d /usr/local/nfsen/ports-db/

重新加载Nfsen:

/usr/local/nfsen/bin/nfsen reload

等5分钟左右访问Nfsen界面选择Plugins即可看到相应信息:
Nfsen插件PortTracker.png

OpenWRT使用ntfs-3g读写挂载NTFS硬盘

发布时间:October 15, 2012 // 分类:OpenWrt // 2 Comments

Openwrt使用默认的ntfs模块挂载ntfs分区只有读权限,安装ntfs-3g替代:

opkg update
opkg install ntfs-3g

挂载NTFS分区:

#https://www.haiyun.me
mount -t ntfs-3g /dev/sda4 /mnt/

Linux服务器TCP连接状态查看及详细说明

发布时间:September 30, 2012 // 分类:网络工具 // No Comments

Linux下统计当前TCP连接状态:

netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
33 ESTABLISHED
3 FIN_WAIT2
7 LISTEN
221 TIME_WAIT

TCP连接状态说明:

#https://www.haiyun.me
LISTEN:服务器正在监听的端口
SYN_SENT:客户发出新连线请求后,还未收到服务器回应;
SYN_RECV:服务器接收到新连线请求;
ESTABLISED:已建立数据连接;
FIN_WAIT1:客户端主动断开请求,等待服务端ack确认
FIN_WAIT2:收到服务器端断开ack确认,等待服务端FIN;
TIME_WAIT:主动断开方发送最后ack后等待2MSL时间。

TCP的状态变迁图:
TCP状态变迁图.png
TCP连接建立和终止所对应的状态图:
TCP连接建立和终止状态图.png

分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...