Почему изменения в iptables не вступают в силу?

1

Я пытаюсь настроить OpenVPN для использования Tor в качестве прокси в Liberte. Когда я запускаю openvpn от имени пользователя root, я получаю следующий ответ:

Tue May 13 15:15:18 2014 Attempting to establish TCP connection with 127.0.0.1:9050 [nonblock]
Tue May 13 15:15:20 2014 TCP: connecto to 127.0.0.1:9050 failed, will try again in 5 seconds: No route to host

Я предполагаю, что это связано со следующей настройкой:

# Tor access via SOCKS only for main user and Privoxy
iptables -A OUTPUT -o lo -p tcp -m owner --uid-owner ${luser} --syn -d 127.0.0.1 --dport 9050 -j ACCEPT
iptables -A OUTPUT -o lo -p tcp -m owner --uid-owner privoxy  --syn -d 127.0.0.1 --dport 9050 -j ACCEPT
iptables -A OUTPUT       -p tcp                               --syn -d 127.0.0.1 --dport 9050 -j LOGREJECT

Потому что, когда я пытаюсь запустить openvpn как обычный пользователь (anon), он подключается без проблем. Вместо этого он сталкивается с некоторыми другими конфликтами разрешений позже при выполнении.

Поэтому я попытался запустить следующее:

iptables -A OUTPUT -o lo -p tcp -m owner --uid-owner root  --syn -d 127.0.0.1 --dport 9050 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables restart

И, конечно же, изменения появляются, когда я делаю iptables -L.

Но я все еще получаю ту же ошибку при попытке запустить openvpn. Так почему же изменения не вступят в силу?

Джон
источник
Довольно непонятно, что ты делаешь. Вы пытаетесь сделать это: [you] -> [OpenVPN] -> [Tor] -> [Destination Site] или что-то еще?
LawrenceC
Я пытаюсь сделать: Я -> OpenVPN -> Tor -> VPN-сервер -> Назначение.
Джон

Ответы:

1

Вот мои мысли:

Когда вы добавляете новое правило, используя iptables, оно привязывается к правилу в конце цепочки.

Таким образом, ваша цепочка, вероятно, выглядит следующим образом после выполнения этой команды:

# Tor access via SOCKS only for main user and Privoxy
iptables -A OUTPUT -o lo -p tcp -m owner --uid-owner ${luser} --syn -d 127.0.0.1 --dport 9050 -j ACCEPT
iptables -A OUTPUT -o lo -p tcp -m owner --uid-owner privoxy  --syn -d 127.0.0.1 --dport 9050 -j ACCEPT
iptables -A OUTPUT       -p tcp                               --syn -d 127.0.0.1 --dport 9050 -j LOGREJECT
iptables -A OUTPUT -o lo -p tcp -m owner --uid-owner root  --syn -d 127.0.0.1 --dport 9050 -j ACCEPT

Пакет, принадлежащий корню, срабатывает в правиле LOGREJECT, поскольку он появляется перед окончательным правилом ACCEPT. Вам нужно оформить 4-ю строку до 3-й.

LawrenceC
источник
Спасибо за ваш ответ. Это имеет смысл. И это на самом деле пришло мне в голову. Но я понятия не имею, как бы я удалил 3-ю строку перед тем, как вставить новую. Я посмотрю, смогу ли я понять это и принять ваш ответ, если он сработает.
Джон