Форумы

Серверы Counter-Strike :: Форумы :: Документация :: FreeBSD
 
Разделение трафика IPFW и NAT связке с MPD
Модераторы: kapitowka, A1exseder, McNamara, HuKuToC, Jake_One, Meranpocynep6om, Chaos2Order, FizZ
Автор Добавил
kapitowka
06.02.2007, 18:27
FreeBSD The Power To Serve

статус Skype
STEAM_0:0:34602107

[RAT]


ID пользователя #1
Зарегистрирован: 01.01.1970, 03:00

Сообщений: 3361
Отблагодарен: 255 раза в 192 сообщениях
Репутация: 64
Репутация темы: 0 из 0 голосов

Разделение трафика по разным каналам с помощью IPFW и NAT в связке с MPD

Redacid




Дано:

- Интерфейс который смотрит в локальную сеть ISP
- Интерфейс который смотрит в локальную сеть
- VPN аккаунт для подключения к UA-IX
- VPN аккаунт для подключения к World


Задача:

Заспределять траффик между этими интерфейсами. То есть в Мир через Мир,
в Украину через Украину ...

Итак. Предполагается, что уже есть настроенный IPFW с поддержкой FWD.
Пакеты будем пробрасывать через NAT.

Настройка MPD

По умолчанию установлен шлюз в локальную сеть провайдера

mpd.conf


  1.   default:
  2.             load vpn
  3.             load vpn2
  4.  
  5.          vpn: # Настройки подключения к Украинскому VPN
  6.            new -i ng0 vpn vpn
  7.             set iface idle 0
  8.             set bundle authname "ua"
  9.             set bundle password "pass"
  10.             set iface up-script /usr/local/etc/mpd/io-up.sh
  11.             set iface down-script /usr/local/etc/mpd/io-down.sh
  12.             load all
  13.  
  14.          vpn2: # Настройки подключения к "Мировому" VPN
  15.            new -i ng1 vpn2 vpn2
  16.             set iface idle 0
  17.             set bundle authname "world"
  18.             set bundle password "pass"
  19.             set iface up-script /usr/local/etc/mpd/up.sh
  20.             set iface down-script /usr/local/etc/mpd/down.sh
  21.             load all
  22.  
  23.          all:
  24.             set bundle disable multilink
  25.             set iface enable tcpmssfix
  26.             set pptp disable windowing    
  27.             set link keep-alive 60 180
  28.             set link mtu 1500
  29.             set link accept chap
  30.             set link no pap
  31.             set bundle enable compression
  32.             set ccp yes mppc
  33.             set ccp yes mpp-e40
  34.             set ccp yes mpp-e128
  35.             set bundle enable crypt-reqd
  36.             set ccp yes mpp-stateless
  37.             set ipcp no vjcomp
  38.             open




mpd.links



  1. vpn:
  2.             set link type pptp
  3.             set pptp self 192.168.138.1 # Адрес с которого подключаемся к VPN
  4.            set pptp peer 10.3.0.2      # Адрес Украинского VPN сервера
  5.            set pptp enable originate incoming outcall
  6.          vpn2:
  7.             set link type pptp
  8.             set pptp self 192.168.138.1 # Адрес с которого подключаемся к VPN
  9.            set pptp peer 10.10.10.10   # Адрес "Мирового" VPN сервера
  10.            set pptp enable originate incoming outcall




io-up.sh



  1.   #!/bin/sh
  2.         /sbin/route add 10.3.0.2 192.168.138.254  # Добавляем маршрут к Украинскому VPN серверу
  3.         /sbin/natd -a ua.ua.ua.ua -p 8672         # Запускаем НАТ на Украинский Выделеный адрес
  4.         /sbin/natd -a 192.168.138.1 -p 8673       # Запускаем НАТ на адрес интерфейса смотрящего в локальную сеть провайдера




io-down.sh




В данной конфигурации пустой


up.sh



  1.   #!/bin/sh
  2.         /sbin/route add 10.10.10.10 192.168.138.254 # Добавляем маршрут к "Мировому" VPN серверу
  3.         /sbin/route add 10.3.0.2 192.168.138.254    # Добавляем маршрут к Украинскому VPN серверу
  4.         /sbin/route change default wg.wg.wg.wg      # Изменяем шлюз по умолчанию на шлюз в мир
  5.         /sbin/natd -a w.w.w.w                       # Запускаем НАТ на "Мировой" адрес




down.sh



  1.   #!/bin/sh
  2.         /sbin/route change default 192.168.138.254  # Изменяем шлюз по умолчанию на шлюз в локальную сеть провайдера
  3.         /usr/bin/killall -9 natd                    # Прибиваем НАТ
  4.  



IPFW

/etc/rc.firewall Здесь лишнее прибрано дабы не засорять понимание



  1. #!/bin/sh -
  2. if [ -z "${source_rc_confs_defined}" ]; then
  3.       if [ -r /etc/defaults/rc.conf ]; then
  4.            . /etc/defaults/rc.conf
  5.            source_rc_confs
  6.       elif [ -r /etc/rc.conf ]; then
  7.         . /etc/rc.conf
  8.       fi
  9.  fi
  10.  
  11.  uaip="ua.ua.ua.ua"            # Выделеный адрес в UA-IX
  12. uaif="ng0"                    # Интнрфейс в UA-IX
  13. uagw="uag.uag.uag.uag"        # Gateway UA-IX
  14. wip="w.w.w.w"                 # Выделеный адрес в World
  15. wgw="wg.wg.wg.wg"             # Gateway World
  16. wif="ng1"                     # Интерфейс World
  17. exip="192.168.138.1"          # Адрес на интерфейсе смотрящем в сеть провайдера
  18. exgw="192.168.138.254"        # Gateway ISP
  19. exif="rl1"                    # Интерфейс смотрящий в сеть провайдера
  20. loip="192.168.0.5"            # Адрес на интерфейсе смотрящем в локальную сеть
  21. loif="rl0"                    # Интерфейс смотрящий в локальную сеть
  22. lonet="192.168.0.0/24"        # Локальная сеть
  23. setup_loopback () {
  24.  
  25.    ${fwcmd} add 1 pass all from any to any via lo0
  26.    ${fwcmd} add 2 deny all from any to 127.0.0.0/8
  27.    ${fwcmd} add 3 deny ip from 127.0.0.0/8 to any
  28.  
  29.  }
  30.  
  31.  isp_nets () {
  32.  
  33.    ${fwcmd} table 7 flush
  34.    ${fwcmd} table 7 add 192.168.6.1/32
  35.    ${fwcmd} table 7 add 192.168.6.3/32
  36.    ${fwcmd} table 7 add 192.168.50.30/32
  37.    ${fwcmd} table 7 add 192.168.50.168/32
  38.    ${fwcmd} table 7 add 192.168.6.86/32
  39.    ${fwcmd} table 7 add 192.168.50.193/32
  40.    ${fwcmd} table 7 add 192.168.8.192/32
  41.    ${fwcmd} table 7 add 192.168.4.88/32
  42.    ${fwcmd} table 7 add 192.168.45.6/32
  43.    ${fwcmd} table 7 add 192.168.6.47/32
  44.    ${fwcmd} table 7 add 192.168.12.57/32
  45.        
  46.  }
  47.  
  48.  ${fwcmd} -f flush
  49.  case ${firewall_type} in
  50.  [Oo][Pp][Ee][Nn])
  51.  
  52.       setup_loopback
  53.       isp_nets          # Заполняем 7 таблицу сетями провайдера
  54.        /scripts/ipfwua.sh   # Данный скрипт добавляет в 1 таблицу список Украинских сетей
  55.  
  56.     #Отбираем всё Украинское и запускаем через Украинский шлюз  
  57.   ${fwcmd} add 1100 divert 8672  ip from ${lonet},${wip} to table\(1\)
  58.    ${fwcmd} add 1200 fwd ${uagw}  ip from ${uaip} to table\(1\)
  59.    ${fwcmd} add 1300 divert 8672  ip from table\(1\) to ${uaip}
  60.  
  61.     #Отбираем сети провайдера и запускаем через шлюз провайдера
  62.   ${fwcmd} add 1400 divert 8673  ip from ${lonet},${wip},${uaip} to table\(7\)
  63.    ${fwcmd} add 1500 fwd ${exgw}  ip from ${exip} to table\(7\)
  64.    ${fwcmd} add 1600 divert 8673  ip from table\(7\) to ${exip}
  65.  
  66.     #Всё остальное летит через мир
  67.   ${fwcmd} add 1800 divert natd  all from any to any via ${wif}
  68.  
  69.  ;;
  70.  esac
  71.  



[ Редактирование 11.11.2007, 10:25 ]

-------------------------------------------------------
Правила сервера

Банлист
Наверх
Сайт
 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System