2

Запуск Ubuntu 12.10 на amd64.

Я пытаюсь настроить различные правила маршрутизации для конкретного пользователя. Я понимаю, что правильный способ сделать это - создать правило брандмауэра, которое помечает пакеты для этого пользователя, и добавить правило маршрутизации для этой метки. Чтобы начать тестирование, я добавил правило, которое отбрасывает все пакеты как недостижимые:

# ip rule
0:  from all lookup local
32765:  from all fwmark 0x1 unreachable
32766:  from all lookup main
32767:  from all lookup default

С этим правилом и всеми цепочками брандмауэров во всех таблицах и политикой ПРИНЯТЬ я все еще могу пинговать удаленные хосты так же хорошо, как и любого пользователя.

Если я затем добавлю правило, чтобы пометить все пакеты и попытаться пропинговать Google, он потерпит неудачу, как ожидалось

# iptables -t mangle -F OUTPUT
# iptables -t mangle -A OUTPUT -j MARK --set-mark 0x01
# ping www.google.com
ping: unknown host www.google.com

Если я ограничу это правило для пользователя VPN, оно, похоже, не даст никакого эффекта.

# iptables -t mangle -F OUTPUT
# iptables -t mangle -A OUTPUT -j MARK --set-mark 0x01 -m owner --uid-owner vpn
# sudo -u vpn ping www.google.com
PING www.google.com (173.194.78.103) 56(84) bytes of data.
64 bytes from wg-in-f103.1e100.net (173.194.78.103): icmp_req=1 ttl=50 time=36.6 ms

Но похоже, что отметка установлена, потому что, если я добавлю правило для удаления этих пакетов в брандмауэре, это сработает:

# iptables -t mangle -A OUTPUT -j DROP -m mark --mark 0x01
# sudo -u vpn ping www.google.com
ping: unknown host www.google.com

Что мне не хватает? Спасибо!

1 ответ1

2

Ping настроен так, что у него есть разрешение на создание ICMP-пакетов - возможно, это также препятствует тому, чтобы он поднял метку брандмауэра. Если я попробую сделать это в тестовом окне и использовать dig или telnet в моих тестовых примерах, маршрут политики будет выглядеть правильно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .