Как можно собрать пакет udp в openvpn? - PullRequest
0 голосов
/ 04 апреля 2020

Учитывая, что openvpn - это сервер udp, работающий через порт 1194, мне интересно узнать, как я могу отправить пакет, используя udp c#.

Мне известно о том, что openVpn является протоколом Сам, и учитывая отсутствие знаний в этой области, я начал писать простой клиент udp для отправки сообщения на сервер.

Вот код.

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace ConnectOpenVPN
{

    public struct Received
    {
        public IPEndPoint Sender;
        public string Message;
    }

    abstract class UdpBase
    {
        protected UdpClient Client;

        protected UdpBase()
        {
            Client = new UdpClient();
        }

        public async Task<Received> Receive()
        {
            var result = await Client.ReceiveAsync();
            return new Received()
            {
                Message = Encoding.ASCII.GetString(result.Buffer, 0, result.Buffer.Length),
                Sender = result.RemoteEndPoint
            };
        }
    }


    //Client
    class UdpUser : UdpBase
    {
        private UdpUser() { }

        public static UdpUser ConnectTo(IPAddress serverIP, int port)
        {
            var connection = new UdpUser();
            connection.Client.Connect(serverIP, port);
            return connection;
        }

        public void Send(string message)
        {
            var datagram = Encoding.ASCII.GetBytes(message);
            Client.Send(datagram, datagram.Length);
        }

    }

    class Program
    {
        static void Main(string[] args)
        {

            //create a new client
            var client = UdpUser.ConnectTo(IPAddress.Parse("13.23.118.17"), 1194);


            Task.Run(async () => {
                while (true)
                {
                    try
                    {
                        var received = await client.Receive();
                        Console.WriteLine(received.Message);
                        if (received.Message.Contains("quit"))
                            break;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        Console.ReadLine();
                    }
                }
            });

            string read;
            do
            {
                read = Console.ReadLine();
                client.Send(read);
            } while (read != "quit");
        }
    }
}

Итак, я невозможно получить какое-либо сообщение с сервера и просто остроумие навсегда. Даже не отказано или исключение.

Я планировал отправить учетные данные и конфигурацию openvpn следующим образом.

Что я должен делать при создании клиентской программы для открытого клиента vpn? Правильно ли создание UDP-клиента или я должен использовать протокол openVPn и как?

...