Часть 2. Публикация интернет-сервисов на примере почтового сервера.
Для примера буду использовать почтовый сервер находящийся по ip адресу 192.168.8.21 на 25 порту протокола tcp.
Для корректной работы шлюзом по умолчанию должен быть MikroTik, в моём примере его ip адрес 192.168.8.35
Делаем переадресацию входящих запросов приходящих на маршрутизатор на реальные адреса на почтовый сервер, внутренний адрес.
Два правила, по одному для каждого провайдера.
ip firewall nat add chain=dstnat action=dst-nat in-interface=vlan40 protocol=tcp dst-port=25 to-address=192.168.8.21 to-ports=25
ip firewall nat add chain=dstnat action=dst-nat in-interface=vlan54 protocol=tcp dst-port=25 to-address=192.168.8.21 to-ports=25
Разрешаем прохождение пакетов через маршрутизатор адресованных почтовому серверу:
ip firewall filter add chain forward in-interface=vlan40 protocol=tcp dst-port=25 dst-address=192.168.8.21 action=accept comment="vlan40 to smtp"
ip firewall filter add chain forward in-interface=vlan54 protocol=tcp dst-port=25 dst-address=192.168.8.21 action=accept comment="vlan54 to smtp"
Если вы, как в первой части статьи, разрешили выход в интернет всем, то следующее правило вам не нужно вводить.
В противном случае, разрешаем с почтового сервера создание новых соединений на другие почтовый серверы в интернете:
ip firewall filter add chain forward in-interface=ether2 src-address=192.168.8.21/32 protocol=tcp dst-port=25 action=accept comment="Access to SMTP servers from local mail server"
Результат должен быть таким:
[admin@MikroTik] > ip firewall filter print chain forward
Flags: X - disabled, I - invalid, D - dynamic
0 ;;; Drop invalid connection packets
chain=forward action=drop connection-state=invalid
1 ;;; Allow established connections
chain=forward action=accept connection-state=established
2 ;;; Allow related connections
chain=forward action=accept connection-state=related
3 ;;; Allow UDP
chain=forward action=accept protocol=udp
4 ;;; Allow ICMP Ping
chain=forward action=accept protocol=icmp
5 ;;; Access to internet from local network
chain=forward action=accept src-address=192.168.8.0/24 in-interface=ether2
6 ;;; All other forwards drop
chain=forward action=drop
7 ;;; vlan40 to smtp
chain=forward action=accept protocol=tcp dst-address=192.168.8.21 in-interface=vlan40 dst-port=25
8 ;;; vlan54 to smtp
chain=forward action=accept protocol=tcp dst-address=192.168.8.21 in-interface=vlan54 dst-port=25
9 ;;; Access to SMTP servers from local mail server
chain=forward action=accept protocol=tcp src-address=192.168.8.21 in-interface=ether2 dst-port=25
[admin@MikroTik] >
Как видите, наши новые правила оказались после запрещающего правила, поэтому это запрещающее правило удаляем и заново создаем (перед удалением всегда надо сначала сделать print):
ip firewall filter print chain forward
ip firewall filter remove 6
ip firewall filter add chain forward action=drop comment="All other forwards drop"
Должно получиться следующее:
[admin@MikroTik] > ip firewall filter print chain forward
Flags: X - disabled, I - invalid, D - dynamic
0 ;;; Drop invalid connection packets
chain=forward action=drop connection-state=invalid
1 ;;; Allow established connections
chain=forward action=accept connection-state=established
2 ;;; Allow related connections
chain=forward action=accept connection-state=related
3 ;;; Allow UDP
chain=forward action=accept protocol=udp
4 ;;; Allow ICMP Ping
chain=forward action=accept protocol=icmp
5 ;;; Access to internet from local network
chain=forward action=accept src-address=192.168.8.0/24 in-interface=ether2
6 ;;; vlan40 to smtp
chain=forward action=accept protocol=tcp dst-address=192.168.8.21 in-interface=vlan40 dst-port=25
7 ;;; vlan54 to smtp
chain=forward action=accept protocol=tcp dst-address=192.168.8.21 in-interface=vlan54 dst-port=25
8 ;;; Access to SMTP servers from local mail server
chain=forward action=accept protocol=tcp src-address=192.168.8.21 in-interface=ether2 dst-port=25
9 ;;; All other forwards drop
chain=forward action=drop
[admin@MikroTik] >
Ну, а теперь самое интересно, помечаем входящие соединения, чтобы ответы шли через того провайдера с которого получен запрос:
ip firewall mangle add chain=forward in-interface=vlan40 action=mark-connection new-connection-mark=vlan40_c passthrough=yes
ip firewall mangle add chain=forward in-interface=vlan54 action=mark-connection new-connection-mark=vlan54_c passthrough=yes
ip firewall mangle add chain=prerouting src-address=192.168.8.0/24 connection-mark=vlan40_c action=mark-routing new-routing-mark=vlan40_r passthrough=yes
ip firewall mangle add chain=prerouting src-address=192.168.8.0/24 connection-mark=vlan54_c action=mark-routing new-routing-mark=vlan54_r passthrough=yes
Проверяем результат:
[admin@MikroTik] > ip firewall mangle print
Flags: X - disabled, I - invalid, D - dynamic
0 chain=forward action=mark-connection new-connection-mark=vlan40_c passthrough=yes in-interface=vlan40
1 chain=forward action=mark-connection new-connection-mark=vlan54_c passthrough=yes in-interface=vlan54
2 chain=prerouting action=mark-routing new-routing-mark=vlan40_r passthrough=yes src-address=192.168.8.0/24 connection-mark=vlan40_c
3 chain=prerouting action=mark-routing new-routing-mark=vlan54_r passthrough=yes src-address=192.168.8.0/24 connection-mark=vlan54_c
[admin@MikroTik] >
Добавляем правила маршрутизации:
ip route add routing-mark=vlan40_r gateway=82.19.115.97
ip route add routing-mark=vlan54_r gateway=89.15.64.2
Должно получиться следующее:
[admin@MikroTik] > ip route print detail
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
0 A S dst-address=0.0.0.0/0 gateway=82.19.115.97 interface=vlan40 gateway-state=reachable distance=1 scope=30 target-scope=10
1 A S dst-address=0.0.0.0/0 gateway=82.19.115.97 interface=vlan40 gateway-state=reachable distance=1 scope=30 target-scope=10 routing-mark=vlan40_r
2 A S dst-address=0.0.0.0/0 gateway=89.15.64.2 interface=vlan54 gateway-state=reachable distance=1 scope=30 target-scope=10 routing-mark=vlan54_r
3 ADC dst-address=82.19.115.96/29 pref-src=82.19.115.100 interface=vlan40 distance=0 scope=10
4 ADC dst-address=89.15.64.0/26 pref-src=89.15.64.9 interface=vlan54 distance=0 scope=10
5 ADC dst-address=192.168.8.0/24 pref-src=192.168.8.35 interface=ether2 distance=0 scope=10
[admin@MikroTik] >
Проверяем, и радуемся как все работает.
Источник http://papa-admin.ru/blog/mikrotik/mikrotik-i-dva-kanala-part2