0. За chmod - сорьки, писал с таблетки, спьяну недотыкал стилусом...
1. Зачем в принципе нужен dnsmasq? Он выполняет 2 функции: а). Может служить DHCP сервером. б). Форвардит (т.е. не форвардит, а сам за клиентов спрашивает) клиентские DNS запросы на вышестоящие DNS-сервера (по-умолчанию, те, что написаны в /etc/resolv.conf). Если нет необходимости использовать - можно и не использовать

Но лично мне удобнее конфигурить шлюз так, чтобы и IP шлюза и IP DNS-сервера в локалке был одинаков - меньше адресов запоминать... Для работы squid - dnsmasq не нужен (у squid есть собственный dns-ресолвер), я его использую для корректной работы тех сервисов, что идут в обход сквида.
2. В iptables нужно писать соединения так, как они присутствуют в системе. Т.е. если, например, по команде
ifconfig -a
Получаем такой вывод:
eth0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.151.27 Bcast:192.168.151.255 Mask:255.255.255.0
inet6 addr: fe80::21b:24ff:fea5:99b7/64 Диапазон:Ссылка
ВВЕРХ BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:29149 errors:0 dropped:0 overruns:0 frame:0
TX packets:19246 errors:0 dropped:0 overruns:0 carrier:0
коллизии:0 txqueuelen:1000
RX bytes:27215033 (27.2 MB) TX bytes:2826318 (2.8 MB)
Прервано:220 Base address:0xc000
eth1 Link encap:Ethernet HWaddr 00:00:00:00:00:01
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21b:24ff:fea5:99b7/64 Диапазон:Ссылка
ВВЕРХ BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:29149 errors:0 dropped:0 overruns:0 frame:0
TX packets:19246 errors:0 dropped:0 overruns:0 carrier:0
коллизии:0 txqueuelen:1000
RX bytes:27215033 (27.2 MB) TX bytes:2826318 (2.8 MB)
Прервано:220 Base address:0xc000
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Диапазон:Узел
ВВЕРХ LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
коллизии:0 txqueuelen:0
RX bytes:100 (100.0 B) TX bytes:100 (100.0 B)
При этом - внешний (интернетовый) канал подключен к eth0, а внутренний (локалака) к eth1 - то пишем в iptables все аналогично rc.firewall.txt
Если же IP динамические - см. dhcp.firewall.txt (там неприменима (ну, по крайней мере сразу) переменная $INET_IP) - т.к. мы заранее не знаем, какой IP нам даст DHCP сервер. И соответственно в таблице nat, в цепочке POSTROUTING нужно применять не SNAT, а MASQUERADE.
3. В случае с АД - сквид и самс умеют работать авторизацией из АД. Сам такое не настраивал, так что могу только отправить читать об этом
сюда и
сюда.
4. В принципе - да. Только команда iptables-save создает не скрипт, а некий "свой" файл, который потом можно считать обратно iptables-restore. Я в предыдущем посте давал ссылку на учебник по iptables - там работа этих команд достаточно хорошо описана. Вообще тот учебник сильно стоит почитать, 90% вопросов отпадут сами собой.