海运的博客

自编译ngrok服务器

发布时间:August 18, 2014 // 分类:网络工具 // 15 Comments

首先安装GO环境,https://www.haiyun.me/archives/1009.html

cd /usr/local/src/
git clone https://github.com/inconshreveable/ngrok.git
export GOPATH=/usr/local/src/ngrok/
export NGROK_DOMAIN="haiyun.me"

生成自签名SSL证书,ngrok为ssl加密连接:

cd ngrok
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt 
cp device.key assets/server/tls/snakeoil.key
GOOS=linux GOARCH=386
make clean
make release-server release-client

如果一直停留在go get gopkg.in/yaml.v1参考:https://www.haiyun.me/archives/1011.html
启动SERVER:

bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":8000" 

交叉编译windows客户端,最好安装最新版本Golang,使用yum安装的一直编译不通过。

cd /usr/local/go/src/
GOOS=windows GOARCH=386 CGO_ENABLED=0 ./make.bash
cd -
GOOS=windows GOARCH=386 make release-server release-client

客户端配置:

server_addr: "haiyun.me:4443"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "example"
    auth: "user:12345"
    proto:
      http: "80"

  ssh:
    remote_port: 2222
    proto:
      tcp: "22"

启动客户端:

bin/ngrok -config ngrok.conf start http ssh

注意所有domain要一致,不然会出现证书错误:

Failed to read message: remote error: bad certificate

SSH转发远程端口指定监听地址

发布时间:August 18, 2014 // 分类:网络工具 // No Comments

SSH默认转发远程服务器端口时监听loop,只能通过本地访问端口,如:

ssh -R 0.0.0.0:9022:localhost:22 root@haiyun.me

修改配置文件允许自定义监听地址:

echo 'GatewayPorts yes' >> /etc/ssh/sshd_config 
/etc/init.d/sshd restart

穿透内网利器ngrok

发布时间:August 18, 2014 // 分类:网络工具 // No Comments

通过ngrok服务器转发端口到本地80:

ngrok 80

自定义二级域名,需在ngrok官网注册账号获取auth token:

ngrok -authtoken Co1KiaaAdpapgD -subdomain=example 80

转发TCP协议其它端口,

ngrok -authtoken Co1KiaaAdpapgD -proto=tcp 22

指定远程服务器端口:

auth_token: Co1KiaaAdpapgD
tunnels:
  ssh:
    proto:
      tcp: "22"
    remote_port: 52222

启动:

ngrok -config ngrok.conf start ssh

OpenVZ VPS添加HE IPV6 Tunnel

发布时间:July 3, 2014 // 分类:网络工具 // No Comments

VPS需开启TUN/TAP:

wget http://tb-tun.googlecode.com/files/tb-tun_r18.tar.gz
tar xvf tb-tun_r18.tar.gz
yum install gcc
tar xvf tb-tun_r18.tar.gz
gcc tb_userspace.c -l pthread -o tb_userspace
mv tb_userspace /usr/bin/
setsid tb_userspace he-ipv6 <server-ip> <local-ip> sit > /dev/null
ip link set he-ipv6 up
ip addr add 2001:470::2/64 dev he-ipv6
ip route add ::/0 dev he-ipv6

添加多个IP:

for ip in {1..100}; do ip addr add 2001:470:1f07:26a::$ip/64 dev he-ipv6; done

添加随机IP:

#!/bin/sh
MAXCOUNT=100
count=0
network_v6=2001:470:1f07:26a

rnd_ipv6_block () {
  #HEX="tr -dc "[:xdigit:]" < /dev/urandom | head -c 16 | sed 's/..../:&/g'"
  HEX="openssl rand -hex 8 | sed 's/..../:&/g'"
  ipv6=$network_v6$(eval $HEX);
}

echo "$MAXCOUNT 个IPv6:"
echo "-----------------"

while [ $count -lt $MAXCOUNT ]
do
  count=`expr $count + 1`
  rnd_ipv6_block
  echo $ipv6
  ip addr add $ipv6/64 dev he-ipv6
done

PHP生成随机IPV6:

<?php
$prefix = '2001:470:1f07:26a';
$str = substr(md5(rand()), 16);
$addr = $prefix . ':' . implode(':', str_split($str, 4));
echo $addr;

UDP端口转发

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

使用SOCAT:

socat UDP4-LISTEN:53,fork UDP4:162.211.225.71:53

使用IPTABLES DNAT:https://www.haiyun.me/archives/iptables-dnat-public-ip.html

分类
最新文章
最近回复
  • 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服务器参数,...
  • ryan: 请问下nginx配置好了,怎么和这个nut链接呢?最后可视化管理这块能给个详细一点的教程么?谢谢。
  • 1: /etc/config/fstab配置文件 https://openwrt.org/zh/do...