История изменений
Исправление www_linux_org_ru, (текущая версия) :
технически можно, практически - нет (я про крупных хостеров, с миллионами сайтов, а не локалхосты)
все там можно — есть xen-хостинги к примеру
но все равно — линуксовое ядро жиреет, и чем дальше, тем больше превращается в говновинду
а что еще ожидать от этого троечника торвальдса?! неужели правильного дизайна сетевой подсистемы?!
каков должен быть правильный дизайн:
1. libudp4, libtcpip4, libnat4, libsctp4, ... libupd6, libtcpip6, libsctp6, ... работающие в *пространстве пользователя*
2. со стороны ядра только *минимальная* поддержка, грубо говоря сводящаяся к *запретить* (и возможно к *перекинуть в другой канал*); это необходимо, скажем, для создания безопасных *локальных* сеток
т.е. ядро имеет понятие о ip-адресе интерфейса, дает минимальные средства управления того, что видно снаружи (скажем, выставить ip адрес), но основное, чем оно занимается — это (почти не глядя) перекидывает пакетики от скажем libtcpip4 на реальную железку либо к другому процессу (для логгинга скажем); при этом оно совершенно не интересуется содержимым пакета, за исключением *отдельных* полей пакета по *отдельным* смещениям — и это только для того, чтобы не выпустить в сеть пакет, скажем, с forged source IP address (и то, это отключаемо, т.к. м.б. нужно не всегда), от процесса с юзер-идом, которому запрещено лазить в сеть, пакет с неизвестным ядру протоколом (если у юзера нет таких привелегий) и т.п.
ядро *не делает* никаких выделений памяти, созданий хэш-массивов-по-ip-адресам, таблиц-mac-адресов и всего прочего, что может выжрать память и представляет хоть как-то сложную задачу
смещения отдельных полей в пакетах — это практически все, что нужно знать ядру, и таким образом оно становится непробиваемо (из сети) — т.е. рут исключен; кроме того, вполне возможно, юзеры для надежности захотят пускать libtcpip4 отдельным процессом, тогда взломщик вообще получает ровно то, что взломал — т.е. неперсистентный доступ в сеть (не сохраняющийся при перезапуске процесса)
бонусом идет профит по удобному тюнингу ip-стека под каждый процесс и легкому написанию своих кастомных протоколов; удобство учета ресурсов (просветите — можно ли сейчас ограничить *полный* размер памяти, занимаемый пакетами, лежащие в backlog-очереди интфейса, в зависимости от юзера, которому эти пакеты предназначены? а в зависимости от процесса, которому эти пакеты пришли? или же «защищенный» (бугага) линукс предоставляет каждому юзеру отличную возможность задосить тачку, выжрав всю память backlog-ом?)
интересует мнение собравшихся, в т.ч. tailgunner, true_admin, imul
Исходная версия www_linux_org_ru, :
технически можно, практически - нет (я про крупных хостеров, с миллионами сайтов, а не локалхосты)
все там можно — есть xen-хостинги к примеру
но все равно — линуксовое ядро жиреет, и чем дальше, тем больше превращается в говновинду
а что еще ожидать от этого троечника торвальдса?! неужели правильного дизайна сетевой подсистемы?!
каков должен быть правильный дизайн:
1. libudp4, libtcpip4, libnat4, libsctp4, ... libupd6, libtcpip6, libsctp6, ... работающие в *пространстве пользователя*
2. со стороны ядра только *минимальная* поддержка, грубо говоря сводящееся к *запретить* (и возможно к *перекинуть в другой канал*); это необходимо, скажем, для создания безопасных *локальных* сеток
т.е. ядро имеет понятие о ip-адресе интерфейса, дает минимальные средства управления того, что видно снаружи (скажем, выставить ip адрес), но основное, чем оно занимается — это (почти не глядя) перекидывает пакетики от скажем libtcpip4 на реальную железку либо к другому процессу (для логгинга скажем); при этом оно совершенно не интересуется содержимым пакета, за исключением *отдельных* полей пакета по *отдельным* смещениям — и это только для того, чтобы не выпустить в сеть пакет, скажем, с forged source IP address (и то, это отключаемо, т.к. м.б. нужно не всегда), от процесса с юзер-идом, которому запрещено лазить в сеть, пакет с неизвестным ядру протоколом (если у юзера нет таких привелегий) и т.п.
ядро *не делает* никаких выделений памяти, созданий хэш-массивов-по-ip-адресам, таблиц-mac-адресов и всего прочего, что может выжрать память и представляет хоть как-то сложную задачу
смещения отдельных полей в пакетах — это практически все, что нужно знать ядру, и таким образом оно становится непробиваемо (из сети) — т.е. рут исключен; кроме того, вполне возможно, юзеры для надежности захотят пускать libtcpip4 отдельным процессом, тогда взломщик вообще получает ровно то, что взломал — т.е. неперсистентный доступ в сеть (не сохраняющийся при перезапуске процесса)
бонусом идет профит по удобному тюнингу ip-стека под каждый процесс и легкому написанию своих кастомных протоколов; удобство учета ресурсов (просветите — можно ли сейчас ограничить размер памяти, занимаемый пакетами, лежащие в backlog-очереди интфейса, в зависимости от юзера, которому эти пакеты предназначены? а в зависимости от процесса, которому эти пакеты пришли? или же «защищенный» (бугага) линукс предоставляет каждому юзеру отличную возможность задосить тачку, выжрав всю память backlog-ом?)
интересует мнение собравшихся, в т.ч. tailgunner, true_admin, imul