Здравствуйте, господа!
Появилась задача, но увы с iptables я знаком поверхностно.
Имеется:
- Шлюз 192.168.0.1 (DNS, DHCP, iptables)
- Прокси 192.168.0.222 (прозрачный squid)
- Сервера 192.168.0.2-10 (трафик проксировать не нужно)
- Клиенты 192.168.0.100-110 (пул DHCP, пускаем через squid)
На машине прокси с одним интерфейсом развернут прозрачный squid. Хочется весь трафик от клиентов по 80 и 443 порту пускать через него, а все что осталось отправлять прямиком на шлюз.
Вижу 2 варианта реализации:
1) На серверах статикой указан основным шлюзом 192.168.0.1, а клиенты в свою очередь получают DHCP с шлюзом 192.168.0.222 (sqid). Тем самым сервера минуют squid, а клиенты ходят к основному шлюзу через него.
На прокси необходимо пробросить входящий трафик 80/443 через кальмара, все остальное пропускаем дальше на шлюз
net.ipv4.ip_forward в sysctl включил
В данный момент пробовал так, но не удалось:
# Чистим iptable
iptables -F
iptables -X
iptables --table nat -F
iptables --table nat -X
iptables --table mangle -F
iptables --table mangle -X
# Направляем 80 и 443 порт через squid
iptables -t nat -A PREROUTING -i ens192 -s 192.168.0.0/24 -d 192.168.0.0/24 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i ens192 -s 192.168.0.0/24 -d 192.168.0.0/24 -p tcp --dport 443 -j ACCEPT
iptables -t nat -A PREROUTING -i ens192 -s 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192.168.0.222:3128
iptables -t nat -A PREROUTING -i ens192 -s 192.168.0.0/24 -p tcp --dport 443 -j DNAT --to 192.168.0.222:3129
# Пропускаем DNS c шлюза
iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to 192.168.0.1:53
iptables -t nat -A OUTPUT -p tcp --dport 53 -j DNAT --to 192.168.0.1:53
iptables -t nat -I POSTROUTING -o ens192 -s 192.168.0.0/24 -d 192.168.0.222 -p tcp -j SNAT --to 192.168.0.1
iptables -I FORWARD -i ens192 -o ens192 -s 192.168.0.0/24 -d 192.168.0.222 -p tcp --dport 3128 -j ACCEPT
iptables -I FORWARD -i ens192 -o ens192 -s 192.168.0.0/24 -d 192.168.0.222 -p tcp --dport 3129 -j ACCEPT
2) Второй вариант, на шлюзе пишется правило, что необходимо для диапазана 192.168.0.100-110 входящий трафик по 80/443 завернуть на 192.168.0.222:3128
Набросал что-то такое.
iptables -t nat -A PREROUTING -s ! 192.168.0.100-110 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.222:3128
iptables -t nat -A PREROUTING -s ! 192.168.0.100-110 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.222:3129
iptables -t nat -A POSTROUTING -s ! 192.168.0.222 -p tcp -d 192.168.0.222 -j SNAT --to-source 192.168.0.1
iptables -A FORWARD -s 192.168.0.100-110 -j ACCEPT
Сильно экспериментировать не могу, т.к. все находится в работе.