Назад | Перейти на главную страницу

сбой gethostbyname и таймауты сети в тюрьме

У меня есть капля FreeBSD DigitalOcean, в которой я следил это руководство именно для создания тюрьмы. Проблема в том, что я не могу получить надежное сетевое соединение внутри тюрьмы. Делать curl https://www.google.com/ Я получаю задержку примерно в 1 минуту при попытке подключиться к серверу:

После второй звездочки соединение установилось очень и очень быстро. С участием ping Я получаю 100% потерю пакетов и иногда не могу разрешить имена хостов. Это не сработает во время одной команды, но затем сработает после небольшой задержки, прежде чем я попробую следующую.

Я попытался ssh -T git@github.com чтобы убедиться, что SSH работает надежно, и я, кажется, всегда могу получить соединение (когда работает поиск имени хоста).

У меня эти проблемы только в джейле, а не на хосте.

Проблема где-то в сети DigitalOcean. Некоторые другие пользователи Twitter сообщили о той же проблеме и перешли на AWS с такой же точный настройка работает на 100% нормально.

Ну ты не можешь ping из тюрьмы, если вы специально не разрешили. Это так по умолчанию, потому что это вызывает проблемы с безопасностью. Вы можете позволить тюрьме ping, но вы должны делать это только в том случае, если у вас действительно нет другого решения. Подробнее об этом там.

Теперь вместо использования ping, вы могли бы использовать host чтобы проверить, в порядке ли сетевое соединение:

# host google.com

Для curl вопрос: в pf.conf вы должны включить tcp и udp для порта http (и, возможно, https тоже, если он вам нужен), но также включить udp для порта dns. Что-то вроде:

pass in on $ext_if proto { tcp, udp } from any to $ext_if port $webports
pass out on $ext_if proto { tcp, udp } from $ext_if to any port $webports 

pass out on $ext_if proto udp from $ext_if to any port $dns_port

Где вы должны были определить webports и dns_port в соответствии с вашими потребностями.

Кроме того, следуя инструкциям, вы сделали копию файла /etc/resolv.conf вашего хоста. Возможно, проверьте, что в нем, в зависимости от конфигурации вашего хоста, в некоторых случаях он может не работать в тюрьмах.

PS: что касается ошибки gethostbyname, это написано в вашем заголовке, но не упомянуто в вашем сообщении. Это может относиться к конфигурации / etc / hosts, но не могу сказать больше.