Прием сокетов только с определенных IP - PullRequest
0 голосов
/ 10 июля 2011

Мой игровой сервер теперь принимает сокеты от каждого. Но как я могу заблокировать определенные IP-адреса от атаки? Вы знаете, если они хотели бы разбить мой сервер или что-то. Я использую библиотеку SFML, C ++.

Ответы [ 3 ]

2 голосов
/ 10 июля 2011

При использовании TCP, когда ваша программа (или используемая вами библиотека) вызывает accept(2), вторым аргументом является вывод, который сообщает вам адрес клиента.

При использовании UDP нет соединений, но естьравен recvfrom(2), что так же, как accept(2), дает адрес партнера.Таким образом, вы можете игнорировать одноранговые узлы, которые вам не нравятся.

Или вы можете запустить свой сервер за каким-то брандмауэром и добавить туда правила, или использовать iptables или аналогичный в качестве программного брандмауэра на хост-компьютере.1008 *

В SFML у вас есть SocketTCP::Accept и SocketUDP::Receive, каждый из которых даст вам адрес партнера, если вы передадите пустой адрес в качестве аргумента.

0 голосов
/ 15 июля 2011

В Windows WinSock 2.x имеет необязательный параметр обратного вызова для WSAAccept(), который можно использовать для условного принятия / отклонения запросов на подключение.Клиентский IP / порт является одним из доступных параметров.

0 голосов
/ 10 июля 2011

Я не знаю какого-либо конкретного метода для блокировки некоторых ips, но вы, несомненно, можете отклонить запрос (возможно, запрос на соединение в вашем случае) после определения исходного ip. Вести список заблокированных IP-адресов (или IP-адресов из черного списка) (сделать его также настраиваемым для упрощения добавления / удаления) и отклонить запрос, если он поступает с одного из IP-адресов, включенных в черный список.

...