Сервер и клиент Debian для тестов
Для тестовых задач создал две виртуалки в Виртуалбоксе — сервер и клиент. Обе виртуалки ставил с образа диска 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
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
127.0.1.1 client 192.168.17.1 server