
//通过ip138网站来查询外网IP的
#include <afxineth>
void CLanChatDlg::GetNetIP()
{
SetDlgItemText(IDC_NET_IP,"正在获取外网IP");
CString strsource;
CString Address;
CInternetSession mySession(NULL,0);
C>
网站搭建在内网,外网需要访问,就要做IIS 内网端口映射,要进行端口映射,首先需要了解清楚服务程序所需要映射的端口是多少,部分服务需要映射的默认服务端口号。
网站----TCP----80
FTP ----TCP----21(控制端口)
TCP----20(此端口为数据传输端口,不需要映射)
以下讲解几款市面主流品牌路由器的端口映射设置如下:
D-LINK DI624+A
例如内网1921680188是一台FTP服务器,FTP服务端口默认为21,需要在路由器上映射21端口到内网的服务器上,设置如下:
登陆路由器,默认的管理IP地址为19216801账号admin密码为空。
点路由器的进阶设定—虚拟服务器进行设置,首先需要在上方点激活,此项设置才生效。
网域名称:此处可随意填写;
个人IP地址:此处填写为内网服务器的IP地址1921680188;
个人服务端口与公用服务端这2项均设置成21;
排程设置成任何时间,最后点击执行,保存此设置。
腾达402M
需要将TCP2006端口映射到192168058。设置方法如下:
登陆路由器点击虚拟服务器,第一个选项设置为启用,
常用端口不需要选择,常用端口之后设置为2006,
IP地址设置为192168058,协议选择为TCP,设置完成后点击后面的添加按钮。
Tp-link R460+
内网1921681101是WEB服务器。
TP-LINK系列路由器的默认管理地址为19216801,账号admin密码admin 登录到路由器的管理界面,
点击路由器的转发规则—虚拟服务器—添加新条目。
1、企业网内部的工作站通过出口路由器的NAT转换能够上Internet网。 2、企业网(目前来说大部分是教育网)内部有一些服务器,如图中的Server,本身具有私网IP地址10003,而且需要被公网所访问,所以需要在企业网的出口处对其做静态NAT转换,将其转换为一个公网IP地址2005。企业外部的公网用户通过该服务器公网IP或解析后的域名对其进行访问,而企业内部的工作站如果使用公网上的一台DNS,那么也将使用域名对该服务器进行访问。 3、企业网(目前来说大部分是教育网)内部还有一些服务器,如图中的Game-Server,它本身具有公网IP地址,它也既需要被私网用户所访问,也需要被公网用户所访问。三、解决方案 1、常规配置: 就按照拓扑图中的配置方法,WorkStation应该是可以访问到服务器Server的,只不过需要公网路由器的参与。具体过程是WorkStation发出一个以Server的公网IP(2005)为目标地址的数据包,源地址是10002,这个数据包经过Router时,它会首先遵从路由表进行路由, 2005这个地址虽然属于运营商分给我们的一段公网IP的一部分,但由于该地址并不与任何接口同属一个网段,所以路由器只会按照缺省路由路由这个数据包到公网路由器,从物理端口向外发出时,NAT会起作用,这个数据包的源IP会被替换为2001(地址池里的第一个地址)。当公网路由器收到这个数据包时,它查目标地址所在网段,发现这个地址已经被分给该企业网,所以会遵从那条路由将该数据包发回到Router。此时这个数据包的源IP是2001,目标IP为2005,Router查NAT表发现2005这个公网IP应按照配置了的静态NAT表项转换为10003,所以当路由器把这个数据包发给Server时,数据包的目的IP就被转换成了10003,而源IP仍为2001。当Server回复这个数据包时也按照对等的方式返回WorkStation。总结地说,就是这个过程是需要公网路由器参与完成的,而公网设备对我们来说是不可控的,所以当公网路由器因为某种原因拒绝参与这个过程时(比如出口链路断),这种访问方式将变为不可行。而且数据包要在企业网与公网的路由器之间走了一个环,浪费了带宽及设备的性能资源。
采用这种方法时,我从WorkStation上用tracert命令数据包的行走路径,更清晰地反应了这一过程: C:\Documents and Settings\bluephoenix>tracert 2005 Tracing route to 2005 over a maximum of 30 hops 1 <1 ms <1 ms <1 ms 10001
2 <1 ms <1 ms <1 ms 1112
3 Request timed out
4 3 ms 3 ms 3 ms 2005 2、DNS解析 不论私网用户和公网用户他们访问服务器时实际上一般都是通过DNS来完成的。让私网用户将DNS指向私网内的一台可管理DNS也可以解决这个问题,即修改DNS中关于Server的解析记录,让其指向Server的私网IP即可,改过之后用户就可以使用通常的域名对该服务器进行访问了,只不过该过程是透明的,用户并不知道已经使用了私网IP在进行访问。 这种方法对我们来说比较轻松,没有给我们增加维护成本,请大家尽量说服用户采用这样的方法,但该方法应用场合有限,如果私网用户非要使用公网IP地址而不是域名来对Server进行访问,这种方法就行不通了,那就必须采取第三种方法。 3、loopback与策略路由法 Router的配置步骤为: (1) 建立loopback接口,随便配置一个IP地址,并将其设为ip nat ouse (2) 建立Access-list,用来匹配私网客户端访问Server以及Server做回应的数据流 (3) 定义policy-route table,设置策略缺省路由指向loopback接口,设置ip policy-route enable。 (4) 定义route-map,设定匹配Access-list的数据流都使用策略路由;并将这一route-map应用到接口。 (5) 建立一个null 0接口,并由ip nat pool所形成的路由指向null 0接口,以防止不能命中NAT规则的报文在企业网路由器和公网路由器之间震荡。(这一步不是必须的,但为了稳定起见,建议作这一步;另外只能在这种方法中使用指向null 0的路由,如果在第一种方法中使用了,那么数据包将不会在企业网路由器和公网路由器之间环游一周,而直接被陷在企业网路由器中了,将导致第一种方法失败。)
在路由器上有一个选项叫虚拟服务器,在那里面设置。如果是WEB服务器,比如说内部地址192168110 使用的默认端口是80。 那么就在虚拟服务器里填上 对外开放的端口可以自己填写,选择80也可以,内部192168110 端口80
外网访问时输入路由器的外接口地址就可以了。
1 准备工作:
11 安装Java 17及以上版本,执行java -version命令检查安装是否正确;
12 安装并启动wampserver;
2 实现步骤:
21 GitHub上下载并解压holer软件包holer-clientzip;
22 修改holer配置文件;
开源社区公开的holer access key信息如下:
---------------------------------------------
Access Key : HOLER_CLIENT-2A623FCB6E2A7D1D
---------------------------------------------
Domain Name : holer65532wdomnet
Internet Address : holerorg:65532
Local Address : 127001:80
---------------------------------------------
修改配置文件:
holer-client/conf/holerconf
更新配置如下:
HOLER_ACCESS_KEY=HOLER_CLIENT-2A623FCB6E2A7D1D
23 注意事项:
如果您的wampserver端口是8080或者8088请在社区上已公开的access key列表里选择匹配的端口所对应的key值进行修改。
如果您的wampserver端口不在公开的列表里,建议将本地的wampserver端口修改为公开列表里的端口80或者8080或者8088,否则无法访问映射后的公网地址。
24 启动holer服务
进入目录: holer-client/bin
Windows系统执行命令:双击startupbat或者打开CMD窗口进入目录下执行命令startupbat
Linux系统执行命令: sh startupsh
25 访问映射后的公网地址
浏览器里输入如下URL,就可在公网上也能访问到了本地的wampserver了。
>
以上就是关于用C语言编写程序如何获得外网的IP的地址全部的内容,包括:用C语言编写程序如何获得外网的IP的地址、电脑如何使用内网和外网、网站通过iis发布之后,如何在外网访问等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)