Я пытался без успеха установить прозрачный прокси на маршрутизаторе как компьютер. Большинство примеров, которые я нашел, не имеет шлюза и прокси на том же компьютере, таким образом, я могу смотреть на неправильные примеры. Вот то, как мой компьютер 'маршрутизатора' является установкой:
Мои текущие iptables устанавливают сценарий (да, это очень просто и позволяет слишком много. Я заблокирую его вниз намного лучше после того, как я получу прозрачную работу прокси):
LAN="wlp4s0"
WAN="enp3s0"
PROXY_PORT="8080"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
#handle unmatched traffic
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
### Allow Loopback
iptables -A INPUT -i lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
#rules for NAT
iptables -A FORWARD -o $WAN -i $LAN -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
Вот различные правила, которые я попробовал:
#I quickly get a 'website unavailable' message with this one
iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
И
#Requests timeout with this one
iptables -t nat -A PREROUTING -i $LAN -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
И
#Requests timeout with this one also
iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j DNAT --to 192.168.0.0:$PROXY_PORT
У кого-либо есть какие-либо идеи, что я делаю неправильно? Я пропускаю другие правила или имею существующие правила, которые портят его?
Я понял это. Тот факт, что первое правило iptables -t nat -A PREROUTING -i $ LAN -p tcp --dport 80 -j REDIRECT --to-port $ PROXY_PORT
не истекало по таймауту, но возвращалось с ошибка сразу была ключом.
Dansguardian настроен на прослушивание 127.0.0.1, но не 192.168.0.1 (IP-адрес сервера). Мои тесты telnet раньше использовали 127.0.0.1. Как только я попробовал протестировать telnet на 192.168.0.1, я быстро понял проблему.