- Вопрос или проблема
- Ответ или решение
- Основные ошибки в конфигурации iptables для маршрутизации через ShadowSocks TProxy
- 1. Правильность правил маршрутизации
- 2. Проверка IP-адресов и диапазонов
- 3. Отсутствие правила для UDP трафика
- 4. Проверка на наличие ошибок
- 5. Правило Маркировки Пакетов
- 6. Запуск сервера
- Заключение
Вопрос или проблема
Я пытаюсь перенаправить весь трафик на свою точку доступа ShadowSocks
tproxy, настраивая iptables
, однако трафик не только не перенаправляется на прокси, я не думаю, что это что-то сделало. Я выполнил следующие команды, чтобы настроить iptables
и запустить ShadowSocks Tproxy(ss-redir)
. Обратите внимание, что я следовал странице Github Shadowsocks
# Создать новую цепочку
iptables -t nat -N SHADOWSOCKS
iptables -t mangle -N SHADOWSOCKS
# Игнорировать адреса вашего сервера shadowsocks
# Это очень ВАЖНО, будьте осторожны.
iptables -t nat -A SHADOWSOCKS -d ServerIP -j RETURN
# Игнорировать локальные сети и любые другие адреса, которые вы хотите обойти прокси
# Смотрите Википедию и RFC5735 для полного списка зарезервированных сетей.
# Смотрите ashi009/bestroutetb для высоко оптимизированного списка маршрутов CHN.
iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 240.0.0.0/4 -j RETURN
# Все остальное должно быть перенаправлено на локальный порт shadowsocks
iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 12345
# Добавьте любые правила UDP
ip route add local default dev lo table 100
ip rule add fwmark 1 lookup 100
iptables -t mangle -A SHADOWSOCKS -p udp --dport 53 -j TPROXY --on-port 12345 --tproxy-mark 0x01/0x01
# Примените правила
iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS
iptables -t mangle -A PREROUTING -j SHADOWSOCKS
# Запустите shadowsocks-redir
ss-redir -s SeverIP -p SeverPort -m chacha20-ietf-poly1305 -k 6d2b5b66-0d3f-4189-a547-501eb658879a -b 127.0.0.1 -l 12345 --no-delay -v -u < /dev/null &>>/var/log/ss-redir.log &
Все команды не вернули ошибку, поэтому я проверил текущую конфигурацию
$ iptables -t nat -L -n -v
Цепочка PREROUTING (политика ACCEPT 524 пакетов, 204K байт)
pkts bytes target prot opt in out source destination
0 0 SHADOWSOCKS 6 -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка INPUT (политика ACCEPT 0 пакетов, 0 байт)
pkts bytes target prot opt in out source destination
Цепочка OUTPUT (политика ACCEPT 0 пакетов, 0 байт)
pkts bytes target prot opt in out source destination
Цепочка POSTROUTING (политика ACCEPT 0 пакетов, 0 байт)
pkts bytes target prot opt in out source destination
Цепочка SHADOWSOCKS (1 ссылка)
pkts bytes target prot opt in out source destination
0 0 RETURN 0 -- * * 0.0.0.0/0 120.233.31.53
0 0 RETURN 0 -- * * 0.0.0.0/0 0.0.0.0/8
0 0 RETURN 0 -- * * 0.0.0.0/0 10.0.0.0/8
0 0 RETURN 0 -- * * 0.0.0.0/0 127.0.0.0/8
0 0 RETURN 0 -- * * 0.0.0.0/0 169.254.0.0/16
0 0 RETURN 0 -- * * 0.0.0.0/0 172.16.0.0/12
0 0 RETURN 0 -- * * 0.0.0.0/0 192.168.0.0/16
0 0 RETURN 0 -- * * 0.0.0.0/0 224.0.0.0/4
0 0 RETURN 0 -- * * 0.0.0.0/0 240.0.0.0/4
0 0 REDIRECT 6 -- * * 0.0.0.0/0 0.0.0.0/0 редирект на порты 12345
После всей этой настройки я ожидал увидеть, что iptables перенаправляет все мои сети на локальный сервер и порт shadowsocks 12345
, но ничего не было перенаправлено, все пакеты просто маршрутизировались идеально, как и до установки NAT. Конфигурация NAT, похоже, ничего не сделала.
Ответ или решение
Основные ошибки в конфигурации iptables
для маршрутизации через ShadowSocks TProxy
При настройке iptables
для маршрутизации трафика через ShadowSocks с использованием TProxy, можно столкнуться с различными проблемами. Рассмотрим ошибки и недочеты в приведенной конфигурации, которые могут препятствовать корректной работе этого решения.
1. Правильность правил маршрутизации
Ваш регистратор iptables
создан, и вы создали два новых цепочки (SHADOWSOCKS
) для NAT и mangle, что является правильным шагом. Однако вы не указали, чтобы пакеты, соответствующие определённым условиям, передавались в эти цепочки.
- Убедитесь, что в цепочке PREROUTING для NAT ваши пакеты действительно соответствуют условиям, которые вы задали.
iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS
Эта команда должна включать пакет, если он соответствует правилам в цепочке SHADOWSOCKS. Если она не сработает, это может значить, что пакет TCP не подходит под ваши условия.
2. Проверка IP-адресов и диапазонов
Проверьте, правильно ли вы указали IP-адрес вашего сервера ShadowSocks. Обратите внимание, что вы используете ServerIP
в своих правилах, убедитесь, что вы заменили это на фактический адрес вашего сервера.
3. Отсутствие правила для UDP трафика
Вы включили правило для маршрутизации UDP трафика, однако, если у вас нет просьбы на UDP в правилах NAT, пакеты могут не обрабатываться корректно. Необходимо добавить маршрутизацию для других UDP портов, которые планируете использовать.
iptables -t mangle -A PREROUTING -p udp --dport <ваш_порт> -j TPROXY --on-port 12345 --tproxy-mark 0x01/0x01
4. Проверка на наличие ошибок
По итогам конфигурации вы можете проверить текущие настройки правил с помощью следующей команды:
iptables -t nat -L -n -v
iptables -t mangle -L -n -v
Обратите внимание на количество пакетов и байт, проходящих через каждое правило. Если все равно ноль, это значит, что правила не применяются.
5. Правило Маркировки Пакетов
Проверьте, правильно ли вы маркируете трафик. В вашем случае трафику должно быть присвоено значение маркировки, и для этого нужны дополнительные команды:
iptables -t mangle -A PREROUTING -p tcp -j TPROXY --on-port 12345 --tproxy-mark 0x01/0x01
6. Запуск сервера
Убедитесь, что сервер ss-redir
запущен правильно. Обратите внимание на ошибки в выводе лога, которые могли бы указать на неправильную работу:
ss-redir -s <ServerIP> -p <ServerPort> -m chacha20-ietf-poly1305 -k <ваш_ключ> -b 127.0.0.1 -l 12345 --no-delay -v -u < /dev/null &>> /var/log/ss-redir.log &
Заключение
Эти рекомендации могут помочь вам идентифицировать и устранить основные ошибки в конфигурации iptables
. Убедитесь, что все правила правильно применяются, проверьте адреса и порты, и внимательно следите за выводами логов вашего приложения и настроек iptables
. Если после всех проверок проблема не будет устранена, возможно, стоит рассмотреть вопросы совместимости с версией операционной системы или обновление пакетов.