Хочется: Нат + прозрачный прокси.Должно работать на любой версии ubuntu
Дано:
eth0: 192.168.1.3, смотрит в adsl сторону модема. Интернет.
eth1: 192.168.0.1, смотрит в локальную сеть которой нужен интернет.
Первым делом правим rc.local, приводим к такому виду.#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Сбросить правила и удалить цепочки, чистим. Для случаев когда нужно пересбросить правила.
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#Правила для запуска SNAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 192.168.1.3
#Правило для прозрачного прокси, в сквиде указан порт 3128.
iptables -t nat -A PREROUTING -p tcp -s 192.168.0.0/24 -d ! 192.168.0.0/24 --dport 80 -j REDIRECT --to-port 8031
#Открываем Фовардинг
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "1" > /proc/sys/net/ipv4/ip_forward
exit 0
Устанавливаем сквид
sudo apt-get install squid
Приступаем к его настройке!Ищем где прописывается порт, по умолчанию это http_port 3128
заменяем на.
http_port 3128 transparent
раскомментировать эту строчку.
cache_dir ufs /var/spool/squid 100 16 256
Размер кэша можно увеличить, для большей экономии.
Ищем слово our_networks, 2 строки подряд закоментированы.
приводим к след виду.
acl our_networks src 192.168.0.0/24
http_access allow our_networks
в конце файла добавляем строку
visible_hostname proxy
теперь под рутом пересоздаем кэш
#squid -z
Запускаем
/etc/init.d/squid restart
запускаем скрипт с прописанным натом под рутом
#sh /etc/rc.local
Итог:Ну вот, интернет побежал по локалке. Все у кого прописан шлюз 192.168.0.1, могут пользоваться интернетом.
Заодно получили некоторую экономию в трафике. Если кеш был увеличен, к примеру до 10 гигабайт. После изменения параметров кэша, обязательно перегрузите его командой с правами root "squid -z".
PS: Поправил правило прозрачного прокси. Теперь то что пренадлежит локальной сети не заворачивается на прокси.