Для тестовых задач создал две виртуалки в
Виртуалбоксе — сервер и клиент. Обе виртуалки ставил с образа диска
Debian 9.3.0 Netinst CD с архитектурой amd64). Виртуальная машина ’server’ выступает в роли DHCP-, DNS- и прокси-сервера, а также шлюза для машины ’client’. Выкладываю тут последовательность действий, чтобы потом не забыть и использовать в дальнейшем. Действия рутинные, доступны в любом мануале, но для быстроты воспроизведения собрал их здесь вместе.
Показать
Оглавление

| | Сервер. Имеет 2 сетевых интерфейса — enp0s3 (WAN — <DHCP>, сетевой мост во внешнюю сеть) и enp0s8 (LAN — 192.168.17.1/24, внутренняя сеть).
|
Ставлю нужный софт:
apt-get install aptitude isc-dhcp-server squid3 bind9 dnsutils sudo most fping nmap net-tools mc ccze
Перейти к оглавлению
Делаю автовход в любой консоли, для этого в файле /lib/systemd/system/getty@.service прописываю юзера для автологина
ExecStart=-/sbin/agetty --noclear -a <юзер> %I $TERM
Перейти к оглавлению
Настраиваю сетевые интерфейсы в /etc/network/interfaces
auto lo enp0s3 enp0s8
iface lo inet loopback
iface enp0s3 inet dhcp
up iptables -A INPUT -p icmp -m icmp --icmp-type 3 -j DROP
iface enp0s8 inet static
ipaddr 192.168.17.1
netmask 255.255.255.0
broadcast 192.168.17.255
Перейти к оглавлению
Добавляю узлы в /etc/hosts:
127.0.1.1 server
192.168.17.10 client
Перейти к оглавлению
Запрещаю IPv6 в /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Разрешаю форвард там же
net.ipv4.ip_forward = 1
Перейти к оглавлению
Настраиваю DHCP-сервер: в файле /etc/default/isc-dhcp-server указываю
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
DHCPDv4_PID=/var/run/dhcpd.pid
INTERFACESv4="enp9s8"
В файле /etc/dhcp/dhcpd.conf
option domain-name "<домен>";
option domain-name-servers 192.168.17.1, 4.2.2.2;
subnet 192.168.17.0 netmask 255.255.255.0 {
range 192.168.17.10 192.168.17.50;
option routers 192.168.17.1;
}
и перезагружаю сервис
systemctl restart isc-dhcp-server.service
Перейти к оглавлению
Настройка DNS-сервера — в работе
Перейти к оглавлению
Настраиваю маскарадинг:
iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
iptables -t nat -A POSTROUTING -o enp0s3 -s 192.168.17.0/24 -j MASQUERADE
iptables -A FORWARD -i enp0s3 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i enp0s3 -o enp0s8 -j REJECT
Перейти к оглавлению
Делаю бэкап /etc/squid/squid.conf в /etc/squid/backup-squid.conf, затем прописываю настройки сквида:
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
acl CONNECT method CONNECT
acl MyNet src 192.168.17.0/24
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow MyNet
http_access deny all
http_port 192.168.17.1:3128 transparent
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
cache_mem 512 MB
maximum_object_size_in_memory 512 KB
cache_dir ufs /var/squid_cache 1024 16 256
maximum_object_size 2 MB
https_port 192.168.17.1:3128 transparent ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/root/keys/squid.pem key=/root/keys/squid.key
sslproxy_flags DONT_VERIFY_PEER
sslproxy_cert_error allow all
always_direct allow all
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
создаю директорию для кэша сквида и дэ-начу весь траф с внутренней сети на прокси:
mkdir -p /var/squid_cache
chmod o+w /var/squid_cache
iptables -t nat -A PREROUTING -i enp0s8 ! -d 192.168.17.0/24 -p tcp -m multiport --dport 80,443 -j DNAT --to 192.168.17.1:3128
Перейти к оглавлению

| | Клиент. Имеет 1 сетевую — enp0s3 (LAN — <DHCP>, внутренняя сеть).
|
Ставлю софт:
apt-get install aptitude dnsutils sudo most fping nmap net-tools mc ccze
Перейти к оглавлению
Делаю автовход в любой консоли (по аналогии с сервером), для этого прописываю автологинящегося пользователя в файле /lib/systemd/system/getty@.service:
ExecStart=-/sbin/agetty --noclear -a <юзер> %I $TERM
Перейти к оглавлению
Настраиваю сетевой интерфейс в /etc/network/interfaces
auto lo enp0s3 enp0s3
iface enp0s3 inet dhcp
up iptables -A INPUT -p icmp -m icmp --icmp-type 3 -j DROP
Перейти к оглавлению
Добавляю узлы в /etc/hosts:
127.0.1.1 client
192.168.17.1 server
Перейти к оглавлению