#!/usr/bin/env bash
set -euo pipefail

/usr/sbin/ip netns del client 2>/dev/null || true
/usr/sbin/ip netns del server 2>/dev/null || true
/usr/sbin/ip link del fw-village 2>/dev/null || true
/usr/sbin/ip link del fw-server 2>/dev/null || true

/usr/sbin/ip netns add client
/usr/sbin/ip netns add server

/usr/sbin/ip link add fw-village type veth peer name client-eth
/usr/sbin/ip link add fw-server type veth peer name server-eth

/usr/sbin/ip link set client-eth netns client
/usr/sbin/ip link set server-eth netns server

/usr/sbin/ip addr add 192.168.10.1/24 dev fw-village
/usr/sbin/ip addr add 192.168.20.1/24 dev fw-server
/usr/sbin/ip link set fw-village up
/usr/sbin/ip link set fw-server up
/usr/sbin/ip link set lo up

/usr/sbin/ip -n client link set lo up
/usr/sbin/ip -n client addr add 192.168.10.11/24 dev client-eth
/usr/sbin/ip -n client link set client-eth up
/usr/sbin/ip -n client route add default via 192.168.10.1

/usr/sbin/ip -n server link set lo up
/usr/sbin/ip -n server addr add 192.168.20.10/24 dev server-eth
/usr/sbin/ip -n server addr add 192.168.20.20/24 dev server-eth
/usr/sbin/ip -n server link set server-eth up
/usr/sbin/ip -n server route add default via 192.168.20.1

sysctl -w net.ipv4.ip_forward=1 >/dev/null

/usr/sbin/iptables-legacy -t filter -F
/usr/sbin/iptables-legacy -t filter -X
/usr/sbin/iptables-legacy -t nat -F
/usr/sbin/iptables-legacy -t nat -X
/usr/sbin/iptables-legacy -t raw -F
/usr/sbin/iptables-legacy -t raw -X
/usr/sbin/iptables-legacy -t mangle -F
/usr/sbin/iptables-legacy -t mangle -X

/usr/sbin/iptables-legacy -t filter -P INPUT ACCEPT
/usr/sbin/iptables-legacy -t filter -P OUTPUT ACCEPT
/usr/sbin/iptables-legacy -t filter -P FORWARD DROP
/usr/sbin/iptables-legacy -t filter -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

/usr/sbin/ip netns exec server python3 /opt/router/server_services.py >/var/log/server_services.log 2>&1 &
python3 /opt/router/router_api.py >/var/log/router_api.log 2>&1 &

cat >/etc/issue.net <<'BANNER'
network-9 проверка iptables

Топология:
клиент (192.168.10.11) <-> FW <-> серверная сеть (192.168.20.10, 192.168.20.20)

Задача:
- разрешить доступ к 192.168.20.10:25565/tcp
- остальной новый трафик из 192.168.10.0/24 в серверную сеть должен оставаться заблокированным

Базовое состояние firewall:
- FORWARD policy DROP
- ESTABLISHED,RELATED уже разрешен

После настройки firewall запусти:
  python3 /opt/router/check_rule.py
BANNER

exec /usr/sbin/sshd -D -e
