LINUX.ORG.RU
решено ФорумAdmin

iptables

 , ,


0

1

Доброго времени суток.Есть пк,на нём два адаптера. eth0 - по нему приходит интерне и wlan0 - к нему подключаются устройства.

  • ip адрес eth0 - 192.168.1.5
  • Wlan0 при подключении к нему устройства выдает адрес 10.42.0.235

Посередине находится redsocks,такая схема

  • eth0-->redsocks(127.0.0.1:12345)-->wlan0
  • wlan0->redsocks(127.0.0.1:12345)->eth0
  • iptables -t nat -N REDSOCKS
  • iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
  • iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
  • iptables -t nat -A REDSOCKS -d 127.0 .0.0 / 8 -j RETURN
  • iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
  • iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
  • iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
  • iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
  • iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
  • iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-port 12345

После этих правил,при подключении к wlan0 - ip на устройстве - мой,а днс - от прокси

Я не могу понять,что ещё надо дописать,чтобы завернуть весь трафик через редсокс на wlan0 и обратно.



Последнее исправление: andreich (всего исправлений: 1)

Откуда вы взяли эти правила? REDIRECT засовывают к конец цепочки REDSOCKS, и в эту цепочку направляют трафик с ″-i wlan0″.

После этих правил,при подключении к wlan0 - ip на устройстве - мой,а днс - от прокси

Не понял. redsocks не влияет на выдаваемый устройству ip и dns.

mky ★★★★★
()
Ответ на: комментарий от mky

Не понял. redsocks не влияет на выдаваемый устройству ip и dns

ну т.е. я вышел в интернет через прокси,прописанный в редсоксе.

Откуда вы взяли эти правила

Гуглил,со 2 по 8 это блокировка зарезервированых ip

REDIRECT засовывают к конец цепочки REDSOCKS, и в эту цепочку направляют трафик с ″-i wlan0

iptables -t nat -A REDSOCKS -i wlan0 -j REDIRECT

я правильно вас понял?

andreich
() автор топика
Ответ на: комментарий от andreich

Да, правильно. И здесь https://crosp.net/blog/administration/install-configure-redsocks-proxy-centos... примерный список правил, там из OUTPUT и PREROUTING отправляют в -j REDSOCKS, а не в -j REDIRECT.

По поводу DNS всё сложно. Исходно клиент отправляет запрос по udp, с udp redsocks не работает. Этот dns-запрос по udp можно оборвать с помощью dnstc, и тогда клиент, в теории, должен пойти через tcp, который можно завернуть в REDSOCKS (-p tcp --dport 53). На практике, не все DNS-клиенты повторяют запрос по tcp, если по udp не получилось... Некоторые советуют ставить powerdns (pdnsd), настраивать чтобы он ходил только по tcp, заворачивать его в REDSOCKS, а все DNS-запросы от клиентов заворачивать на него. Точнее не скажу, сам не пробовал.

mky ★★★★★
()
Ответ на: комментарий от mky

уважаемый mky, вы бы могли более подробно помочь с настройкой iptable?

andreich
() автор топика

Чтобы хоть как-то запустить со стороны iptables нужны только два правила:

iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-port 12345
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 443 -j REDIRECT --to-port 12345

redsock при этом должен слушать на ip адресе wlan0 или '0.0.0.0.0'

PS: Если redsock выставлять на '0.0.0.0' надо не забыть его прикрыть правилами.

ival ★★
()
Ответ на: комментарий от ival

redsock при этом должен слушать на ip адресе wlan0 или '0.0.0.0.0'

Каким правилом это показать?

Если redsock выставлять на '0.0.0.0' надо не забыть его прикрыть правилам

у меня выставлено на 127.0.0.1:12345 - какое правило его «прикроет» ?

andreich
() автор топика
Ответ на: комментарий от andreich

Каким правилом это показать?

На каком адресе слушать должно настраиваться в конфиге самой прокси.

redsocks {
    local_ip  = 0.0.0.0;
}

Проверяется командой

netstat -tnl | grep 12345 

у меня выставлено на 127.0.0.1:12345 - какое правило его «прикроет» ?

127.0.0.1 прикрывать не надо :) И работать будет только для локальных пакетов, пришедщих с lo :)

Еще забыл. Чтобы редирект заработал, возможно нужно еще сделать:

sysctl net.ipv4.ip_forward=1 

После того, как заработает, не забудь донастроить. Описанная мной простая конфигурация небезопасна!

ival ★★
()
Ответ на: комментарий от ival

А еще dns. Про dns тебе уже говорили. Судя по вопросам, ты делаешь что-то не то.

ival ★★
()
Ответ на: комментарий от ival
  • iptables -t nat -N REDSOCKS
  • iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
  • iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
  • iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURNroot@kali:/opt/redsocks# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-port 12345
  • iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 443 -j REDIRECT --to-port 12345
  • iptables -t nat -A REDSOCKS -i wlan0 -j REDIRECT

Интернет на устройстве подключеном через wla0 - пропадает,пинг есть

netstat -tnl | grep 12345

tcp 0 0 127.0.0.1:12345 0.0.0.0* LISTEN

andreich
() автор топика
Ответ на: комментарий от andreich

Интернет на устройстве подключеном через wla0 - пропадает,пинг есть

Есчо бы. Инетовкий трафик заворачивается на <wlan0 ip>:12345 и получает connection refused, ибо

tcp 0 0 127.0.0.1:12345 0.0.0.0* LISTEN

прокся слушает на 127.0.0.1

ival ★★
()
Ответ на: комментарий от andreich

Как это исправить?

Подправить redsocks.conf и перезапустить.

redsocks {
     local_ip = <wlan0_ip>
}

wlan0 ip можно узнать командой

ip addr show dev wlan0
ival ★★
()
Ответ на: комментарий от ival

после всех манипуляций.

проверка порта

  • netstat -tnl | grep 12345

Проверка ip wifi

  • netstat -tnl | grep 10.42.0.1

tcp 0 0 10.42.0.1:53 0.0.0.0:* LISTEN

andreich
() автор топика
Ответ на: комментарий от mky

По поводу DNS всё сложно. Исходно клиент отправляет запрос по udp, с udp redsocks не работает. Этот dns-запрос по udp можно оборвать с помощью dnstc, и тогда клиент, в теории, должен пойти через tcp, который можно завернуть в REDSOCKS (-p tcp --dport 53)

можно поподробнее?

andreich
() автор топика
Ответ на: комментарий от andreich

Перенаправить DNS-запрос на основе UDP через TCP-соединение
Отправка DNS-запроса через TCP-соединение является одним из способов предотвращения отравления DNS. Вы можете перенаправить все DNS-запросы на основе UDP через TCP-соединение со следующим разделом конфигурации.

  • tcpdns {
  • // Transform UDP DNS requests into TCP DNS requests.
  • // You can also redirect connections to external TCP DNS server to
  • // REDSOCKS transparent proxy via iptables.
  • local_ip = 192.168.1.1; // Local server to act as DNS server
  • local_port = 1053; // UDP port to receive UDP DNS requests
  • tcpdns1 = 8.8.4.4; // DNS server that supports TCP DNS requests
  • tcpdns2 = 8.8.8.8; // DNS server that supports TCP DNS requests
  • timeout = 4; // Timeout value for TCP DNS
  • requests
  • }

Затем вы можете перенаправить все ваши DNS-запросы на локальный IP-порт, сконфигурированный выше с помощью iptables, или просто изменить свой DNS-сервер DNS по умолчанию по умолчанию как локальный IP-порт, сконфигурированный выше.

Эта секция у меня не стартует.

1529711111.882182 err redsocks.c:475 redsocks_shutdown(...) [10.42.0.235:56090->185.5.137.171:443]: shutdown(client, SHUT_WR): Transport endpoint is not connected
1529711133.360666 err redsocks.c:475 redsocks_shutdown(...) [10.42.0.235:56109->149.154.167.51:80]: shutdown(client, SHUT_WR): Transport endpoint is not connect

andreich
() автор топика
Ответ на: комментарий от andreich

НЕ подскажете как udp завернуть в прокси?

Unbound вешаешь на не 53 порт к примеру 7535, конфигурируешь его чтобы он отправлял исходящие запросы по tcp протоколу. Редериктом днс запросы с 53 порта гонишь на 7535. т.е. твои днс запросы пойдут на 7535, а кэш. днс сервер отправит их на 53 port по tcp на порт который слушает редсокс.

anonymous
()
Ответ на: комментарий от anonymous

Редериктом днс запросы с 53 порта гонишь на 7535. т.е. твои днс запросы пойдут на 7535, а кэш. днс сервер отправит их на 53 port по tcp на порт который слушает редсокс.

Спасибо,это правилом для iptables надо будет указывать?

andreich
() автор топика
Ответ на: комментарий от anonymous

установил Unbound

[root@localhost redsocks2]# unbound-control status
/etc/unbound/unbound.conf:247: error: expected deny, refuse, deny_non_local, refuse_non_local, allow or allow_snoop in access control action
read /etc/unbound/unbound.conf failed: 1 errors in configuration file

Не могу понять,что я сделал не так,гугл мне не помог.Я так понимаю,что ошибка в файле конфигурации.Помогите найти ошибку.

Файл конфигурации Unbound

https://dropmefiles.com/PNvq9

andreich
() автор топика
Ответ на: комментарий от anonymous

в итоге решил всё без unbound,ну практически всё

разраб redsocks подсказал кое что,но в итоге пропал интернет и раздача ip на локальную машину.На «роутере» идёт полная подмена днс.

Seems you are trying to use redsocks to redirect traffic from local machine. In this case, you need to do redirection in OUTPUT chain instead of PREROUTING chain.

For tcpdns, three options:

1. fill the redsocks' local server, 192.168.1.5:10053 in your case, into DNSMASQ's config as upstream DNS server.
2. Fill 192.168.1.5:10053 in your resolv.conf
3. Redirect UDP DNS request to 192.168.1.5:10053 in OUTPUT chain.

Не понял как это сделать

into DNSMASQ's config as upstream DNS server.

Вот правила iptables

https://dropmefiles.com/DB91e

Может кто подсказать,где я ошибся?

andreich
() автор топика
Ответ на: комментарий от anonymous

днс не поменялся

-A OUTPUT -p udp --dport 53 -j DNAT --to-destination 192.168.1.5:10053

на роутере идёт подмена днс,устройства не подrлючатся по wlan0(dhcp не работает)

-A OUTPUT -p udp -j DNAT --to-destination 192.168.1.5:10053

andreich
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.