server.conf
local 45.9.73.92
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client
keepalive 10 120
cipher AES-256-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 3
# for udp only
explicit-exit-notify 1
interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug enp1s0
iface enp1s0 inet dhcp
auto br0
iface br0 inet static
address 192.168.1.1
netmask 255.255.255.0
bridge_ports enp2s0 eno1 enp7s0 enp8s0 enp9s0
pre-up /etc/iptables.sh
auto dsl-provider
iface dsl-provider inet ppp
pre-up /bin/ip link set enp1s0 up # line maintained by pppoeconf
provider dsl-provider
iptables
export IPT="iptables"
# Внешний интерфейс
export WAN=enp1s0 # МТС
#export WAN=ppp0 # Ростелеком
#export WAN=tun0 # VPN
export WAN_IP=dhcp
# Локальная сеть
export LAN1=br0
export LAN1_IP_RANGE=192.168.1.0/24
# Очищаем правила
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
# Запрещаем все, что не разрешено
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
# Разрешаем localhost и локалку
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN1 -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN1 -j ACCEPT
# Рзрешаем пинги
#$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
#$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
#$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
#$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Разрешаем все исходящие подключения сервера
$IPT -A OUTPUT -o $WAN -j ACCEPT
# Разрешаем все входящие подключения сервера
#$IPT -A INPUT -i $WAN -j ACCEPT
# разрешаем установленные подключения
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Отбрасываем неопознанные пакеты
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP
# Отбрасываем нулевые пакеты
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# Закрываемся от syn-flood атак
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем доступ из локалки наружу
$IPT -A FORWARD -i $LAN1 -o $WAN -j ACCEPT
# Закрываем доступ снаружи в локалку
$IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT
# Включаем NAT
$IPT -t nat -A POSTROUTING -o $WAN -s $LAN1_IP_RANGE -j MASQUERADE
# открываем Rutracker
$IPT -t nat -A OUTPUT -p tcp -m tcp --dport 80 -d 195.82.146.120/30 -j DNAT --to-destination 185.15.211.203:80
#все для ТОР
$IPT -A INPUT -s $LAN1_IP_RANGE -p tcp --dport 9040 -j ACCEPT
$IPT -A INPUT -s $LAN1_IP_RANGE -p udp --dport 5300 -j ACCEPT
$IPT -A INPUT -p tcp --dport 9040 -j DROP
$IPT -A INPUT -p udp --dport 5300 -j DROP
$IPT -t nat -A PREROUTING -p tcp -d 10.0.0.0/8 -j REDIRECT --to-port 9040
$IPT -t nat -A PREROUTING -p udp --dport 53 -m string \
--hex-string "|056f6e696f6e00|" --algo bm -j REDIRECT --to-ports 5300
$IPT -t nat -A OUTPUT -p udp --dport 53 -m string \
--hex-string "|056f6e696f6e00|" --algo bm -j REDIRECT --to-ports 5300
$IPT -t nat -A PREROUTING -p tcp -m multiport --dports 80,443 \
-m set --match-set blacklist dst -j REDIRECT --to-port 9040
$IPT -t nat -A OUTPUT -p tcp -m multiport --dports 80,443 \
-m set --match-set blacklist dst -j REDIRECT --to-port 9040
#Обход Squid
$IPT -t nat -A PREROUTING -s 192.168.1.10 -p tcp -m tcp --dport 80 -j RETURN
$IPT -t nat -A PREROUTING -s 192.168.1.10 -p tcp -m tcp --dport 443 -j RETURN
$IPT -t nat -A PREROUTING -s 192.168.1.11 -p tcp -m tcp --dport 80 -j RETURN
$IPT -t nat -A PREROUTING -s 192.168.1.11 -p tcp -m tcp --dport 443 -j RETURN
$IPT -t nat -A PREROUTING -s 192.168.1.20 -p tcp -m tcp --dport 80 -j RETURN
$IPT -t nat -A PREROUTING -s 192.168.1.20 -p tcp -m tcp --dport 443 -j RETURN
#Подключаем Squid
$IPT -t nat -A PREROUTING -p tcp -m tcp -s $LAN1_IP_RANGE --dport 443 -j REDIRECT --to-ports 3129
$IPT -t nat -A PREROUTING -p tcp -m tcp -s $LAN1_IP_RANGE --dport 80 -j REDIRECT --to-ports 3128
# Сохраняем правила
/sbin/iptables-save > /etc/iptables.rules
route
До соединения
Destination Gateway Genmask Flags Metric Ref Use Iface
default 100.126.0.1 0.0.0.0 UG 0 0 0 enp1s0
100.126.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp1s0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
После соединения
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.8.0.1 128.0.0.0 UG 0 0 0 tun0
default 100.126.0.1 0.0.0.0 UG 0 0 0 enp1s0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
45.9.73.92 100.126.0.1 255.255.255.255 UGH 0 0 0 enp1s0
100.126.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp1s0
128.0.0.0 10.8.0.1 128.0.0.0 UG 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0