LINUX.ORG.RU

История изменений

Исправление 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