Методы обхода брандмауэра в исходном коде - PullRequest
1 голос
/ 16 февраля 2011

Я планирую написать программное обеспечение, вроде p2p, которое должно обходить брандмауэр. Я знаю, что есть много способов обойти брандмауэры с использованием многих сторонних инструментов, как из моих поисков в Google. Однако я не смог получить много результатов о том, как написать программное обеспечение p2p, которое может выходить за пределы брандмауэра и подключаться к узлам.

Поэтому мой вопрос заключается в том, чтобы знать алгоритмы или методы, которые я могу использовать в своем исходном коде для обхода брандмауэров - как брандмауэров NAT, так и программных / персональных брандмауэров.

Пожалуйста, помогите мне понять, как сделать это с вашими предложениями или прошлым опытом.

Спасибо

Ответы [ 4 ]

3 голосов
/ 16 февраля 2011

Может быть, это вам поможет?http://samy.pl/pwnat/

Также вы можете взглянуть на реализацию UPnP.

2 голосов
/ 16 февраля 2011

Во-первых, вы должны использовать uPnP и Протокол шлюза Интернета , если он доступен для переадресации портов в брандмауэре.Если он недоступен, используйте методы перфорации TCP .

0 голосов
/ 16 февраля 2011

Брандмауэры, как правило, разрешают исходящий трафик, но блокируют входящий трафик, если не существует ранее существующего сеанса.Для TCP это легко: после установления соединения брандмауэр разрешит соединение в обоих направлениях.

Для UDP это немного сложнее, так как нет понятия сеанса.Такие протоколы, как DNS на основе UDP, являются протоколами ответа на запрос, поэтому после отправки клиентом запроса ожидается ответ от сервера.Брандмауэр регистрирует запрос на заданном порту и позволяет ответу возвращаться через короткое время.

Таким образом, одна хитрость заключается в том, что если вы ожидаете, что UDP-трафик отправит небольшое количество мусорных данных.Это будет игнорироваться сервером, но, надеюсь, откроет брандмауэр, чтобы разрешить входящий трафик.

0 голосов
/ 16 февраля 2011

IIRC, одна из техник, которая работает хорошо, - это запускать все через обычный старый HTTP на порту 80. Это работает, потому что большинство брандмауэров пропускают HTTP-трафик, чтобы разрешить просмотр веб-страниц.

Смысл в том, что это не очень эффективный подход по сравнению с чем-то специализированным для p2p, и он не гарантированно работает, потому что есть некоторые брандмауэры, которые достаточно умны, чтобы обнаружить, когда HTTP злоупотребляет таким образом. Некоторые также ограничат доступ к порту 80 специально для предотвращения подобных вещей.

...