Администрирование FreeBSD, Linux, ... FreeBSD: настройка роутера на FreeBSD 6.3 для Корбины Tue, October 08 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

FreeBSD: настройка роутера на FreeBSD 6.3 для Корбины Печать
Добавил(а) microsin   

Здесь описан процесс установки по шагам.

1. Ставим как обычно. При смене дисков меняем их не спеша - сначала при запросе на смену жмем Enter, потом извлекаем диск, терпеливо ждем, пока привод определит диск (на это надо секунд 10..15), и только потом еще раз жмем Enter, подтверждая, что поменяли диск.

2. Настраиваем интерфейсы.
# ifconfig
fxp0: flags=8843 mtu 1500
        options=8
        inet loc1.loc3.103.223 netmask 0xfffff800 broadcast loc1.loc3.103.255
        ether 00:90:27:29:5b:8e
        media: Ethernet autoselect (100baseTX )
        status: active
fxp1: flags=8843 mtu 1500
        options=8
        inet 192.168.7.254 netmask 0xffffff00 broadcast 192.168.7.255
        ether 00:90:27:be:e6:3c
        media: Ethernet autoselect (100baseTX )
        status: active
plip0: flags=108810 mtu 1500
lo0: flags=8049 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
Показывает, какие интерфейсы есть в системе, статус (если кабель воткнут, то должен быть статус active). У меня были интерфейсы fxp0 и fxp1.

# ifconfig fxp1 inet 192.168.0.254 netmask 255.255.255.0
Назначает адрес на интерфейс.  

# ping 192.168.0.254
# ping 192.168.0.1
Проверяем работу интерфейса (на компе 192.168.0.1 должен быть отключен файервол).

# dhclient fxp0
Проверяем автоназначение адреса с DHCP-сервера Корбины. При этом в файле /var/db/dhclient.leases.fxp0 должна появится запись наподобие:
# more /var/db/dhclient.leases.fxp0
lease {
  interface "fxp0";
  fixed-address loc1.loc3.103.223;
  option subnet-mask 255.255.248.0;
  option routers loc1.loc3.96.1;
  option domain-name-servers 213.234.192.8,85.21.192.3;
  option dhcp-lease-time 604800;
  option dhcp-message-type 5;
  option dhcp-server-identifier 83.102.233.200;
  option classless-routes 8,10,10,160,96,1,24,85,21,79,10,160,96,1,24,85,21,90,10,160,96,
1,28,85,21,138,208,10,160,96,1,27,83,102,146,96,10,160,96,1,24,172,16,16,10,160,96,1,
28,85,21,72,80,10,160,96,1,32,78,107,69,98,10,160,96,1,24,78,107,23,10,160,96,1,28,85,
21,108,16,10,160,96,1;
  renew 3 2008/2/6 00:48:28;
  rebind 5 2008/2/8 15:48:28;
  expire 6 2008/2/9 12:48:28;
}

3. Это мы только тестировали интерфейсы. Чтобы настройки интерфейсов сохранились и применялись после перезагрузки, редактируем файл /etc/rc.conf:
# vi /etc/rc.conf
   В файле надо добавить строки:
ifconfig_fxp1="inet 192.168.0.254 netmask 255.255.255.0"
ifconfig_fxp0="DHCP"

4. Включаем сервер ssh. Для этого редактируем файл /etc/rc.conf и добавляем строку:
sshd_enable="YES"

Потом редактируем файл /etc/ssh/sshd_config, раскомментруем и изменяем следующие опции (они должны быть в файле в таком виде, как указано здесь):
 ...
PermitRootLogin yes
 ...
PasswordAuthentication yes
 ...

Перезапускаем сервер sshd (доступны, кроме restart, команды start и stop):
# /etc/rc.d/sshd restart

5. Смотрим, какие есть в системе маршруты:
# netstat -r
Routing tables
Internet:
Destination        Gateway            Flags        Refs      Use  Netif Expire
default            loc1.loc3.96.1        UGS         0      247   fxp0
10                 loc1.loc3.96.1        UGS         0       20   fxp0
loc1.loc3.96/21       link#1             UC          0        0   fxp0
loc1.loc3.96.1        00:15:e9:39:5c:02  UHLW       12        0   fxp0   1200
78.107.23/24       loc1.loc3.96.1        UGS         0        0   fxp0
78.107.69.98/32    loc1.loc3.96.1        UGS         0        0   fxp0
83.102.146.96/27   loc1.loc3.96.1        UGS         0        0   fxp0
85.21.72.80/28     loc1.loc3.96.1        UGS         0        0   fxp0
85.21.79/24        loc1.loc3.96.1        UGS         0        0   fxp0
85.21.90/24        loc1.loc3.96.1        UGS         0        0   fxp0
85.21.108.16/28    loc1.loc3.96.1        UGS         0        0   fxp0
85.21.138.208/28   loc1.loc3.96.1        UGS         0        0   fxp0
localhost          localhost             UH          0        0    lo0
172.16.16/24       loc1.loc3.96.1        UGS         0        0   fxp0
192.168.7          link#2                UC          0        0   fxp1
192.168.7.1        00:0e:a6:5a:43:56     UHLW        1    14654   fxp1    751
Internet6:
Destination        Gateway            Flags      Netif Expire
localhost          localhost          UHL         lo0
fe80::%lo0         fe80::1%lo0        U           lo0
fe80::1%lo0        link#4             UHL         lo0
ff01:4::           fe80::1%lo0        UC          lo0
ff02::%lo0         fe80::1%lo0        UC          lo0

Вместо опции -r можно указать -rn, тогда таблица построится быстрее (без попыток преобразования IP в адреса).

В системе обязательно должен быть маршрут по умолчанию, указывающий на роутер Корбины в её локальной домашней сети (с IP-адресом loc1.loc3.96.1 - этот шлюз по умолчанию раздается по DHCP, когда втыкаете корбиновский кабель во "внешний" интерфейс нашей машинки с FreeBSD):

Destination        Gateway               Flags      Refs    Use  Netif Expire
default            loc1.loc3.96.1        UGS         0      247   fxp0

Если такого маршрута нет, то сервера DNS не будут отвечать (они находятся за роутерами). В этом случае надо добавить маршрут:
# route add default loc1.loc3.96.1

6. Проверяем работу DNS:
# nslookup ftp.corbina.ru
Server:         213.234.192.8
Address:        213.234.192.8#53
ftp.corbina.ru  canonical name = earth.corbina.ru.
Name:   earth.corbina.ru
Address: 195.14.50.21

7. Проверяем доступность сервера VPN Корбины:
# ping vpn.corbina.net
PING view0.viewdns.corbina.net (85.21.0.90): 56 data bytes
64 bytes from 85.21.0.90: icmp_seq=0 ttl=248 time=1.222 ms
64 bytes from 85.21.0.90: icmp_seq=1 ttl=248 time=1.696 ms
64 bytes from 85.21.0.90: icmp_seq=2 ttl=248 time=1.398 ms

8. Устанавливаем nmap (из пакета) - необязательный шаг. Хотя куда же без него, родимого?

Пакет nmap.tar.gz и порты nmap-4.20.tar.bz2, make-3.81.tar.bz2 были предварительно скачаны из Интернета и положены в корень ftp-сервера 192.168.7.1. Если бы было настроено подключение к Интернету на FreeBSD, то необходимые порты nmap-4.20.tar.bz2 и make-3.81.tar.bz2 скачались бы автоматически. Скачиваем все, что нужно (nmap.tar.gz, порты nmap-4.20.tar.bz2, make-3.81.tar.bz2), с локального (192.168.7.1) ftp:
ftp 192.168.7.1
Connected to 192.168.7.1.
220 Fastream IQ FTP Server
Name (192.168.7.1:root): anonymous
331 Password required for anonymous.
Password:
230 User anonymous has successfully logged in.
Remote system type is Fastream.
ftp> ls
500 'EPSV': command not understood.
227 Entering Passive Mode (192,168,7,1,4,161).
150 Opening data connection for folder list.
dr--r--r--   1 ftp      ftp            0 Sep 09  2007 .
d---------   1 ftp      ftp            0 Sep 09  2007 ..
drw-rw-rw-   1 ftp      ftp            0 Sep 09  2007 public
dr--r--r--   1 ftp      ftp            0 Sep 09  2007 torrents
-r--r--r--   1 ftp      ftp         4162 Feb 02 16:21 nmap.tar.gz
-r--r--r--   1 ftp      ftp      2156077 Feb 02 17:17 nmap-4.20.tar.bz2
-r--r--r--   1 ftp      ftp      1151445 Feb 02 17:26 make-3.81.tar.bz2
226 File sent ok
ftp> binary
200 Type set to I.
ftp> get nmap.tar.gz
local: nmap.tar.gz remote: nmap.tar.gz
227 Entering Passive Mode (192,168,7,1,4,162).
150 Opening data connection for nmap.tar.gz.
100% |***********************************************************************************|  4162       2.25 MB/s    00:00 ETA
226 File sent ok
4162 bytes received in 00:00 (41.34 KB/s)
ftp> get nmap-4.20.tar.bz2
local: nmap-4.20.tar.bz2 remote: nmap-4.20.tar.bz2
227 Entering Passive Mode (192,168,7,1,4,183).
150 Opening data connection for nmap-4.20.tar.bz2.
100% |***********************************************************************************|  2105 KB    5.58 MB/s    00:00 ETA
226 File sent ok
WARNING! 8997 bare linefeeds received in ASCII mode.
File may not have transferred correctly.
2156077 bytes received in 00:00 (5.56 MB/s)
ftp> get make-3.81.tar.bz2
local: make-3.81.tar.bz2 remote: make-3.81.tar.bz2
227 Entering Passive Mode (192,168,7,1,5,247).
150 Opening data connection for make-3.81.tar.bz2.
100% |***********************************************************************************| 1124 KB    5.45 MB/s    00:00 ETA
226 File sent ok
1151445 bytes received in 00:00 (5.43 MB/s)
ftp> exit
221 Good Bye!
# копируем файлы в нужные места, чтобы их нашла утилита make
 cp nmap-4.20.tar.bz2 /usr/ports/distfiles/
 cp make-3.81.tar.bz2 /usr/ports/distfiles/
# распаковываем nmap.tar.gz, в текущей директории появится временная папка nmap
 tar -xf nmap.tar.gz
# заходим в папку nmap, там должен быть файл Makefile и файлы пакета.
 cd nmap
# запускаем проверку пакета
 make
 ...
# устанавливаем пакет
 make install
 ...
# делаем финальную очистку
 make clean
===>  Cleaning for gmake-3.81_2
===>  Cleaning for nmap-4.20_1
# удаляем папку nmap
 rm -r -f nmap
# удаляем файлы make-3.81.tar.bz2, nmap-4.20.tgz и nmap.tar.gz
 rm make-3.81.tar.bz2
 rm nmap*
# ищем, куда встала nmap
 find / -name "nmap" -print
/usr/local/bin/nmap
/usr/local/share/doc/nmap
/usr/local/share/nmap
/usr/ports/security/nmap
# проверяем запуск мана для nmap
 man nmap
# тестируем nmap (после перезагрузки не надо будет вводить полный путь до nmap):
 /usr/local/bin/nmap vpn.corbina.net
Starting Nmap 4.20 (
http://insecure.org ) at 2008-02-02 17:52 UTC
Interesting ports on vpn28-l0.msk.corbina.net (85.21.0.28):
Not shown: 1696 closed ports
PORT     STATE SERVICE
1723/tcp open  pptp
Nmap finished: 1 IP address (1 host up) scanned in 551.755 seconds
 /usr/local/bin/nmap 192.168.7.1
Starting Nmap 4.20 (
http://insecure.org ) at 2008-02-02 18:02 UTC
Interesting ports on 192.168.7.1:
Not shown: 1694 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
3389/tcp open  ms-term-serv
MAC Address: 00:0E:A6:5A:43:56 (Asustek Computer)
Nmap finished: 1 IP address (1 host up) scanned in 94.131 seconds

10. Устанавливаем mc (Midnight Commander) - необязательный шаг. Это для лентяев (то есть для меня - шибко люблю редактор mcedit и ненавижу vi).
Сначала скачиваем ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/mc-4.6.1.tar.gz. Далее:
 cp mc-4.6.1.tar.gz /usr/ports/distfiles
 cd /usr/ports/misc/mc
 make
 ...
 make install
 make clean
 rm mc-4.6.1.tar.gz
 reboot
   Без перезагрузки mc не запускается с ошибкой "Exec format error. Binary file not executable".

11. Установка mpd версии 3.18.
Осталось настроить vpn-соединение с Корбиной (у неё таким образом раздается Интернет). pptpclient у меня почему-то не заработал. Пришлось пробовать mpd:
# cd /usr/ports/net/mpd
# make
# make install
# make clean
# cd /usr/local/etc/mpd
# touch mpd.conf
# mcedit mpd.conf (или vi mpd.conf)

Вставляем следующее содержимое в файл mpd.conf (комментарии я вставил с символом #, их надо из файла убрать):

default:
    load vpn

vpn:
    new -i ng0 vpn vpn               #создается интерфейс ng0, в который входит линк vpn (описан в файле mpd.links)
    set iface idle 0                      #не разрывать связь при отсутствии исходящих пакетов
    set bundle disable multilink    #запрет мультилинка
    set iface up-script /usr/local/etc/mpd/io-up.sh            #запуск скрипта при поднятии  bundle - скрипт меняет маршрут по умолчанию
    set iface down-script /usr/local/etc/mpd/io-down.sh    #запуск скрипта при опускании bundle - скрипт меняет маршрут по умолчанию
    set bundle authname "тут_указываем_логин"
    set bundle password "тут_указываем_пароль"
    set link keep-alive 60 180      #настраивает временнЫе посылки эхо-пакетов LCP. См. описание команды set link keep-alive
    set link accept chap               #использовать протокол chap
    set link no pap                      #не использовать протокол chap
    set bundle disable compression  #запрет сжатия
    set ccp yes mpp-e40             #разрешает 40-bit MPPE encryption
    set ccp no mpp-e128             #запрет 128-bit MPPE encryption
    set bundle disable crypt-reqd  #отключить требование шифрования
    set ccp no mpp-stateless        #по этой опции см. help по командам Compression layer
    set ipcp no vjcomp                #отключает Van Jacobson TCP header compression
    set link mtu 1460                  #настраивает размер mtu в байтах
    open

Создаем также файлы mpd.links, io-up.sh и io-down.sh:
[mpd.links]
vpn:
    set link type pptp                   #устанавливает тип линка
    set pptp peer 85.21.0.15        #устанавливает IP VPN-сервера Корбина
    set pptp enable originate incoming outcall   #см. команды типа устройства PPTP
    set pptp disable windowing      #см. команды типа устройства PPTP
   
    Строчек set pptp peer .. может быть несколько, например:
    set pptp peer 85.21.0.15
    set pptp peer vpn.corbina.net
    set pptp peer 85.21.0.51

Интересна также опция set link max-redial num, которая задает количество повторных попыток соединения. Если указать num равное 0, то будет бесконечное количество попыток.
    
Внимание! Если поменяли значения в конфигурационных файлах mpd.conf и mpd.links, то требуется перезагрузка mpd:
# killall -TERM mpd
# mpd -b
    
Теперь рассмотрим скрипты перенастройки маршрутов io-up.sh и io-down.sh.
[io-up.sh]
#!/bin/sh

route delete $4
route add $4 ВАШ_DEFAULT_GATEWAY
route delete default
route add default $4

echo $4 > /tmp/dr

[io-down.sh]
#!/bin/sh

dr=`cat /tmp/dr`
route delete $dr
route delete default
route add default ВАШ_DEFAULT_GATEWAY
rm -f /var/dr

Редактируем /etc/rc.conf.
defaultrouter="10.160.96.1"
gateway_enable="YES"
keymap="ru.koi8-r"
linux enable="YES"
local startup="/usr/local/etc/rc.d"
moused enable="YES"
mouse  port="/dev/psm0"
usbd_enable="YES"
ifconfig_fxp1="inet 192.168.7.254 netmask 255.255.255.0"
ifconfig_fxp0="DHCP"
sshd_enable="YES"
tcp_extensions="YES"
hostname="msinhome.mydomain.ru"
static_routes="localnet dns1 dns2 vpnpptp01 vpnpptp02 vpnpptp03 vpnl2tp01"
route_localnet="-net 10.0.0.0 -netmask 255.0.0.0 10.160.96.1"
route dns1="213.234.192.8 10.160.96.1"
route_dns2="85.21.192.3 10.160.96.1"
route_vpnpptp01="85.21.0.15 10.160.96.1"
route_vpnpptp02="vpn.corbina.net 10.160.96.1"
route_vpnpptp03="85.21.0.51 10.160.96.1"
route_vpnl2tp01="85.21.0.254 10.160.96.1"

Тут ничего особенного в контексте настройки mpd - настроен адрес шлюза по умолчанию 10.160.96.1, прописаны маршруты до DNS-серверов (dns1 и dns2) и vpn-серверов Корбины (vpnpptp01, vpnpptp02, vpnpptp03 и vpnl2tp01). Вы конечно заметили, что адрес шлюза по умолчанию совпадает со шлюзом этих маршрутов, но это сделано не случайно - для надежности, поскольку маршрут по умолчанию удаляется и восстанавливается скриптами io-up.sh и io-down.sh, и бывает, что маршрут по умолчанию теряется. В этом случае работают статические маршруты dns1, dns2, vpnpptp01, vpnpptp02, vpnpptp03 и vpnl2tp01.

Кроме man mpd, дока по mpd в html-формате доступна в папке /usr/local/share/doc/mpd. При перезагрузке по идее должен сразу заработать Интернет. Можно также запустить mpd
вручную, при этом поднимется линк, прописанный в mpd.conf (при этом будет доступна консоль управления mpd):
# mpd
  или (при этом будет запущен mpd в фоновом режиме)
# mpd & 
  или (тоже запуск в фоновом режиме)
# mpd -b 

Остановить линк можно, выгрузив mpd командой kill (перед эти узнав id процесса mpd командой ps) или killall. Этими же командами можно посылать процессу mpd стандартные сигналы, которые он может распознать (на обновление конфигурации, выгрузку и т. п. - если интересно, см. man mpd).

При запуске и останове mpd отрабатывают скрипты io-up.sh и io-down.sh соответственно (они перенастраивают маршрут по умолчанию). Когда интерфейс поднят, то команда ifconfig выдает следующую инфу об интерфейсе:
ng0: flags=88d1 mtu 1460
        inet 89.178.134.28 --> 85.21.0.15 netmask 0xffffffff

Когда mpd выгружен, то ifconfig никакой информации по ng0 не выводит.

Соединение и рассоединение с Корбина происходит очень быстро. При установке соединения у меня оно не всегда получалось работоспособным. При этом ifconfig показывает, что виртуальный адаптер находится в состоянии UP:
ng0: flags=88d1 mtu 1460

Когда соединение работает, то добавляется еще строка, показывающая привязку в публичному IP:
ng0: flags=88d1 mtu 1460
        inet 89.178.131.155 --> 85.21.0.15 netmask 0xffffffff

Сам mpd успешность соединения не отслеживает, нужно переустанавливать соединение вручную (посылая сигналы USR2 и USR1). Можно настроить делать эту процедуру автоматически (см. в конце раздел ссылки).

Автозапуск mpd при старте обеспечивается строкой mpd_enable="YES" в файле /etc/rc.conf. При этом mpd запускается с опцией -b (в каталог /usr/local/etc/rc.d/ после установки автоматически записывается скрипт запуска mpd.sh).

Чтобы писался лог, нужно создать файл /var/log/mpd.log с правами на запись для root (owner), а также добавить в файл /etc/syslog.conf две строчки:
!mpd
*.* /var/log/mpd.log

Чтобы применить настройки немедленно, надо дать команду:
# killall -HUP syslogd

Можно добавить автоматически маршрут на интерфейс при поднятии bundle. Это делается командой set iface route deafult|address[[/width] (без указания длины маски width маршрут будет однохостовый).

См. также описание mpd.

Чтобы раздать через получившийся роутер Интернет на другие компьютеры, нужно поднять ipnat (см. статьи FreeBSD: настройка NAT с помощью ipnat и FreeBSD ipnat: автоматическая поддержка правил NAT в актуальном состоянии).


[Проблемы и методы их решения]

Вышеописанная система работает довольно надежно (в круглосуточном режиме), но иногда приходится устранять возможные проблемы. Все они были связаны с пертурбациями у провайдера. Это понятно - там работают живые люди, меняют оборудование (которое тоже иногда ломается) и бывает допускают ошибки. Мне приходилось сталкиваться с двумя главными проблемами, которые были связаны с изменениями у провайдера:
1. Смена IP у DNS-серверов.
2. Смена IP у VPN-сервера.
3. Кончились деньги на персональном счете.

С первой проблемой автоматически не поборешься, приходится узнавать у провайдера адреса DNS и вручную их вгонять в файл /etc/namedb/named.conf (это конфигурационный файл named), либо обновить адрес на внешнем интерфейсе роутера (командой dhclient fxp0), и после этого найти адреса DNS в файле /etc/resolv.conf.

Вторая проблема немного связана с первой. Дело в том, что в конфигурационном файле /usr/local/etc/mpd/mpd.links есть возможность указать не фиксированный IP, а имя vpn.corbina.net. Но иногда это не работает, когда недоступен сервер DNS, причем сервер VPN в этот момент бывает доступен по IP. Поэтому, если Вы поддались соблазну и вставили в список peer сначала фиксированный IP, то это будет работать очень устойчиво и надежно, без всяких DNS, но до поры до времени - пока не сменится адрес рабочего VPN-сервера PPTP. Иногда старый VPN-сервер не вырубают сразу, а просто бросают, и он начинает "шизить" - сбрасывает сессии, отрабатывает не все маршруты, и такую проблему очень трудно выявить, потому что то работает сеть, то нет. Служба техподдержки обычно тут ничем не может помочь - работающие там операторы часто не знают о смене IP у VPN-сервера, и не могут догадаться, что Ваш mpd до сих пор стучится по IP на VPN-сервер, который заброшен или на профилактике. Обычно техподдержка делает "круглые глаза" (мы FreeBSD не поддерживаем!..), просит переключить компьютер напрямую без роутера, и после этого говорят - вот видите, все работает, выкиньте Вашу FreeBSD, до свидания. После начинаешь проверять - и оказывается, что основной сервер VPN (IP которого резолвится через имя vpn.corbina.net) уже другой. Поэтому старайтесь все-же указывать в файле mpd.links не peer IP, а peer имя, указывающее на сервер VPN.

Устранение некоторых проблем на UNIX можно найти на форуме homenet.corbina.net. Ищите там раздел "Домашний интернет группы компаний "Вымпелком" - форумы > Все о компьютерах > Linux/UNIX".


[Краткая памятка по командам при наладке Интернета]

ifconfig
   Узнаем IP адреса на внешней сетевой карте, а так же тут увидим, создался ли виртуальный сетевой адаптер VPN-сессии (у меня это ng0):
msinhome# ifconfig
fxp0: flags=8843 mtu 1500
        options=8
        inet 10.160.103.223 netmask 0xfffff800 broadcast 10.160.103.255
        ether 00:90:27:29:5b:8e
        media: Ethernet autoselect (100baseTX )
        status: active
fxp1: flags=8843 mtu 1500
        options=8
        inet 192.168.7.254 netmask 0xffffff00 broadcast 192.168.7.255
        ether 00:d0:b7:28:60:71
        media: Ethernet autoselect (100baseTX )
        status: active
plip0: flags=108810 mtu 1500
lo0: flags=8049 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
ng0: flags=88d1 mtu 1460
        inet 78.106.117.234 --> 85.21.0.148 netmask 0xffffffff

netstat -rn
   Смотрим прописанные маршруты в системе, видим шлюз по умолчанию (10.160.96.1):
msinhome# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            85.21.0.148        UGS         0     4136    ng0
10                 10.160.96.1        UGS         0       48   fxp0
10.160.96/21       link#1             UC          0        0   fxp0
10.160.96.1        00:15:e9:39:5c:02  UHLW       24       51   fxp0   1199
10.160.96.243      00:1e:8c:a5:b7:ef  UHLW        1        3   fxp0   1199
10.160.103.223     00:90:27:29:5b:8e  UHLW        2        0    lo0
78.106.117.234     lo0                UHS         0        0    lo0
78.107.23/24       10.160.96.1        UGS         0        0   fxp0
78.107.51/28       10.160.96.1        UGS         0        0   fxp0
78.107.196/22      10.160.96.1        UGS         0        0   fxp0
78.107.235.4/30    10.160.96.1        UGS         0        0   fxp0
83.102.146.96/27   10.160.96.1        UGS         0        0   fxp0
83.102.231.32/28   10.160.96.1        UGS         0        0   fxp0
85.21.0.15         10.160.96.1        UGHS        0        0   fxp0
85.21.0.41         10.160.96.1        UGHS        0        0   fxp0
85.21.0.43         10.160.96.1        UGHS        0        0   fxp0
85.21.0.51         10.160.96.1        UGHS        0        0   fxp0
85.21.0.148        10.160.96.1        UGHS        1     4804   fxp0
85.21.0.254        10.160.96.1        UGHS        0        0   fxp0
85.21.72.80/28     10.160.96.1        UGS         0       98   fxp0
85.21.79/24        10.160.96.1        UGS         0        0   fxp0
85.21.90/24        10.160.96.1        UGS         0        0   fxp0
85.21.108.16/28    10.160.96.1        UGS         0        0   fxp0
85.21.138.208/28   10.160.96.1        UGS         0        0   fxp0
85.21.192.3        10.160.96.1        UGHS        0      117   fxp0
127.0.0.1          127.0.0.1          UH          0      122    lo0
192.168.7          link#2             UC          0        0   fxp1
192.168.7.1        00:0e:a6:5a:43:56  UHLW        1    92733   fxp1   1066
195.14.50.21       10.160.96.1        UGHS        0    39136   fxp0
213.234.192.8      10.160.96.1        UGHS        0      202   fxp0
217.118.84.213/32  10.160.96.1        UGS         0        0   fxp0
217.118.84.249/32  10.160.96.1        UGS         0        0   fxp0
233.32.240         10.160.103.223     UGS         0        0   fxp0

Internet6:
Destination                       Gateway                       Flags      Netif Expire
::1                               ::1                           UHL         lo0
fe80::%lo0/64                     fe80::1%lo0                   U           lo0
fe80::1%lo0                       link#4                        UHL         lo0
ff01:4::/32                       fe80::1%lo0                   UC          lo0
ff02::%lo0/32                     fe80::1%lo0                   UC          lo0

ping
   Ну про эту команду все знают. Первейшая наша задача - проверить доступность сервера VPN, а иногда доступность предполагаемых адресов DNS, да или просто работоспособность Интернета:
ping 10.160.96.1 (проверка шлюза по умолчанию) 
ping vpn.corbina.net (проверка сервера PPTP VPN, а заодно и работу сервера DNS).
ping www.mail.ru
ping yandex.ru
ping google.ru

killall -USR2 mpd
   Сброс сессии VPN (VPN-соединение разрывается, Интернет перестает работать).

killall -USR1 mpd
   Установка новой сессии VPN (Интернет начинает работать).

tail -f /var/log/mpd.log
tail -n 100 -f /var/log/mpd.log
   Следим за логом mpd (будет отображаться его хвост) - тут в реальном времени будут видны попытки соединения, и из лога можно выудить много полезной информации (он довольно подробный, что хорошо для диагностики). В приведенном примере показан дамп успешного соединения (сервер VPN в этом случае был найден через DNS по имени vpn.corbina.net - 85.21.0.148).
Jun 23 21:05:13 msinhome mpd:  IPADDR 78.106.117.234
Jun 23 21:05:13 msinhome mpd: [vpn] IPCP: state change Ack-Sent --> Opened
Jun 23 21:05:13 msinhome mpd: [vpn] IPCP: LayerUp
Jun 23 21:05:13 msinhome mpd:   78.106.117.234 -> 85.21.0.148
Jun 23 21:05:13 msinhome mpd: [vpn] IFACE: Up event
Jun 23 21:05:13 msinhome mpd: [vpn] setting interface ng0 MTU to 1460 bytes
Jun 23 21:05:13 msinhome mpd: [vpn] exec: /sbin/ifconfig ng0 78.106.117.234 85.21.0.148 netmask 0xffffffff -link0
Jun 23 21:05:13 msinhome mpd: [vpn] exec: /sbin/route add 78.106.117.234 -iface lo0
Jun 23 21:05:13 msinhome mpd: [vpn] exec: /usr/local/etc/mpd/io-up.sh ng0 inet 78.106.117.234 85.21.0.148 msin
Jun 23 21:05:13 msinhome mpd: [vpn] IFACE: Up event

more -f /var/log/mpd.log
   Вывод лога полностью. Внимание - файл может оказаться очень большой, до конца не доберетесь. Лучше используйте tail -n 100 -f /var/log/mpd.log (после опции -n указывается нужное число строк).

traceroute
   Тоже общеизвестная команда. Строим маршрут до нужного узла, и смотрим, где обрыв:
msinhome# traceroute google.ru
traceroute: Warning: google.ru has multiple addresses; using 74.125.77.104
traceroute to google.ru (74.125.77.104), 64 hops max, 40 byte packets
 1  vpn148-l0.msk.corbina.net (85.21.0.148)  1.315 ms  1.341 ms  0.902 ms
 2  * * *
 3  195.14.54.48 (195.14.54.48)  19.186 ms  19.169 ms  19.345 ms
 4  ko-crs-teng0-7-0-4.msk.corbina.net (195.14.54.184)  19.090 ms  19.208 ms  19.031 ms
 5  tc-bb-teng3-2.msk.corbina.net (195.14.54.223)  19.281 ms  19.365 ms  19.216 ms
 6  bankrost-lgw.Moscow.gldn.net (195.239.10.57)  35.376 ms  19.314 ms  28.946 ms
 7  cat01.Frankfurt.gldn.net (194.186.80.233)  48.885 ms  54.160 ms  51.422 ms
 8  de-cix10.net.google.com (80.81.192.108)  46.822 ms  46.787 ms  46.559 ms
 9  209.85.255.172 (209.85.255.172)  46.932 ms
    209.85.255.170 (209.85.255.170)  46.995 ms  46.970 ms
10  209.85.248.182 (209.85.248.182)  50.173 ms
    209.85.250.140 (209.85.250.140)  77.381 ms
    209.85.248.182 (209.85.248.182)  51.109 ms
11  209.85.248.79 (209.85.248.79)  53.818 ms
    64.233.175.246 (64.233.175.246)  53.919 ms  54.180 ms
12  72.14.239.197 (72.14.239.197)  69.100 ms  54.289 ms
    72.14.239.199 (72.14.239.199)  54.628 ms
13  209.85.255.106 (209.85.255.106)  59.127 ms
    209.85.255.102 (209.85.255.102)  60.501 ms  54.519 ms
14  * * *
15  * * *
16  *^C
  


[Ссылки]   

1FreeBSD: настройка NAT с помощью ipnat.
2. FreeBSD ipnat: автоматическая поддержка правил NAT в актуальном состоянии.
3. FreeBSD: описание демона mpd.

 

Комментарии  

 
0 #2 кнез 28.09.2009 11:58
:sad: и почему я сразу на эту статью не наткнулся, а мучил гуглу месяц да сам всё настраивал курением мана :-?
Цитировать
 
 
0 #1 rpek 31.10.2008 02:41
ты меня спас, большое человеческое спасибо.
только в статье поправь
вместо:
route dns1="213.234.192.8 10.160.96.1"
route vpnpptp01="85.21.0.15 10.160.96.1"
route vpnl2tp01="85.21.0.254 10.160.96.1"

надо:
route_dns1="213.234.192.8 10.160.96.1"
route_vpnpptp01="85.21.0.15 10.160.96.1"
route_vpnl2tp01="85.21.0.254 10.160.96.1"
по крайней мере у меня на 7.0

microsin: благодарю что заметили очепатку, исправил.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page