海运的博客

Openwrt配置QOS流量带宽限制

发布时间:August 5, 2012 // 分类:OpenWrt // 1 Comment

针对特定服务做优先级设定,提高带宽使用质量,也可针对特定IP进行限速。

#加载模块:
insmod xt_IPID
insmod cls_u32                                                                                         
insmod cls_fw  
insmod sch_htb
insmod sch_sfq
insmod sch_prio
#启用IMQ虚拟网卡
ip link set imq0 up
ip link set imq1 up
#删除旧队列
tc qdisc del dev imq0 root
tc qdisc del dev imq1 root
#上传设置
#增加根队列,未标记数据默认走26
tc qdisc add dev imq0 root handle 1: htb default 26
#增加总流量规则
tc class add dev imq0 parent 1: classid 1:1 htb rate 350kbit
#增加子类
tc class add dev imq0 parent 1:1 classid 1:20 htb rate 80kbit ceil 250kbit prio 0
tc class add dev imq0 parent 1:1 classid 1:21 htb rate 80kbit ceil 250kbit prio 1
tc class add dev imq0 parent 1:1 classid 1:22 htb rate 80kbit ceil 250kbit prio 2
tc class add dev imq0 parent 1:1 classid 1:23 htb rate 80kbit ceil 250kbit prio 3
tc class add dev imq0 parent 1:1 classid 1:24 htb rate 80kbit ceil 250kbit prio 4
tc class add dev imq0 parent 1:1 classid 1:25 htb rate 50kbit ceil 250kbit prio 5
tc class add dev imq0 parent 1:1 classid 1:26 htb rate 50kbit ceil 150kbit prio 6
tc class add dev imq0 parent 1:1 classid 1:27 htb rate 50kbit ceil 100kbit prio 7
#为子类添加SFQ公平队列,每10秒重置
tc qdisc add dev imq0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev imq0 parent 1:21 handle 21: sfq perturb 10
tc qdisc add dev imq0 parent 1:22 handle 22: sfq perturb 10
tc qdisc add dev imq0 parent 1:23 handle 23: sfq perturb 10
tc qdisc add dev imq0 parent 1:24 handle 24: sfq perturb 10
tc qdisc add dev imq0 parent 1:25 handle 25: sfq perturb 10
tc qdisc add dev imq0 parent 1:26 handle 26: sfq perturb 10
tc qdisc add dev imq0 parent 1:27 handle 27: sfq perturb 10
#添加过滤规则配合Iptables Mark标记
#tc filter add dev imq0 parent 1:0 protocol ip u32 match ip sport 22 0xffff flowid 1:10
#使用U32标记数据,下面使用Iptables mark,容易。
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:21
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 22 fw flowid 1:22
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 23 fw flowid 1:23
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 24 fw flowid 1:24
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 25 fw flowid 1:25
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 26 fw flowid 1:26
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 27 fw flowid 1:27
#上传数据转入特定链
iptables -t mangle -N MYSHAPER-OUT
iptables -t mangle -A POSTROUTING -o pppoe-wan -j MYSHAPER-OUT
iptables -t mangle -A MYSHAPER-OUT -j IMQ --todev 0
#为特定数据打上标记配合之前过滤规则
#iptables -t mangle -I MYSHAPER-OUT -s 192.168.1.16 -j MARK --set-mark 27 #限制特定IP上传速度
#iptables -t mangle -I MYSHAPER-OUT -s 192.168.1.16 -j RETURN
iptables -t mangle -A MYSHAPER-OUT -p tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 20 #提高HTTP连接速度
iptables -t mangle -A MYSHAPER-OUT -p tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
iptables -t mangle -A MYSHAPER-OUT -p udp --dport 53 -j MARK --set-mark 20 #DNS查询
iptables -t mangle -A MYSHAPER-OUT -p udp --dport 53 -j RETURN
iptables -t mangle -A MYSHAPER-OUT -p icmp -j MARK --set-mark 21 #ICMP数据
iptables -t mangle -A MYSHAPER-OUT -p icmp -j RETURN
iptables -t mangle -A MYSHAPER-OUT -p tcp -m length --length :64 -j MARK --set-mark 21 #小数据包
iptables -t mangle -A MYSHAPER-OUT -p tcp -m length --length :64 -j RETURN
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 22 -j MARK --set-mark 22 #SSH连接
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 22 -j RETURN
iptables -t mangle -A MYSHAPER-OUT -p udp --dport 1194 -j MARK --set-mark 22 #VPN连接
iptables -t mangle -A MYSHAPER-OUT -p udp --dport 1194 -j RETURN
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 80 -j MARK --set-mark 23 #HTTP连接
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 80 -j RETURN
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 443 -j MARK --set-mark 24 #HTTPS连接
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 443 -j RETURN
#上传设置完成

#下载设置
#增加根队列,未标记数据默认走24
tc qdisc add dev imq1 handle 1: root htb default 24
tc class add dev imq1 parent 1: classid 1:1 htb rate 3500kbit
#添加子类
tc class add dev imq1 parent 1:1 classid 1:20 htb rate 1000kbit ceil 1500kbit prio 0
tc class add dev imq1 parent 1:1 classid 1:21 htb rate 1500kbit ceil 2500kbit prio 1
tc class add dev imq1 parent 1:1 classid 1:22 htb rate 2000kbit ceil 3500kbit prio 2
tc class add dev imq1 parent 1:1 classid 1:23 htb rate 1000kbit ceil 1500kbit prio 3
tc class add dev imq1 parent 1:1 classid 1:24 htb rate 1000kbit ceil 1500kbit prio 4
#为子类添加SFQ公平队列
tc qdisc add dev imq1 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev imq1 parent 1:21 handle 21: sfq perturb 10
tc qdisc add dev imq1 parent 1:22 handle 22: sfq perturb 10
tc qdisc add dev imq1 parent 1:23 handle 23: sfq perturb 10
tc qdisc add dev imq1 parent 1:24 handle 24: sfq perturb 10
#过滤规则
tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:21
tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 22 fw flowid 1:22
tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 23 fw flowid 1:23
tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 24 fw flowid 1:24
#下载数据转入特定链
iptables -t mangle -N MYSHAPER-IN
iptables -t mangle -A PREROUTING -i pppoe-wan -j MYSHAPER-IN
iptables -t mangle -A MYSHAPER-IN -j IMQ --todev 1
#分类标记数据
#iptables -t mangle -A MYSHAPER-IN -d 192.168.1.16 -j MARK --set-mark 23 #限制特定IP下载速度
#iptables -t mangle -A MYSHAPER-IN -d 192.168.1.16 -j RETURN
iptables -t mangle -A MYSHAPER-IN -p tcp -m length --length :64 -j MARK --set-mark 20 #小数据优先
iptables -t mangle -A MYSHAPER-IN -p tcp -m length --length :64 -j RETURN
iptables -t mangle -A MYSHAPER-IN -p icmp -j MARK --set-mark 20 #ICMP数据
iptables -t mangle -A MYSHAPER-IN -p icmp -j RETURN
iptables -t mangle -A MYSHAPER-IN -p tcp --sport 22 -j MARK --set-mark 21 #SSH连接
iptables -t mangle -A MYSHAPER-IN -p tcp --sport 22 -j RETURN
iptables -t mangle -A MYSHAPER-IN -p udp --sport 1194 -j MARK --set-mark 21 #VPN连接
iptables -t mangle -A MYSHAPER-IN -p udp --sport 1194 -j RETURN
iptables -t mangle -A MYSHAPER-IN -p tcp --sport 443 -j MARK --set-mark 22 #HTTPS连接
iptables -t mangle -A MYSHAPER-IN -p tcp --sport 443 -j RETURN
iptables -t mangle -A MYSHAPER-IN -p tcp --sport 80 -j MARK --set-mark 22 #HTTP连接
iptables -t mangle -A MYSHAPER-IN -p tcp --sport 80 -j RETURN
iptables -t mangle -A MYSHAPER-IN -p tcp --sport 0:1024 -j MARK --set-mark 23 #系统服务端口连接
iptables -t mangle -A MYSHAPER-IN -p tcp --sport 0:1024 -j RETURN
#下载设置完成

Centos安装X window配置ssh X转发

发布时间:July 14, 2012 // 分类:Linux基础 // No Comments

先安装X Window环境:

#https://www.haiyun.me
yum groupinstall "X Window System"

配置SSH开启X转发:

cat /etc/ssh/sshd_config
X11Forwarding yes

SSH客户端开启X转发,Xshell设置如下:
xshell开启X转发.png
安装X-Server for Windows,推荐免费开源Xming

用shellinabox网页管理服务器shell终端

发布时间:July 7, 2012 // 分类:常用软件 // No Comments

发现一好玩的软件shellinabox,使用浏览器访问Web界面就可登录管理服务器shell终端,可使用https加密连接,比之使用putty或xshell连接ssh方便了许多。
Shellinabox安装:

wget http://shellinabox.googlecode.com/files/shellinabox-2.14.tar.gz
tar zxvf shellinabox-2.14.tar.gz 
cd shellinabox-2.14
./configure 
make
make install

Shellinabox参数:

-b #后台运行
-u #运行用户,默认nobody
-g #运行用户组
-p #监听端口,默认4200
-t #不以ssl运行
-c #证书目录

生成ssl证书:

openssl req -new -x509 -nodes -out server.crt -keyout server.key
cat server.crt server.key > /tmp/certificate.pem

启动Shellinabox:

shellinaboxd -b -c /tmp -p 8080

访问host:8080即可登录shell终端,效果如下:
Shellinabox管理界面.png

Centos6服务器安装配置OpenVZ环境

发布时间:July 4, 2012 // 分类:虚拟化 // No Comments

OpenVZ是基于操作系统层面的虚拟化环境,所有虚拟机共享服务器资源,同等配置下比XEN能开较多的虚拟机,因此很多商家使用OpenVZ销售低端VPS产品。
OpenVZ安装:

#https://www.haiyun.me
cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
rpm --import  http://download.openvz.org/RPM-GPG-Key-OpenVZ
yum install vzkernel vzctl vzquota

配置内核参数:

vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

关闭SELinux避免不必要的麻烦:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

修改GRUB配置以OpenVZ内核启动,一般OpenVZ安装后会自动配置。

cat /boot/grub/menu.lst 
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title OpenVZ (2.6.32-042stab057.1)
    root (hd0,0)

重启系统加载OpenVZ内核:

reboot

新建和管理OpenVZ虚拟机,为方便直接使用OpenVZ官方提供的模板新建虚拟机:

mkdir -p /vz/template/cache
cd /vz/template/cache
wget -c http://download.openvz.org/template/precreated/ubuntu-12.04-x86.tar.gz #使用ubuntu吧,这个模板最小。。。
vzctl create 101 --ostemplate ubuntu-12.04-x86 --ipadd 192.168.1.254 --host www.haiyun.me  #使用模板ubuntu-12.04创建ID为100的虚拟机

OpenVZ虚拟机设置管理:

vzctl set 101 --onboot yes --save #设置开机自动启动
vzctl set 101 --hostname www.haiyun.me --save #设置主机名
vzctl set 101 --ipadd 192.168.1.254 --save #设置IP地址
vzctl set 101 --nameserver 192.168.1.1 --save #设置DNS服务器
vzctl set 101 --diskspace 5G:5G --save #硬盘限制
vzctl set 101 --userpasswd user:passwd #设置用户、密码
vzctl exec 101 service ssh status #查看虚拟机ssh是否在运行
vzctl start 101 #启动ID为101的虚拟机
vzctl destroy 101 #删除ID为101的虚拟机
vzctl enter 101 #进入101虚拟机的Shell,可见OpenVZ下管理员掌控一切
vzlist -a #查看所有虚拟机列表
vzcalc -v 101 #查看虚拟机占用的资源

SSH常用命令妙用

发布时间:July 2, 2012 // 分类:常用软件,Linux基础 // No Comments

之前有介绍Putty工具Plink应用,Linux下ssh同样可实现很多妙用。
1.动态socks5端口转发,可用于代**理上网

ssh -NfD 0.0.0.0:7070 root@haiyun.me
-D #动态转发端口

2.转发本地端口到远程服务器:

#转发本机8080端口到google.com 80端口
ssh -N -f -L <0.0.0.0>:8080:google.com:80 root@haiyun.me
-N #仅转发端口,不执行命令
-f #后台运行
-L #监听地址端口,-L [bind_address:]port:host:hostport

3.转发远程服务器端口到本地端口,远程服务器监听指定地址查看:https://www.haiyun.me/archives/1010.html

ssh -N -f -R 0.0.0.0:8080:localhost:80 root@haiyun.me
#转发远程服务器8080端口到本地80端口

4.登录服务器并执行文本内的命令:

ssh user@server "`cat test.txt`"

5.测试两台服务器的带宽:

yes | pv | ssh user@server "cat > /dev/null"

6.登录到远程服务器screen窗口,如断开、连接不受影响。

ssh -t user@server /usr/bin/screen -xRR
分类
最新文章
最近回复
  • 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 ...