리눅스맨

c# externalip, c# ipv4 아이피 확인, c# 내 컴퓨터 아이피 확인, c# 로컬 ipv4, c# 외부 ip 가져오기

c# 외부 ip 가져오기 로컬 ipv4 아이피 함수 Function

C 프로그래밍 언어와 C++, C# 등 로컬 영역에서 동작하는 프로그램으로는 자신의 외부 아이피를 확인 할 수 없습니다. 특히 공유기를 이용하고 있고 사설 아이피로 IP를 할당 받았다면 더더욱 알수 없죠.

기껏 알수 있는 아이피는 192.168.0.1 수준의 사설 아이피뿐입니다.

c# externalip, c# ipv4 아이피 확인, c# 내 컴퓨터 아이피 확인, c# 로컬 ipv4, c# 외부 ip 가져오기
c# 외부 ip 가져오기 로컬 ipv4 아이피 함수 Function 7

C# 외부 로컬 ipv4 아이피를 알기 위해서는 아래 함수를 이용하면 바로 확인 할 수 있습니다.

인터넷이 꼭 연결되어져 있어야 합니다.

public static IPAddress GetExternalIp()
{
	string ip = string.Empty;

	try
	{
		string sourceURL = string.Empty;
		sourceURL = string.Format("https://api.tion.kr");

		WebClient client = new WebClient();
		client.Encoding = Encoding.UTF8;

		string data = client.DownloadString(string.Format("https://api.tion.kr"));


		string pattern = "(<myip>)(?<ip>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}?)(</myip>)";
		MatchCollection matches = Regex.Matches(data, pattern);

		foreach (Match match in matches)
		{
			if (match.Groups["ip"].Length > 0)
			{
				//IP 정상적으로 나오는지 확인하는부분
				//MessageBox.Show(match.Groups["ip"].Value);
				ip = match.Groups["ip"].Value;
			}
		}
	}
	catch (Exception)
	{

	}

	IPAddress externalIp = IPAddress.Parse(ip); 

	return externalIp;

}

위의 함수 소스코드는 https://api.tion.kr 사이트에서 제공하고있습니다.

위의 사이트도 제가 직접 만든 사이트입니다.

실제로 C#에서 아이피를 가져와야할 일이 많다보니 2013년부터 만들어서 앞으로 계속 사용하기 위해서 만든거라 개발하실때 만드시더라도 특별한 일 없는이상 위의 도메인을 유지할겁니다.

2017년도에 기간연장 10년치 최고 결재라서 10년치 결재했는데 벌써 4년 남았네요.

2년정도 남았을때 다시 10년 기간 연장 해놓겠습니다.

c# externalip, c# ipv4 아이피 확인, c# 내 컴퓨터 아이피 확인, c# 로컬 ipv4, c# 외부 ip 가져오기
c# 외부 ip 가져오기 로컬 ipv4 아이피 함수 Function 8

직접 C# 프로그램으로 제작해보았습니다.

아래는 제가 C#으로 직접 만든 프로그램 입니다.

c# 외부 ip 가져오기 소스코드

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ESXi_IP_Monitoring
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label_ip.Text = String.Format("{0}", GetExternalIp());
        }

        public static IPAddress GetExternalIp()
        {
            string ip = string.Empty;

            try
            {
                string sourceURL = string.Empty;
                sourceURL = string.Format("https://api.tion.kr");

                WebClient client = new WebClient();
                client.Encoding = Encoding.UTF8;

                string data = client.DownloadString(string.Format("https://api.tion.kr"));


                string pattern = "(<myip>)(?<ip>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}?)(</myip>)";
                MatchCollection matches = Regex.Matches(data, pattern);

                foreach (Match match in matches)
                {
                    if (match.Groups["ip"].Length > 0)
                    {
                        //IP 정상적으로 나오는지 확인하는 부분
                        //MessageBox.Show(match.Groups["ip"].Value);
                        ip = match.Groups["ip"].Value;
                    }
                }
            }
            catch (Exception)
            {

            }

            IPAddress externalIp = IPAddress.Parse(ip);

            return externalIp;

        }
    }
}
c# externalip, c# ipv4 아이피 확인, c# 내 컴퓨터 아이피 확인, c# 로컬 ipv4, c# 외부 ip 가져오기
c# 외부 ip 가져오기 로컬 ipv4 아이피 함수 Function 9
c# externalip, c# ipv4 아이피 확인, c# 내 컴퓨터 아이피 확인, c# 로컬 ipv4, c# 외부 ip 가져오기
c# 외부 ip 가져오기 로컬 ipv4 아이피 함수 Function 10

외부 IP를 잘 가져오는군요.

저는 이렇게 외부 IP를 자동으로 가져와서 ESXi 방화벽에 자동추가하는 시스템을 만들고 있습니다.

외부 어느지역에서도 ESXi 서버에 자유롭게 자동으로 접속하기 위한 시스템이죠.

방화벽으로 특정 IP만 접속 할 수 있도록 만들고 위의 프로그램으로 1분동안 접속 가능하도록 만들고 있습니다.

노트북을 끄는 순간 1분후에 자동으로 제가 사용하던 IP도 차단이 되는 시스템이죠.

c# externalip, c# ipv4 아이피 확인, c# 내 컴퓨터 아이피 확인, c# 로컬 ipv4, c# 외부 ip 가져오기
c# 외부 ip 가져오기 로컬 ipv4 아이피 함수 Function 11

보안으로 인해서 작년 말부터 고생을 하고 있어 이부분을 확실히 하고 있습니다.

보안이 필요하신 분들 계시면 말씀주세요.


게시됨

카테고리

, ,

작성자

태그: