Как сделать proxy server ?

Орден Почета
Мастер реакций
Знаток великого письма
Знаток письма
Старожил I степени
Hardware эксперт
За знание датапака
Куратор Данных
Медаль за активность на Форуме
Победитель в номинации 2016
Победитель в номинации 2015
За веру и верность форуму
За заслуги перед форумом
Сообщения
1 225
Розыгрыши
0
Репутация
1 921
Реакции
1 191
Баллы
1 808
Здравствуйте,
Интересует как сделать прокси сервер. у меня щас сервер в россии но пинг с моей страны очень высокий 250+ хочу взять например в германии и конектит через него на сервер игроков. кто подскажет как мне это сделать ?
 

Как вариант, вырезать отсюда прокси-слайдер. Тут он есть.
L2scripts_IO_24Protocol_infinite odyssey
такая реализация у меня есть. я спрашиваю именно техническую часть как сделать сам прокси сервер.

есть ведь хостинги которые продают защиту от ддоса которая проксирует айпи аддресс вот как мне сделать так чтоб когда я иду например к серверу с ip 2.2.2.2:7777 он отправил меня на 3.3.3.3:7777

 
Последнее редактирование модератором:
Обращайтесь. Посоветую помогу проконсультирую, недорого.
 
такая реализация у меня есть. я спрашиваю именно техническую часть как сделать сам прокси сервер.

есть ведь хостинги которые продают защиту от ддоса которая проксирует айпи аддресс вот как мне сделать так чтоб когда я иду например к серверу с ip 2.2.2.2:7777 он отправил меня на 3.3.3.3:7777
По мимо всего прочего, надо как то передавать ип клиента а не машины в игру)
 
такая реализация у меня есть. я спрашиваю именно техническую часть как сделать сам прокси сервер.

есть ведь хостинги которые продают защиту от ддоса которая проксирует айпи аддресс вот как мне сделать так чтоб когда я иду например к серверу с ip 2.2.2.2:7777 он отправил меня на 3.3.3.3:7777
Я ничего не понимаю.
Как тот прокси может не работать как надо? К примеру ты взял так называемый канал с защитой в России, а один где то за границей.
В той системе прописываешь один адрес России а второй скажем Америки. В патче указываешь какой канал с какой страны и игроки будут сами выбирать.
А если как выше написали ты хочешь что бы через виртуальный сервер все это проходило, то извини, на этом мои знания заканчиваются(
 
такая реализация у меня есть. я спрашиваю именно техническую часть как сделать сам прокси сервер.

есть ведь хостинги которые продают защиту от ддоса которая проксирует айпи аддресс вот как мне сделать так чтоб когда я иду например к серверу с ip 2.2.2.2:7777 он отправил меня на 3.3.3.3:7777
Что то типо такого? Ловим пакеты от клиента на одной тачке, и прокидываем их на другую.

Забыл на первой дописать, там где стрелочка это куда клиента гонять
 
Последнее редактирование модератором:
Что то типо такого? Ловим пакеты от клиента на одной тачке, и прокидываем их на другую.

Забыл на первой дописать, там где стрелочка это куда клиента гонять
О, можно в личку сорсы поглядеть для общего развития?
 
О, можно в личку сорсы поглядеть для общего развития?
Сори, это пакетник для Блесса, пилю в привате) Могу объяснить как сделать такой по аналогии

Вырезал все секретное, чекни личку)
О, можно в личку сорсы поглядеть для общего развития?
 
Последнее редактирование модератором:
ssh тунель не?
ну или

Код:
package main
import (
"bytes"
"encoding/hex"
"flag"
"fmt"
"io"
"log"
"net"
)
var localAddr *string = flag.String("l", "localhost:9999", "local address")
var remoteAddr *string = flag.String("r", "localhost:80", "remote address")
func proxyConn(conn *net.TCPConn) {
rAddr, err := net.ResolveTCPAddr("tcp", *remoteAddr)
if err != nil {
panic(err)
}
rConn, err := net.DialTCP("tcp", nil, rAddr)
if err != nil {
panic(err)
}
defer rConn.Close()
buf := &bytes.Buffer{}
for {
data := make([]byte, 256)
n, err := conn.Read(data)
if err != nil {
panic(err)
}
buf.Write(data[:n])
if data[0] == 13 && data[1] == 10 {
break
}
}
if _, err := rConn.Write(buf.Bytes()); err != nil {
panic(err)
}
log.Printf("sent:\n%v", hex.Dump(buf.Bytes()))
data := make([]byte, 1024)
n, err := rConn.Read(data)
if err != nil {
if err != io.EOF {
panic(err)
} else {
log.Printf("received err: %v", err)
}
}
log.Printf("received:\n%v", hex.Dump(data[:n]))
}
func handleConn(in <-chan *net.TCPConn, out chan<- *net.TCPConn) {
for conn := range in {
proxyConn(conn)
out <- conn
}
}
func closeConn(in <-chan *net.TCPConn) {
for conn := range in {
conn.Close()
}
}
func main() {
flag.Parse()
fmt.Printf("Listening: %v\nProxying: %v\n\n", *localAddr, *remoteAddr)
addr, err := net.ResolveTCPAddr("tcp", *localAddr)
if err != nil {
panic(err)
}
listener, err := net.ListenTCP("tcp", addr)
if err != nil {
panic(err)
}
pending, complete := make(chan *net.TCPConn), make(chan *net.TCPConn)
for i := 0; i < 5; i++ {
go handleConn(pending, complete)
}
go closeConn(complete)
for {
conn, err := listener.AcceptTCP()
if err != nil {
panic(err)
}
pending <- conn
}
}
 
Последнее редактирование модератором:
при передачи препост роутингом аут сервер будет получать айпи прокси) для передачи оригинального айпи юзера надо подымать gre/ipip
 
при передачи препост роутингом аут сервер будет получать айпи прокси) для передачи оригинального айпи юзера надо подымать gre/ipip
да помню было такое у меня раньше когда пытался сделать. спасибо что напомнил про это xD
 
Назад
Сверху Снизу