Windows Server 2012 搭建网关服务器并端口转发
需求
使用 Windows server 作为Hyper-V 虚拟出许多虚拟机,基本上都分配了内网地址,现在需要这些虚拟机访问外网,或者外网直接访问这些虚拟机,必须配置一个网关服务器。我决定直接使用 Windows 的远程访问中的 NAT 服务来完成。
没有找到官方文档,本文完全参考了以下文章
在Windows Server系统上配置路由转发功能
环境
Windows server 2012 r2
外网网卡 : 221.122.XXX.XXX
内网网卡 : 192.168.0.1 (作为内网网关地址)
由于服务器已经开启 hyper-V ,使用,实际使用的分别是 2 块虚拟网卡
配置服务器管理器
-
服务器管理器 – 添加角色和功能
一路回车,“选择服务器角色” 找到 “远程访问”,继续一路回车,直到完成在选择角色服务这里,勾选“路由”,第一项 “DirectAccess…”也跟着一起选中了
-
服务器管理器 – 工具 — 路由和远程访问
如果看到服务器状态下那个本地服务器已经启动,就不能 “配置并启用路由和远程访问”,可以先“禁用路由和远程访问”
选择 : 配置并启用路由和远程访问
开始我一直折腾 “配置 LAN 路由” ,那个没有出现在功能列表中。使用,只能选 “其他”,然后,就可以看到了
我这里最终决定,只选 NAT
-
重点来了:新增接口
开始时,将接口理解为网卡,总是在 2 个网卡中来回折腾不成功!
后来,通过以上参考文章,突然明白,内网接口应该选 “本地”,而不是配置了 192.168.0.1 的那块网卡!1). 公用接口: 配置好外网地址的网卡,负责链接访问 internet
2). 专用接口: 不只是那个配置了 192.168.0.1 的网卡,应该是所有本机网卡的集合,接口负责指向 localhost 或 127.0.0.1 ,所以叫做“本地连接”
最终结果如下图
-
分别配置以上 2 个接口
外网
勾选 “公用接口连接到Internet“
内网
勾选 “专用接口连接到专用网络”到这里,已经实现了内网到外网的访问
通过外网接口实现端口转发后续再记录
测试
找一个只有内网地址的虚拟机
$ ip a
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:15:5d:32:bd:04 brd ff:ff:ff:ff:ff:ffinet 192.168.0.193/24 brd 192.168.0.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::215:5dff:fe32:bd04/64 scope link valid_lft forever preferred_lft forever
-
ping 外网网关
$ ping 192.168.0.1PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.64 bytes from 192.168.0.1: icmp_seq=1 ttl=128 time=0.228 ms64 bytes from 192.168.0.1: icmp_seq=2 ttl=128 time=0.161 ms
-
ping 外网网关
$ ping 221.122.XXX.XX1PING 221.122.XXX.XX1 (221.122.XXX.XX1) 56(84) bytes of data.64 bytes from 221.122.XXX.XX1: icmp_seq=1 ttl=254 time=1.94 ms64 bytes from 221.122.XXX.XX1: icmp_seq=2 ttl=254 time=1.99 ms64 bytes from 221.122.XXX.XX1: icmp_seq=3 ttl=254 time=2.06 ms
-
ping DNS 地址
$ ping 223.5.5.5PING 223.5.5.5 (223.5.5.5) 56(84) bytes of data.64 bytes from 223.5.5.5: icmp_seq=1 ttl=114 time=6.75 ms64 bytes from 223.5.5.5: icmp_seq=2 ttl=114 time=6.63 ms64 bytes from 223.5.5.5: icmp_seq=3 ttl=114 time=6.66 ms......
-
ping 域名
$ ping jd.comPING jd.com (111.13.149.108) 56(84) bytes of data.64 bytes from 111.13.149.108 (111.13.149.108): icmp_seq=1 ttl=49 time=7.12 ms64 bytes from 111.13.149.108 (111.13.149.108): icmp_seq=2 ttl=49 time=7.04 ms64 bytes from 111.13.149.108 (111.13.149.108): icmp_seq=3 ttl=49 time=6.87 ms64 bytes from 111.13.149.108 (111.13.149.108): icmp_seq=4 ttl=49 time=6.89 ms......
端口转发
还以上面 192.168.0.193 虚拟机为例
-
将 传入到本机的 22193 端口 — 转发到 192.168.0.193的 22 端口,实现外网直接 ssh 到内网 192.168.0.193
-
测试
假设本机外网地址是 221.122.XXX.XXX$ ssh 221.122.XXX.XXX -p 22193
OK
相关文章:

Windows Server 2012 搭建网关服务器并端口转发
需求 使用 Windows server 作为Hyper-V 虚拟出许多虚拟机,基本上都分配了内网地址,现在需要这些虚拟机访问外网,或者外网直接访问这些虚拟机,必须配置一个网关服务器。我决定直接使用 Windows 的远程访问中的 NAT 服务来完成。 …...

基于linux下的高并发服务器开发(第三章)- 3.10 死锁
deadlock.c #include <stdio.h> #include <pthread.h> #include <unistd.h>// 全局变量,所有的线程都共享这一份资源。 int tickets 1000;// 创建一个互斥量 pthread_mutex_t mutex;void * sellticket(void * arg) {// 卖票while(1) {// 加锁pt…...

09.计算机网络——套接字编程
文章目录 网络字节序socket编程socket 常见APIsockaddr结构 UDP编程创建socket绑定socketsendto发送数据recvform接收数据关闭socket TCP编程创建socket绑定socketlisten监听套接字accept服务端接收连接套接字connect客户端连接套接字send发送数据recv接收数据关闭socket 工具n…...

Data Structure, Algorithm,and Applications in C++
在学习这本书进阶内容之前,我们可以跟着它的第一章部分再巩固和复习。本书由Sartaj Sahni撰写,由王立柱和刘志红翻译。全书通俗易懂,内容丰富,是巩固C内容的不二选择。希望本文对各位有所帮助。 目录 1.函数与参数 1.1.传值参数…...

Apipost使用教程
Apipost是一款集API调试、生成文档、Mock、测试于一体的协同工具。单个工具可以同时满足接口测试、生成/分享文档、Mock、流程测试等功能,还有超实用的多人多角色间实时协作的功能。将前端、后端、测试三种角色串联起来,从而实现工作流程无缝衔接、提高研…...
如何使用Python进行服务器管理和自动化操作?
使用Python进行服务器管理和自动化操作可以极大地简化和提高日常管理任务的效率。下面是一些常见的方法和工具: SSH库:使用Python的paramiko库可以通过SSH协议连接到服务器,执行命令、上传文件和下载文件等操作。 例如,使用para…...

Kafka-partition和消费者的关系
Kafka-partition 目录概述需求: 设计思路实现思路分析1.Kafka-partition2.消费者数量小于分区数量3. 拓展实现 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a…...

使用克拉默法则进行三点定圆(二维)
目录 1.二维圆2.python代码3.计算结果 本文由CSDN点云侠原创,爬虫网站请自重。 1.二维圆 已知不共线的三个点,设其坐标为 ( x 1 , y 1 ) (x_1,y_1) (x1,y1)、 ( x 2 , y 2 ) (x_2,y_2) (x2,y2)、 ( x 3 , y 3 ) (x_3,y_3) (x3,y3)…...

【Java】Java多线程编程基础
文章目录 1. 进程与线程1.1 进程与线程的基本认识1.1.1 进程(Process)1.1.2 线程(Thread) 1.2 为什么会有线程1.2.1 以看视频为例 2. 多线程实现2.1 Thread类实现多线程2.2 Runnable接口实现多线程2.3 Callable接口实现多线程2.3 …...
FFmpeg-4.2.4的去logo源码分析
1.源码 libavfilter/vf_delogo.c 2.源码分析 /** 去logo算法, 函数的参数解释如下: w: 输入图像的宽度 h: 输入图像的高度 logo_x: 标志区域左上角的x坐标 logo_y: 标志区域左上角的y坐标 logo_w: 标志的宽度 logo_h: 标志的高度 band: 处理区域周围的带宽大小 show: 是否在…...

深度学习(一)
目录 一、特征工程的作用 二、深度学习的应用 三、得分函数 四、损失函数 五、前向传播 六、反向传播 一、特征工程的作用 数据特征决定了模型的上限预处理和特征提取是最核心的算法与参数选择决定了如何逼近这个上限 二、深度学习的应用 无人驾驶人脸识别分辨率重构 深…...

Stream API将对象中的某一字段取出转换为list或数组
List<DevicePartMaintain> devicePartMaintainList devicePartMaintainMapper.selectDevicePartMaintainByMitId(mitId);所有id转换为List 要使用Stream流获取devicePartMaintainList中所有的id,您可以使用stream()方法将列表转换为流,然后使用…...

什么是Java中的JVM(Java虚拟机)?
JVM(Java虚拟机)是Java平台的核心组件之一,是一个用于执行Java字节码的虚拟计算机。Java源代码经过编译器编译,生成字节码文件(.class文件),然后由JVM来解释和执行这些字节码。JVM负责将字节码翻…...

springboot + redis + 注解 + 拦截器 实现接口幂等性校验
一、概念 幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 幂等函数或幂等方法是…...

PLC编程:关键在于模拟操作流程和实现控制
PLC编程的核心是通过程序描述流程,完成控制过程。因此,掌握PLC编程语言和基本功能实现是必要的。 PLC语言主要分为梯形图、语句和功能图。梯形图适合基本逻辑描述,语句表用于数据处理,相对较难理解。步进式功能图的状态函数描述很…...

List的各种排序
目录 Collections.sort对list进行排序 对象中某个属性进行排序 通过比较器进行比较 JAVA8特性Stream流进行排序 Stream升降序组合使用 Collections.sort对list进行排序 public static void main(String[] args) {List<Integer> list new ArrayList<>();list…...

在自定义数据集上微调Alpaca和LLaMA
本文将介绍使用LoRa在本地机器上微调Alpaca和LLaMA,我们将介绍在特定数据集上对Alpaca LoRa进行微调的整个过程,本文将涵盖数据处理、模型训练和使用流行的自然语言处理库(如Transformers和hugs Face)进行评估。此外还将介绍如何使用grado应用程序部署和…...
Python 实现接口类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)
实现抽象类的两种方式 方式一 from abc import ABCMeta from abc import abstractmethodclass BaseMessage(metaclassABCMeta):abstractmethoddef send(self,subject,body,to,name):pass 方式二 class BaseMessage(object):def send(self, subject, body, to, name):raise …...

Solr原理剖析
一、简介 Solr是一个高性能、基于Lucene的全文检索服务器。Solr对Lucene进行了扩展,提供了比Lucene更为丰富的查询语言,并实现了强大的全文检索功能、高亮显示、动态集群,具有高度的可扩展性。同时从Solr 4.0版本开始,支持SolrCl…...
解决 “无法将 ‘npm‘ 项识别为 cmdlet、函数、脚本文件或可运行程序的名称“ 错误的方法
系列文章目录 文章目录 系列文章目录前言一、错误原因:二、解决方法:三、注意事项:总结 前言 在使用 npm 进行前端项目开发时,有时会遇到错误信息 “无法将 ‘npm’ 项识别为 cmdlet、函数、脚本文件或可运行程序的名称”&#x…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...