update: 2020-04-01

  1. ssh端口转发
  2. docker
  3. zsh
  4. Netcat
  5. 测速脚本

ssh端口转发

# -g 在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
# -N 不打开远程shell,不执行远程命令. 用于转发端口.
# -T 不为这个连接分配TTY
# -f SSH连接成功后,转入后台运行,通常和-N连用

# 本地转发: A 与 B 两台主机无法连通,但是主机 C 可以同时连通 A 和 B。 A 和 C 可以互联
# 此时我们可以通过 C 来达到 A、B 通信的目的。
# 在本地主机A上执行: ssh -L <本地主机端口>:<目标主机>:<目标主机端口> <远程主机>
ssh -NTf -L 1219:B:22 C
ssh -p 1219 localhost


# 远程转发: A 不能连 C,但 C 可以连 A。 A 和 B 不通,B 和 C 可以互连
# 在远程主机C上执行: ssh -R <远程主机端口>:<目标主机>:<目标主机端口> <远程主机>
ssh -NTf -R 1219:B:2003 A
# 在本地主机A上执行	
isql -p 1219 -h localhost

# 动态转发实现科学上网,不用在 VPS 上搭建 shadowsocks 服务
ssh -NTfg -D 2018 <SSH Server>
# 上面的命令实际上在你本机创建了一个 socks 代理服务,所有发往2018端口的请求都将被转发到 SSH Server 上面。利用 Chrome 上的 SwitchyOmega 的插件配置socks5代理实现科学上网

docker

# 官方docker一键部署脚本
wget -qO- get.docker.com | bash # curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh

# 设置开机自启
systemctl list-unit-files --type=service | grep docker
systemctl enable docker
service docker status

# 给运行中的container新增重启策略
docker update --restart=always <CONTAINER ID>

# 日志
docker logs --tail 30 -f bilibili-1 | grep -i "登录失败"
docker logs -f bilibili

zsh

# 安装常用软件(glances 或 htop代替 top) (ag 代替 grep) (axel 多线程下载工具)
apt update && apt upgrade && apt install zsh git curl vim htop axel

# 安装 oh-my-zsh 
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 安装插件
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/paulirish/git-open.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/git-open

# config, 选择适合自已的插件
vim ~/.zshrc
# HIST_STAMPS="yyyy-mm-dd"
# plugins=(git git-open z history zsh-syntax-highlighting zsh-autosuggestions)
# export LANG=en_US.UTF-8
# export TERM="xterm-256color"

source ~/.zshrc

端口传输测试

Netcat 号称 TCP/IP 的瑞士军刀

# -v: verbose
# -n: Suppress name/port resolutions 不解析域名,避免解析域名浪费时间
# -z: Zero-I/O mode [used for scanning] 不发送数据
# -w secs Timeout for connects and final net reads 设置超时时间
# -l: Listen mode, for inbound connects 开启监听
# -k: Keep inbound sockets open for multiple connects 监听不断,持续工作
# -u: UDP mode

# vps端开启监听(默认tcp, -u 指定UDP mode) 8080
nc -l -k 8080

# clinet连接测试,利用netcat代替telnet探测端口
nc -vzw5 104.168.94.186 8080
# 两次 -v 是让它报告更详细的内容(结束时会统计接收和发送多少字节), 设置超时时间3s, 探测端口范围 8080-8083
nc -v -v -w3 -z 104.168.94.186 8080-8083

测速脚本

# 测速 
# macOS
brew install speedtest 
# linux
bash <(curl -Lso- https://git.io/superspeed) # github: https://github.com/ernisn/superspeed
# 常用 server 列表
# 26352) China Telecom JiangSu 5G (Nanjing, China) 
# 27249) China Mobile jiangsu 5G (Nanjing, China) [
# 17320) China Mobile JiangSu 5G (ZhenJiang, China) [
# 21005) China Unicom (Shanghai, China) 
# 13704) China Unicom (Nanjing, China) 
# 4647) China Mobile Group Zhejiang Co.,Ltd (Hangzhou, China) 
# 7509) China Telecom ZheJiang Branch (Hangzhou, China)

# https://teddysun.com/444.html
wget -qO- bench.sh | bash # curl -Lso- bench.sh | bash

# dig
dig WWW.EXAMPLE.COM +nostats +nocomments +nocmd
dig EXAMPLE.COM +noall +answer

# nginx

TODO

  1. 如何判断自已被ddos攻击(界定范围)后,通过调用API将域名A记录更新到127.0.0.1,实现让攻击者自己攻击自己。