http {
server {
listen 80;
server_name one.example.com;
location / {
proxy_pass http://backend_http_one;
}
}
server {
listen 80;
server_name two.example.com;
location / {
proxy_pass http://backend_http_two;
}
}
}
stream {
upstream backend_http_one {
ip_hash;
server one.example.com:80;
}
}
upstream backend_http_two {
ip_hash;
server one.example.com:80;
}
upstream backend_1234 {
ip_hash;
server one.example.com:1234;
server two.example.com:1234;
}
server {
listen 1234;
proxy_pass backend_1234;
}
}
@def $DEV_WAN = eth2;
@def $DEV_LAN = eth1;
@def $NET_LOCAL = 10.0.0.0/24;
@def $NET_BRANCH = 20.0.0.0/24;
@def $NET_BOGON = (172.16.0.0/12 192.168.0.0/12 127.0.0.0/8 169.254.0.0/16)
# функция для публикаций
@def &FORWARD_PORT($proto, $port, $dest) = {
domain (ip ip6) {
table nat chain PREROUTING interface $DEV_WAN proto $proto dport $port DNAT to "$dest";
table filter chain FORWARD interface $DEV_WAN outerface $DEV_LAN daddr $dest proto $proto dport $port ACCEPT;
}
# функция для логирования отброшенный пакетов
@def &LOG_DROP($table, $chain) = {
domain (ip ip6) {
table $table chain $chain mod limit limit 2/min limit-burst 10 LOG log-prefix "[FERM] $CHAIN: " log-level warning;
table $table chain $chain REJECT;
}
domain (ip ip6) {
table filter {
chain INPUT {
policy DROP; # Запрещаем все, что не разрешено
# connection tracking
mod state state INVALID DROP; # Отбрасываем неопознанные пакеты
mod state state (ESTABLISHED RELATED) ACCEPT; # разрешаем установленные соединения
# allow local packet
interface lo ACCEPT;
# respond to ping
proto icmp ACCEPT;
interface $DEV_WAN {
# allow IPsec
proto udp dport 500 ACCEPT;
@if @eq($DOMAIN, ip) {
proto (esp ah) ACCEPT;
} @else {
proto (esp) ACCEPT;
}
# allow SSH connections
proto tcp dport ssh ACCEPT;
proto tcp dport 1565 ACCEPT;
# block bogon
#daddr $NET_BOGON DROP;
}
interface $DEV_LAN {
# allow DNS
proto udp dport domain ACCEPT;
# allow DHCP
proto udp dport bootp ACCEPT;
}
}
chain OUTPUT {
policy ACCEPT; # Разрешаем весь исходящий трафик
# connection tracking
#mod state state INVALID DROP;
mod state state (ESTABLISHED RELATED) ACCEPT;
}
chain FORWARD {
policy DROP;
# connection tracking
mod state state INVALID DROP;
mod state state (ESTABLISHED RELATED) ACCEPT;
# Разрешаем доступ из локалки наружу
interface $DEV_LAN outerface $DEV_WAN ACCEPT;
# Разрешаем доступ VPN и обратно
saddr $NET_LOCAL daddr $NET_BRANCH ACCEPT;
saddr $NET_BRANCH daddr $NET_LOCAL ACCEPT;
}
}
}
table nat {
chain PREROUTING {
}
chain POSTROUTING {
saddr $NET_LOCAL ! daddr $NET_BRANCH outerface $DEV_WAN MASQUERADE;
}
}
# Включаем логирование
&LOG_DROP(filter, INPUT);
&LOG_DROP(filter, FORWARD);
# Публикуем порт 8080 для udp и tcp
&FORWARD_PORT((udp tcp), 8080, 10.0.0.11);
# Публикуем WEB сервер
&FORWARD_PORT(tcp, (80 443), 10.0.0.20);
Вроде haproxy умеет проксировать tcp на основе SNI
-A POSTROUTING -s 195.209.130.9/32 -o eth2 -j SNAT --to-source 10.0.0.10
-A POSTROUTING -s 10.0.0.0/24 -d 20.0.0.0/24 -j MASQUERADE
# это удалить
#-A POSTROUTING -s 10.0.0.0/24 -d 20.0.0.0/24 -j MASQUERADE
# это поменять на
#-A POSTROUTING -s 10.0.0.0/24 -o eth2 -j MASQUERADE
# это
-A POSTROUTING -s 10.0.0.0/24 ! -d 20.0.0.0/24 -o eth2 -j MASQUERADE
И вот это
-A INPUT -p udp -m udp --dport 500 -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -p ah -j ACCEPT
и forward
-I FORWARD -s 10.0.0.0/24 -d 20.0.0.0/24 -j ACCEPT
Когда L2TP из коробки в винде есть уже)
насколько безопасно VPN в микротике для корпоративных данных
Есть какие то VPN клиенты которые считаются золотым стандартом безопасности?
Для доступа к рабочим ресурсам используется один впн
локальные шары работают без впн
Если есть возможность указать браузеру через какой интерфейс работать
https://support.solarwinds.com/SuccessCenter/s/art...