注意:创建子网subnet的时候手残了,没有注意本来wireguard-shanghai3对应上海三区,wireguard-shanghai4对应上海四区的,没有留意,就做成这样的了......
注意:当然了B网络也选择了上海区域,与腾讯云A网络处于同一地区!
subset子网如下:
由于阿里云容器服务需要填写Pod CIDR Service CIDR开始本来想直接分两个网段的但是操作失误删除了集群重建冲突了(开始用的阿里云自己的那操作系统,安装wireguard不顺畅,删除更换系统为centos7了!),就把172.17.0.0/20划分了四个子网取Pod CIDR172.17.8.0/22 Service CIDR172.17.12.0/22
创建tke集群可以参考下图:
打开tke控制台,选择区域北京,新建:
输入集群名称(个人定义了),关键是集群网络选择前面创建的C网络(北京有好几个vpc网络呢),配置容器网络172.17.16.0/20
比较喜欢TKE容器网络的设置好带能搞在一个段里......阿里云的还要算一下。比较麻烦了,系统选择了ubuntu20.04,也不去用腾讯云自己的TencentOS Server了,怕跟阿里云的系统一样安装wireguard有问题(其实可以参考非标准内核的安装方式,懒得看了)......
下一步,特意添加了两台cvm且不在同一个subset:
默认下一步吧选择自己的登陆方式,我这里选择了自己的ssh-key方式!
可选组件就直接默认了,毕竟我这里主要是演示wireguard组网!下一步:
同意,完成等待创建ing......
c集群 两台server 10.40.2.6将安装**wireguard,**10.40.3.14后续作测试。
| 主机名 | ip | subset | 是否安装wireguard |
|---|---|---|---|
| VM-4-8-ubuntu | 10.10.4.8 | 上海二区 | 是 |
| VM-4-17-ubuntu | 10.10.4.17 | 上海二区 | 否 |
| VM-2-4-ubuntu | 10.10.2.4 | 上海一区 | 否 |
| 主机名 | ip | 交换机(subset) | 是否安装wireguard |
|---|---|---|---|
| iZuf6fxoj4zcqlpe8jupv2Z | 10.20.4.42 | 上海 可用区L(wireguard-shanghai4) | 是 |
| Zuf6fxoj4zcqlpe8jupv3Z | 10.20.4.43 | 上海 可用区L(wireguard-shanghai4) | 否 |
| 主机名 | ip | subset | 是否安装wireguard |
|---|---|---|---|
| VM-2-16-ubuntu | **10.40.2.16 ** | 北京二区 | 是 |
| ** **VM-3-16-ubuntu | **10.40.3.16 ** | 北京三区 | 否 |
sysctl -p|grep ip_forward
net.ipv4.ip_forward = 1
root@VM-2-16-ubuntu:~# uname -a
Linux VM-2-6-ubuntu 5.4.0-121-generic #137-Ubuntu SMP Wed Jun 15 13:33:07 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
内核5.4
sudo apt upgrade
sudo apt install wireguard-dkms wireguard-tools -y
sudo mkdir /etc/wireguard/keys
cd /etc/wireguard/keys
sudo wg genkey > vpn-gw.key
sudo wg pubkey < vpn-gw.key > vpn-gw.pub
检查下 wireguard 模块是否已经加载,如果没有加载,试下执行 modprobe wireguard加载模块
root@VM-2-16-ubuntu:/etc/wireguard/keys# lsmod |grep wire
root@VM-2-16-ubuntu:/etc/wireguard/keys# modprobe wireguard && lsmod | grep wireguard
wireguard 212992 0
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 16384 1 wireguard
注意:一般推荐是升级一下内核到linux-kernel 5.6以上,5.6kernel已经内置wireguard的mod,but鉴于集群的稳定性,我没有升级内核
yum install epel-release https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum install yum-plugin-elrepo
yum install kmod-wireguard wireguard-tools
#检查下 wireguard 模块是否已经加载,如果没有加载,试下执行 modprobe wireguard加载模块
modprobe wireguard
modprobe wireguard && lsmod | grep wireguard
注:关于内核是否升级看个人意愿。或者找一个额外机器升级....为了维护集群稳定性,未能升级内核
注意:10.30.0.1/24 10.10.30.2/24为wareguard网络,避免与各个网络地址冲突!
[Interface]
Address = 10.30.0.1/24
ListenPort = 51820
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxx
SaveConfig = false
MTU = 1420
# Internet Gateway config: nat wg0 out to the internet on ens5
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.0/24,10.20.0.0/16,172.17.0.0/20
[Peer]
# Client1: aliyun-shanghai
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxx
Endpoint = xxxxxxxx:51820
AllowedIPs = 10.30.0.2/24,10.20.0.0/16,172.17.0.0/20
PersistentKeepalive = 25
[Interface]
Address = 10.30.0.2/24
ListenPort = 51820
PrivateKey = xxxxxxxx
SaveConfig = false
MTU = 1420
# Internet Gateway config: nat wg0 out to the internet on ens5
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# Client1: MacOS-Desktop
PublicKey = xxxxxxx
Endpoint = xxxxx:51820
AllowedIPs = 10.30.0.2/24,10.10.0.0/16,172.16.0.0/16
PersistentKeepalive = 25
[Peer]
PublicKey = xxxxxxxxx
AllowedIPs = 10.30.0.1/16,10.10.0.0/16,172.16.0.0/16
cd /etc/wireguard
wg-quick up wg0
同理关闭服务就是:
wg-quick down wg0
10.20.4.42 ping 10.10.4.8
同理,阿里云后台,打开路由表
将下一条指定到服务器i-uf6fxoj4zcqlpe8jupv2即10.20.4.42节点
换一个subset:
10.10.2.4 ping 10.20.4.42 10.20.4.43
可以在A集群10.10.4.8 tcpdump看一下icmp包的抓包:
反之B网络测试:
10.20.4.43 ping 10.10.4.8 10.10.4.17 10.10.2.4
可以kubectl run or 控制台创建一个nginx镜像就好 主要是创建一个service:
kubectl run php --image=richarvey/nginx-php-fpm
注意:可以随便找个带ping curl的镜像,这个镜像我是用习惯了
[root@iZuf6fxoj4zcqlpe8jupv2Z wireguard]# kubectl exec -it php bash
kubectl run php --image=richarvey/nginx-php-fpm
root@VM-4-17-ubuntu:~/.kube# kubectl exec -it php bash
bash-5.1# ping 10.20.4.42
bash-5.1# ping 10.20.4.43
ping 容器网络
由图中关系可见需要在10.20.4.42节点允许10.30.0.3/24的通信
[Peer]
PublicKey = xxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.3/24
[root@iZuf6fxoj4zcqlpe8jupv2Z wireguard]# wg-quick down wg0
[root@iZuf6fxoj4zcqlpe8jupv2Z wireguard]# wg-quick up wg0
root@VM-2-16-ubuntu:/etc/wireguard# pwd
/etc/wireguard
root@VM-2-16-ubuntu:/etc/wireguard# cat wg0.conf
[Interface]
Address = 10.30.0.3/24
ListenPort = 51820
PrivateKey = xxxxxxxxxxxxxxxxxxxxxx
SaveConfig = false
MTU = 1420
# Internet Gateway config: nat wg0 out to the internet on ens5
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# Client1: aliyun-shanghai
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxx
Endpoint = xxxxxxxxxxxxxx:51820
AllowedIPs = 10.30.0.2/24,10.20.0.0/16,172.17.0.0/20
PersistentKeepalive = 25
root@VM-2-16-ubuntu:/etc/wireguard# wg-quick up wg0
恩 依然是路由的问题,找到vpc 路由表,添加路由
curl就稍微看一眼了
root@VM-2-16-ubuntu:/etc/wireguard# cat wg0.conf
[Interface]
Address = 10.30.0.3/24
ListenPort = 51820
PrivateKey = xxxxxxxxxxxxxxxxxxxxx
SaveConfig = false
MTU = 1420
# Internet Gateway config: nat wg0 out to the internet on ens5
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# Client1: aliyun-shanghai
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxx
Endpoint = xxxxxxxxxxxxx:51820
AllowedIPs = 10.30.0.2/24,10.20.0.0/16,172.17.0.0/20
PersistentKeepalive = 25
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.1/24
wg-quick重启wg0服务
root@VM-2-16-ubuntu:/etc/wireguard# wg-quick down wg0
root@VM-2-16-ubuntu:/etc/wireguard# wg-quick up wg0
root@VM-4-8-ubuntu:/etc/wireguard# cat wg0.conf
[Interface]
Address = 10.30.0.1/24
ListenPort = 51820
PrivateKey = xxxxxxxxxxxxxxxxxxx
SaveConfig = false
MTU = 1420
# Internet Gateway config: nat wg0 out to the internet on ens5
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.0/24,10.20.0.0/16,172.17.0.0/20
[Peer]
# Client1: aliyun-shanghai
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxx
Endpoint = xxxxxxxxxxxxx:51820
AllowedIPs = 10.30.0.2/24,10.20.0.0/16,172.17.0.0/20
PersistentKeepalive = 25
[Peer]
# Client1: wireguard-beijing
PublicKey = xxxxxxxxxxxxxxxxxx
Endpoint = xxxxxxxxxxxxxxxxx:51820
AllowedIPs = 10.30.0.3/24,10.40.0.0/21,172.17.16.0/20
PersistentKeepalive = 25
root@VM-4-8-ubuntu:/etc/wireguard# wg-quick down wg0
root@VM-4-8-ubuntu:/etc/wireguard# wg-quick up wg0
看一眼AB 节点的配置文件
A集群
B集群
初步怀疑两个集群配置文件里面有冲突了?过程就是一次次改尝试
[Interface]
Address = 10.30.0.1/24
ListenPort = 51820
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxx
SaveConfig = false
MTU = 1420
# Internet Gateway config: nat wg0 out to the internet on ens5
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#[Peer]
#PublicKey =xxxxxxxxxxxxxxx
#AllowedIPs = 10.30.0.2/24
[Peer]
# Client1: aliyun-shanghai
PublicKey =xxxxxxxxxxxxxxxxxxxxxx
Endpoint = xxxxxx:51820
AllowedIPs = 10.30.0.2/32,10.20.0.0/16,172.17.0.0/20
PersistentKeepalive = 25
[Peer]
# Client1: wireguard-beijing
PublicKey = xxxxxxxxxxxxxxx
Endpoint = xxxxxxxx:51820
AllowedIPs = 10.30.0.3/32,10.40.0.0/21,172.17.16.0/20
PersistentKeepalive = 25
B集群10.20.4.42节点
[Interface]
Address = 10.30.0.2/24
ListenPort = 51820
PrivateKey = xxxxxxxxxxxxxxxxxxxxx
SaveConfig = false
MTU = 1420
# Internet Gateway config: nat wg0 out to the internet on ens5
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#[Peer]
#PublicKey = xxxxxxxxxxxxxxxxxxxxxxx
#AllowedIPs = 10.30.0.1/24
[Peer]
# Client1: MacOS-Desktop
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxx
Endpoint = xxxxxxxxxxxxxxxxxxx:51820
AllowedIPs = 10.30.0.1/32,10.10.0.0/16,172.16.0.0/16
PersistentKeepalive = 25
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.3/24
C集群10.40.2.16节点
[Interface]
Address = 10.30.0.3/24
ListenPort = 51820
PrivateKey = xxxxxxxxxxxxxxx
SaveConfig = false
MTU = 1420
# Internet Gateway config: nat wg0 out to the internet on ens5
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# Client1: aliyun-shanghai
PublicKey = xxxxxxxxxxxxxxxx
Endpoint = xxxxxxx:51820
AllowedIPs = 10.30.0.2/32,10.20.0.0/16,172.17.0.0/20
PersistentKeepalive = 25
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.1/32
wg-quick down wg0
wg-quick up wg0
重复一遍各种Ping curl测试通过!
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
我有一个应用程序正在从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全支持)。我使用的gem之一是daemons创建后台作业。问题在于它使用fork+exec来创建后台进程,但这对JRuby来说是禁忌。那么-是否有用于创建后台作业的替代gem/wrapper?我目前的想法是只从shell脚本调用rake并让rake任务永远运行......提前致谢,克里斯。更新我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-scheduler和https://github.com/philostler/acts
是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案
我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT
深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG
(本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展 是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。 如:有三个人,每个人做的不同的事物,但是是需要协作的完成。 而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据
安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un
Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好