nps 内网穿透

nps 是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持 tcp、udp 流量转发,可支持任何 tcp、udp 上层协议(访问内网网站、本地支付接口调试、ssh 访问、远程桌面,内网 dns 解析等等……),此外还支持内网 http 代理、内网 socks5 代理、p2p 等,并带有功能强大的 web 管理端。 实现结构图 +---------------+ +---------------------------------------+ +--------------------------------------------+ | | | | | | | traffic | | Server x.x.x.x | | | | | | | | | | | | nps web | | | | | | +---------+ +--------------+ | | intranet | | nps.test.com -----> | Traefik | +--> |127.0.0.1:8081| | | | | | | +---------+ +--------------+ | | | | | | | | | | | | | | nps Client | | | | +---------+ x.x.x.x:8024 | +-------------+ :5900 +-------------+ | | x.x.x.x:8001 -----> | nps | <------------------------------> | 10.1.50.100 | +-----> | 10.1.50.101 | | | | | +---------+ | | +-------------+ +-------------+ | | | | | | | +---------------+ +---------------------------------------+ +--------------------------------------------+ 服务端:CentOS 7.9 客户端:MacOS 10.15 ...

January 7, 2021 · 2 min · 357 words · Nick

用 Consul 和 Traefik 实现 Docker 容器的服务注册与发现

docker 实现应用的容器化 consul 集群实现服务的注册、发现 traefik 处理外部流量的负载均衡与路由 启动 consul 集群与 docker 通过 vagrant 起三台虚拟机实现基本的 consul 集群环境(为了节约资源把 docker 也运行在这上面了)。 consul 的 vagrant 配置文件如下: # -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure("2") do |config| $script = <<SCRIPT echo "Installing" yum install -y wget wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all yum makecache yum install -y jq unzip vim wget net-tools bind-utils dnsmasq sudo cp /vagrant/consul /usr/bin/consul echo "Installing docker.." sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker echo "success" SCRIPT # The most common configuration options are documented and commented below. # For a complete reference, please see the online documentation at # https://docs.vagrantup.com. # Every Vagrant development environment requires a box. You can search for # boxes at https://vagrantcloud.com/search. config.vm.box = "centos/7" config.vm.provision "shell", inline: $script config.vm.define "node1" do |node1| node1.vm.hostname = "node1" node1.vm.network "private_network", ip: "172.17.17.11" end config.vm.define "node2" do |node2| node2.vm.hostname = "node2" node2.vm.network "private_network", ip: "172.17.17.12" end config.vm.define "node3" do |node3| node3.vm.hostname = "node3" node3.vm.network "private_network", ip: "172.17.17.13" end # Disable automatic box update checking. If you disable this, then # boxes will only be checked for updates when the user runs # `vagrant box outdated`. This is not recommended. config.vm.box_check_update = false # Create a forwarded port mapping which allows access to a specific port # within the machine from a port on the host machine. In the example below, # accessing "localhost:8080" will access port 80 on the guest machine. # NOTE: This will enable public access to the opened port # config.vm.network "forwarded_port", guest: 80, host: 8080 # Create a forwarded port mapping which allows access to a specific port # within the machine from a port on the host machine and only allow access # via 127.0.0.1 to disable public access # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" # Create a private network, which allows host-only access to the machine # using a specific IP. # config.vm.network "private_network", ip: "192.168.33.10" # Create a public network, which generally matched to bridged network. # Bridged networks make the machine appear as another physical device on # your network. # config.vm.network "public_network" # Share an additional folder to the guest VM. The first argument is # the path on the host to the actual folder. The second argument is # the path on the guest to mount the folder. And the optional third # argument is a set of non-required options. # config.vm.synced_folder "../data", "/vagrant_data" # Provider-specific configuration so you can fine-tune various # backing providers for Vagrant. These expose provider-specific options. # Example for VirtualBox: # config.vm.provider "virtualbox" do |vb| # # Display the VirtualBox GUI when booting the machine # vb.gui = true # # # Customize the amount of memory on the VM: vb.memory = "1024" end # # View the documentation for the provider you are using for more # information on available options. # Enable provisioning with a shell script. Additional provisioners such as # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the # documentation for more information about their specific syntax and use. # config.vm.provision "shell", inline: <<-SHELL # apt-get update # apt-get install -y apache2 # SHELL end 为了节省时间我直接下载好了 consul 的可执行文件放到了 vagrant 配置文件同目录下,vagrant 会把当前目录下的文件都复制进虚拟机的 /vagrant 目录下,还有三个节点的 consul 配置文件。 ...

February 6, 2020 · 9 min · 1788 words · Nick