UDP打洞原理及流程
UDP打洞(UDP Hole Punching)是一种常用于穿越NAT(Network Address Translation,网络地址转换)设备的技术,使位于不同内网的两个设备能够建立直接的UDP通信通道。UDP打洞常应用于P2P网络和需要低延迟通信的应用中,如视频通话和实时游戏。下面是UDP打洞的基本原理和完整流程。 ...
UDP打洞(UDP Hole Punching)是一种常用于穿越NAT(Network Address Translation,网络地址转换)设备的技术,使位于不同内网的两个设备能够建立直接的UDP通信通道。UDP打洞常应用于P2P网络和需要低延迟通信的应用中,如视频通话和实时游戏。下面是UDP打洞的基本原理和完整流程。 ...
1. 配置网卡 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 编辑网络配置文件 sudo vi /etc/sysconfig/network-scripts/ifcfg-ens1 # 内容如下(示例IP,根据实际情况修改): DEVICE=ens1 BOOTPROTO=dhcp # 或静态IP(需与物理网络同网段) ONBOOT=yes sudo vi /etc/sysconfig/network-scripts/ifcfg-ens2 # 内容如下: DEVICE=ens2 BOOTPROTO=static IPADDR=192.168.10.1 NETMASK=255.255.255.0 ONBOOT=yes 2. 启用IP转发 1 2 3 4 5 sudo vi /etc/sysctl.conf # 取消注释或添加: net.ipv4.ip_forward = 1 # 生效配置 sudo sysctl -p 3. 配置防火墙/NAT 1 2 3 4 5 # 使用firewalld配置 sudo firewall-cmd --permanent --zone=public --add-interface=ens1 sudo firewall-cmd --permanent --zone=internal --add-interface=ens2 sudo firewall-cmd --permanent --zone=public --add-masquerade sudo firewall-cmd --reload 或使用iptables(如果未使用firewalld) 1 2 3 4 5 6 # 或使用iptables(如果未使用firewalld) sudo iptables -t nat -A POSTROUTING -o ens1 -j MASQUERADE sudo iptables -A FORWARD -i ens2 -j ACCEPT # 保存规则(需安装iptables-services) sudo service iptables save sudo systemctl restart iptables DHCP服务 1 sudo yum install dhcp -y 配置dhcp 1 sudo vi /etc/dhcp/dhcpd.conf 1 2 3 4 5 6 7 8 9 10 11 12 # 定义DHCP全局选项(可选) option domain-name "internal.net"; option domain-name-servers 8.8.8.8, 8.8.4.4; # DNS服务器 default-lease-time 600; # 默认租约时间(秒) max-lease-time 7200; # 最大租约时间 # 定义子网段 subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.100 192.168.10.200; # 分配的IP范围 option routers 192.168.10.1; # 网关(指向虚拟机A的ens2) option subnet-mask 255.255.255.0; } 指定DHCP监听的接口 1 sudo vi /etc/sysconfig/dhcpd 1 DHCPDARGS="ens2" # 仅监听内部网络接口 启动DHCP服务并设置开机自启 1 2 sudo systemctl start dhcpd sudo systemctl enable dhcpd 防火墙放行DHCP流量 1 2 sudo firewall-cmd --permanent --add-service=dhcp sudo firewall-cmd --reload
https://www.cnblogs.com/aresxin/p/17864829.html 开启内核转发 1 2 3 4 5 6 7 8 # tail -6 /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 # sysctl -p ipsec.conf配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 # cat /etc/ipsec.conf config setup charondebug="ike 1, knl 1, cfg 0, net 1" strictcrlpolicy=no uniqueids=yes # 如果同一个用户在不同的设备上重复登录,yes 断开旧连接,创建新连接;no 保持旧连接,并发送通知; never 同 no, 但不发送通知. cachecrls=no conn ipsec-ikev2-vpn #XAUTH认证需要 auto=add # 当服务启动时, 应该如何处理这个连接项,add 添加到连接表中 compress=no # 是否启用压缩, yes 表示如果支持压缩会启用 type=tunnel keyexchange=ikev2 fragmentation=yes forceencaps=yes dpdaction=clear # 当意外断开后尝试的操作 dpddelay=300s # dpd时间间隔 rekey=no # 不自动重置密钥 left=%any # 服务器端标识,可以是魔术字 %any,表示从本地ip地址表中取 leftid=123.13.12.1 # 服务器端ID标识,这里为你的公网ip,或者@你的域名 leftcert=server.cert.pem # 服务器端证书 leftsendcert=always # 是否发送服务器证书到客户端 leftsubnet=0.0.0.0/0 right=%any # 客户端标识,%any表示任意 rightid=%any rightauth=eap-mschapv2 #KEv2 EAP(Username/Password) rightsourceip=192.168.137.0/24 # 客户端IP地址分配范围 rightdns=223.5.5.5,223.6.6.6 # DNS rightsendcert=never # 客户端不发送证书 eap_identity=%identity # 指定客户端eap id ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024! # 密钥交换协议加密算法列表,可以包括多个算法和协议。 esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1! # 数据传输协议加密算法列表,对于IKEv2,可以在包含相同类型的多个算法(由-分隔) conn xauth_psk #PSK认证需要 keyexchange=ikev2 # 使用 IKEv2 left=%defaultroute leftauth=psk # 服务器校验方式 leftsubnet=0.0.0.0/0 right=%any rightauth=psk rightsourceip=192.168.137.0/24 auto=add conn IKEv2-pubkey #RSA认证 # 服务器端根证书 DN 名称 leftca="CN=ares" # 服务器证书,可以是 PEM 或 DER 格式 leftcert=server.cert.pem # 不指定客户端证书路径 # rightcert = <path> # 指定服务器证书的公钥 leftsigkey=server.pub.pem # rightsigkey = <raw public key> | <path to public key> # 是否发送服务器证书到客户端 leftsendcert=always # 客户端不发送证书 rightsendcert=never # 服务端认证方法,使用证书 leftauth=pubkey # 客户端认证使用 EAP 扩展认证,貌似 eap-mschapv2 比较通用 rightauth=eap-mschapv2 # 服务端 ID,可以任意指定,默认为服务器证书的 subject,还可以是魔术字 %any,表示什么都行 leftid=%any # 客户端 id,任意 rightid=%any
一、虚拟机A(Ubuntu 20)配置 1. 安装WireGuard 1 2 sudo apt update sudo apt install wireguard resolvconf # 安装WireGuard和DNS工具(如需) 2. 生成服务器密钥对 1 2 3 # 生成私钥和公钥 sudo umask 077 # 确保密钥文件权限安全 sudo wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key 3. 配置WireGuard服务端 创建配置文件 /etc/wireguard/wg0.conf: ...
什么是IPSec IPSec(Internet Protocol Security)是IETF(Internet Engineering Task Force)制定的一组开放的网络安全协议。它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合。 IPSec用来解决IP层安全性问题的技术。IPSec被设计为同时支持IPv4和IPv6网络。主要通过加密与验证等方式,为IP数据包提供安全服务。 ...