外网如何获取内网的IP?

标签:内网ipstring外网ip

摘要:
内部网络IP只能在内部网络LAN中访问和连接,而不能在外部网络中访问。如果没有路由或路由没有公共IP地址,则需要使用第三方打开的nat123端口映射网络来帮助外部网络访问内部网络。端口映射网络辅助的优点是它适用于任何网络环境。外部网络接入内部网络的实现过程:1.在内部网络中安装并启用nat123端口映射。添加映射,配置内部和外部网络映射信息,并与内部网络IP端口和外部网络自己的域名相对应。默认域名可以直接用于Internet地址。

  内网IP只能在内网局域网访问连接,在外网是不能认识内网IP不能访问的。有路由权限,且路由有固定公网IP,可以通过路由的端口映射,实现外网访问内网。如无路由,或路由无公网IP,需要借助第三方开放的nat123端口映射网络辅助实现外网访问内网。

  端口映射网络辅助的好处是适用于任何网络环境,外网访问内网的实现过程:

  1.在内网安装并启用nat123端口映射。添加映射,配置内外网映射信息,对应内网IP端口和外网自己的域名。外网地址可直接使用提示默认域名。

外网如何获取内网的IP?第1张

  

  2.NAT映射后,通过域名访问,即可以连接内网对应IP应用。

其他答案

最近看到一些对IP的操作,感觉不错,而且以后可能会用到,所以收集过来,以备以后使用.

1.获取MAC地址操作:

using System;
using System.Runtime.InteropServices;

namespace UtilityControl
{
/// <summary>
/// 关于IP地址的若干操作
/// </summary>
public class IP
{
public IP()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);

/// <summary>
/// 根据ip得到网卡mac地址
/// </summary>
/// <param name="ip">给出的ip地址</param>
/// <returns>对应ip的网卡mac地址</returns>
public static Int64 GetMACByIP(string ip)
{
Int32 ldest= inet_addr(ip); //目的地的ip
try
{
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP(ldest,0, ref macinfo, ref len);
return macinfo;
}
catch(Exception err)
{
Console.WriteLine("Error:{0}",err.Message);
}
return 0;
}
}
}

-----------------------------------------------------------------

用C#编写获取远程IP,MAC的方法

[DllImport("Iphlpapi.dll")]
private static unsafe extern int SendARP(Int32 dest,Int32 host,ref IntPtr mac,ref IntPtr length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);

Int32 ldest= inet_addr("157.60.68.163");//目的地的ip
Int32 lhost= inet_addr("157.60.68.33");//本地的ip

try
{
Byte[] macinfo=new Byte[6];
Int32 length=6;

IntPtr mac=new IntPtr(macinfo[0]);
IntPtr len=new IntPtr(6);
int ii=SendARP(ldest,lhost, ref mac, ref len);

Console.WriteLine("Mac Add:"+mac);
Console.WriteLine("length:"+len);

}
catch(Exception err)
{
Console.WriteLine(err);
}

-----------------------------------------------

用WMI
使用时首先添加System.Management.dll,然后引用
using System.Management;
using System.Threading;
{
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"] == true)
Response.Write("MAC address"+mo["MacAddress"].ToString()+"<br/>");
mo.Dispose();
}
}

2.手动设置IP或设置动态IP

如果是winform的话,需要添加对System.Management.dll的引用

然后使用下面的类就可以实现你的前2个要求:
namespace modify
{
public class ChangeIP
{

public static readonly System.Version myVersion = new System.Version(1, 1);
private ManagementBaseObject iObj = null;
private ManagementBaseObject oObj = null;
private ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
private readonly ManagementObjectCollection moc;

/// <summary>
/// example:
/// <code>
/// ArLi.CommonPrj.ChangeIP o = new ArLi.CommonPrj.ChangeIP();
/// string[] ipList = new string[]{"192.168.0.253","192.168.0.250"};
/// string[] subnetList = new string[]{"255.255.255.0","255.255.255.0"};
/// o.ChangeTo(ipList,subnetList);
/// </code>
/// </summary>
public ChangeIP()
{
moc = mc.GetInstances();
}

/// <summary>cortrol</summary>
/// <param name="ipAddr">IPAddr List</param>
/// <param name="subnetMask">subnetMask List</param>
public void ChangeTo(string[] ipAddr, string[] subnetMask)
{
foreach (ManagementObject mo in moc)
{
if (!(bool)mo["IPEnabled"]) continue;

iObj = mo.GetMethodParameters("EnableStatic");
iObj["IPAddress"] = ipAddr;
iObj["SubnetMask"] = subnetMask;
oObj = mo.InvokeMethod("EnableStatic", iObj, null);
}
}

/// <summary>cortrol</summary>
/// <param name="ipAddr">IPAddr List</param>
/// <param name="subnetMask">subnetMask List</param>
/// <param name="gateways">gateway List</param>
/// <param name="gatewayCostMetric">gateway CostMetric List, example: 1</param>
public void ChangeTo(string[] ipAddr, string[] subnetMask, string[] gateways, string[] gatewayCostMetric)
{
foreach (ManagementObject mo in moc)
{
if (!(bool)mo["IPEnabled"]) continue;

iObj = mo.GetMethodParameters("EnableStatic");
iObj["IPAddress"] = ipAddr;
iObj["SubnetMask"] = subnetMask;
oObj = mo.InvokeMethod("EnableStatic", iObj, null);

iObj = mo.GetMethodParameters("SetGateways");
iObj["DefaultIPGateway"] = gateways;
iObj["GatewayCostMetric"] = gatewayCostMetric;
oObj = mo.InvokeMethod("SetGateways", iObj, null);
}
}

/// <summary>cortrol</summary>
/// <param name="ipAddr">IPAddr List</param>
/// <param name="subnetMask">subnetMask List</param>
/// <param name="gateways">gateway List</param>
/// <param name="gatewayCostMetric">gateway CostMetric List, example: 1</param>
/// <param name="dnsServer">DNSServer List</param>
public void ChangeTo(string[] ipAddr, string[] subnetMask, string[] gateways, string[] gatewayCostMetric, string[] dnsServer)
{
foreach (ManagementObject mo in moc)
{
if (!(bool)mo["IPEnabled"]) continue;

iObj = mo.GetMethodParameters("EnableStatic");
iObj["IPAddress"] = ipAddr;
iObj["SubnetMask"] = subnetMask;
oObj = mo.InvokeMethod("EnableStatic", iObj, null);

iObj = mo.GetMethodParameters("SetGateways");
iObj["DefaultIPGateway"] = gateways;
iObj["GatewayCostMetric"] = gatewayCostMetric;
oObj = mo.InvokeMethod("SetGateways", iObj, null);

iObj = mo.GetMethodParameters("SetDNSServerSearchOrder");
iObj["DNSServerSearchOrder"] = dnsServer;
oObj = mo.InvokeMethod("SetDNSServerSearchOrder", iObj, null);
}
}

/// <summary>DHCPEnabled</summary>
public void EnableDHCP()
{
foreach (ManagementObject mo in moc)
{
if (!(bool)mo["IPEnabled"]) continue;

if (!(bool)mo["DHCPEnabled"])
{
iObj = mo.GetMethodParameters("EnableDHCP");
oObj = mo.InvokeMethod("EnableDHCP", iObj, null);
}
}
}
}
}

测试代码:
using System.Management;
using modify;
namespace WindowsApplication13
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//对第二个问题验证
ChangeIP test = new ChangeIP();
string[] str1 = new string[] {"192.168.1.5"};
string[] str2 = new string[] { "255.255.255.0" };
test.ChangeTo(str1, str2);

MessageBox.Show("IP已经更改,请验证");

//对第一个问题的验证,如果IP可用,当前并不是自动获取IP,这时下面的方法会自动获取IP
test.EnableDHCP();
}
}
}

其他答案

需要把内网的ip设置,放到公网上,外网自然就获取到了内网ip。

其他答案

外网如何获取内网的IP?第2张

外网如何获取内网的IP?第3张

外网如何获取内网的IP?第4张

内网SVN应用使用场景时,使用nat123内网穿透客户端登录并添加443https应用类型映射方式。

对于办公OA、ERP等不收录的WEB网站,使用非80网站应用类型映射方式以实现外网的访问。

外网访问内网服务器时,如外网远程桌面和SSH内网LINUX机,都可以使用非网站应用类型映射方式实现外网的访问。

其他答案

不能

世界上的IP有多少个?

IP地址分为五类:ABCDE。常用的IP地址是A、B和C,它们都有固定的格式。详细谈论它们是非常麻烦的。你可以上网查书。此外,您提到的IP地址还不够:IP地址分为公共IP地址和私有IP地址。只有公共IP地址可以标记网络上的主机,但公共IP地址很少。因此,存在可以重复使用的私有IP地址,例如192.168.0.1。只要私有IP地址不是同一个LAN,就可...

怎么使用花生壳设置外网IP

首先,在花生壳中申请域名。你只要打开花生壳,登录,你的域名就绑定到你的IP上了。每次你上网时,尽管你的IP地址不同,但如果有人点击你的域名,它会自动解析为你当前的IP地址。如果您在需要设置服务器IP的地方输入花生壳域名,则数据库IP应该是本地的,即127.0.0.1可以在gnway中找到其他答案

radmin viewer 怎样可以在外网动态IP上面使用

是的,如果服务器的IP地址是动态的,其外部IP地址将更改。对该IP地址的访问将连接到拨号路由。如果您的服务器位于此路由器后面,则需要执行NAT映射。外部网络端口为4889,内部网络IP地址为受控端的内部网络IP。如果计算机是通过DHCP获得的,则需要为计算机设置静态IP地址。对于其他答案,我使用了一个名为“兔子”IP代理的软件。您可以设置自动切换IP...

如何用自己的电脑建立服务器

其他答案:如何使用自己的计算机构建服务器(虚拟机)

能不能修改外网ip地址

有些人使用cookie来识别是否是同一台机器。您可以尝试删除本地cookie文件,然后注册它。Internet IP地址不能随意更改。如果您独立拨号并且自动分配了IP地址,则可以使用此命令释放IP地址并获取新的IP地址。如果您在intranet中,它将无法工作。

怎么把内网IP转换成外网IP

如果要更改为内部网络的专用IP,则应连接路由器的其他应答。局域网的IP无法转换为公共IP。路由器的局域网IP是192.168.1。-这是由路由器的DHCP服务器分配的。外部网络由网络运营商分配,无法更改。其他答案:当DHCP分配给路由器下的intranet时,intranet IP将自动转移到internet IP进行访问。这说起来太麻烦了。你最好从...

如何查询电脑的ip地址?学会这个方法,你也可以成为电脑高手

查询计算机的IP地址,分为内部网络IP和外部网络IP。具体方法如下:首先,内网IP的查询方法是局域网的IP地址。您可以在打开的对话框中找到ip地址。单击支持选项以显示网络连接状态、IP地址、子网掩码和默认网关。此时,可以显示IP地址、子网掩码、默认网关和其他信息。好的,关于计算机...

如果不知道内网的ip网段地址分配情况,用什么命令获知?

有两种计算机IP地址:静态IP地址和DHCP动态IP地址。如果是静态IP地址,我不知道intranet IP地址的配置,所以我必须逐一尝试。如果DHCP动态获取IP,通常DHCP服务器会先为您分配一个临时IP地址。如果您想访问Internet,您将跳转到身份验证界面。身份验证后,...

电信说好的独享宽带呢?竟背着客户偷偷地把公网IP改成内网IP

我问她,“你电信为什么不提前告诉用户?你偷偷地把公共IP改成了私人IP?现在我用不起我的网络摄像头了。”电信姐姐很长一段时间说,现在IPV4地址不够用,而且国内有文件,所以她把公共IP换成了私人。现在,中国电信在我不知情的情况下偷偷更改了内网IP地址。首先,它侵犯了用户的知情权和...