Чи можу я обмежити користувача (та їх додатки) одним мережевим інтерфейсом?


15

Я фактично маю два сценарії, щоб застосувати це:

  1. Багатосезонний робочий стіл: два мережевих з'єднання як з Інтернет-шлюзами, так і з двома обліковими записами, що виконують завдання, що займають пропускну здатність на кожному. Я хочу розділити їх, щоб один обліковий запис використовував лише eth0, а другий - лише eth1.

  2. Сервер: У мене є два IP-адреси на сервері, і я хочу переконатися, що користувач пошти надсилає електронну пошту лише з другого IP-адреси (псевдонім eth0: 1)

Другий, ймовірно, може бути IPTabled (я просто не знаю, як) спрямовувати трафік електронної пошти через цей інтерфейс, але перший стосуватиметься всілякого трафіку, тому його потрібно базувати на користувачі. Якщо є користувацьке рішення, я можу застосувати це в обох місцях.

Відповіді:


6

Ви хочете використовувати модуль власника iptables і, можливо, якийсь розумний манґлінг пакетів.

Власник Цей модуль намагається співставити різні характеристики творця пакетів для локально генерованих пакетів. Він дійсний лише у ланцюзі OUTPUT, і навіть тоді деякі пакети (наприклад, відповіді ICMP ping) можуть не мати власника, а значить, ніколи не збігаються.

--uid-owner userid Відповідає, якщо пакет був створений процесом із заданим ефективним (числовим) ідентифікатором користувача.

--gid-owner groupid Збігається, якщо пакет був створений процесом із заданим ефективним (числовим) ідентифікатором групи.

- processid-owner processid Збіг, якщо пакет був створений процесом із заданим ідентифікатором процесу.

--sid-owner sessionid Відповідає, якщо пакет був створений процесом у даній сесійній групі.


Ви можете використовувати iptables для встановлення позначки, яку потім можна використовувати в таблиці маршрутизації. Дивіться цілі MARK та CONNMARK. У iproute, його тодішньому «ip правилі, додайте fwmark X ...» Насправді я не здивуюсь, якщо iproute2 поодинці може це зробити ...
derobert

3
Будучи людиною, яка велику роботу з узгодженням власників, можу сказати, що це не завжди дасть бажаний результат. Тобто, не всі пакети мають власника, як ви очікуєте. ICMP і ESP - це типи, які належать ядру (або root) незалежно від вихідної програми і не будуть узгоджені -m owner. Це досить надійно з TCP та UDP, але інші типи не такі надійні. Тільки надійний спосіб досягнення цього 100% є з ВМ або контейнерів.
bahamat


1

Я не впевнений, що це можливо для першого пункту. Ви хочете зробити деякі маніпуляції з маршрутизацією на основі userid користувача. Востаннє я перевіряв, що не бачив такої можливості.

По-друге, це не iptables, які ви хочете використовувати, але iproute2 (http://lartc.org/howto/ та http://www.policyrouting.org/iproute2.doc.html для повного документа). Це заміна команд ifconfig / route, оскільки вони вважаються застарілими. iproute2 дозволяють yo маршрутизувати пакети відповідно до джерела. Ось чого ти хочеш

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.