Всем привет!
У меня творится какой-то полтергейст с NAT`ом. Уже вторую неделю парюсь и не пойму где грабли.
Есть сервер, на котором установлен UNIX FreeBSD 6.0. В этом сервере есть две сетевые карты. Одна смотрит в Инет. Её IP-адрес 192.168.49.26. Вторая смотрит в квартирную локалку. IP-адрес второй сетевухи 193.0.0.1. Компьютерам квартирной локалки назначены IP-адреса 193.0.0.2, 193.0.0.3 и 193.0.0.4.
Захотел я, чтобы все компы квартирной локалки выходили в Инет через NAT, запущенный на сервере. Всё настраивал по статье из Инета. Пересобрал ядро с соответствующими опциями, создал и отредактировал все нужные конфигурационные файлы, запустил NAT, FireWall. Сделал всё как описано в статье. ПОСЛЕ ЭТОГО ВСЁ ЗАРАБОТАЛО! НА ВСЕХ КОМПАХ КВАРТИРНОЙ СЕТИ РАБОТАЛ ИНЕТ ЧЕРЕЗ NAT.
Потом мне в руки попался FreeBSD 6.1. Решил установить на сервак его. Сохранил все нужные конфигурационные файлы, чтобы потом их заново не создавать в FreeBSD 6.1, а просто их скопировать куда нужно.
Установил FreeBSD 6.1. Пересобрал точно также (используя сохранённый файл настроек ядра из FreeBSD 6.0) ядро. В нужные места скопировал сохранённые конфиги. Всё сделал один в один также как и в FreeBSD 6.0 (сохранённые конфиги). Ничего больше не менял. ИНЕТ ПЕРЕСТАЛ ТРАНСЛИРОВАТЬСЯ НА КОМПЫ КВАРТИРНОЙ ЛОКАЛКИ! Что я только не делал. Ничего не помогло. НА СЕРВЕРЕ ИНЕТ ПАШЕТ.
Но самое интересное не в этом! Как я уже говорил, все конфиги у меня были сохранены еще из FreeBSD 6.0. Я начисто установил обратно FreeBSD 6.0, пересобрал ядро, использую сохранённый конфигурационный файл ядра, опять куда нужно скопировал все конфиги, но ИНЕТ ЧЕРЕЗ NAT ТАК И НЕ ЗАРАБОТАЛ!!! НА СЕРВЕРЕ ИНЕТ ПАШЕТ. Пингую с любого компа из квартирной сети, например, Яндекс или вообще шлюз провайдера (192.168.1.1) через который осуществляется доступ в Инет, не воркает!
Вот я и не пойму как это так: конфиги одни и теже, грубо говоря просто переустановил FreeBSD 6.0 (если не считать установку FreeBSD 6.1), до переустановки всё работало, а после переустановки с теме же самыми настройками уже не работает! Я уже не знаю, что и делать. Ниже привожу содержимое всех требуемых конфигурационных файлов:Файл с настройками ядра, который нужен для компиляции ядра:
machine i386
cpu I686_CPU
ident PROMOSERVER# To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT#options SCHED_ULE # ULE scheduler
options SCHED_4BSD # 4BSD scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_GPT # GUID Partition Tables.
options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options KTRACE # ktrace(1) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
options ADAPTIVE_GIANT # Giant mutex is adaptive.# Bus support.
device isa
device pci# Floppy drives
device fdc# ATA and ATAPI devices
device ata
device atadisk # ATA disk drives
device atapicd # ATAPI CDROM drives
options ATA_STATIC_ID # Static device numbering# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controller
device atkbd # AT keyboard
device psm # PS/2 mouse
device kbdmuxdevice vga # VGA video card driver
# syscons is the default console driver, resembling an SCO console
device sc# Enable this for the pcvt (VT220 compatible) console driver
#device vt
#options XSERVER # support for X server on a vt console
#options FAT_CURSOR # start with block cursordevice agp # support several AGP chipsets
# Power management support (see NOTES for more options)
#device apm
# Add suspend/resume support for the i8254.
device pmtimer# Serial (COM) ports
device sio # 8250, 16[45]50 based serial ports# Parallel port
device ppbus # Parallel port bus (required)
device ppi # Parallel port interface device
#device vpo # Requires scbus and da# If you've got a "dumb" serial or parallel PCI card that is
# supported by the puc(4) glue driver, uncomment the following
# line to enable it (connects to the sio and/or ppc drivers):
#device puc# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device miibus # MII bus support
device rl # RealTek 8129/8139
device vr # VIA Rhine, Rhine II
# Pseudo devices.
device loop # Network loopback
device random # Entropy device
device ether # Ethernet support
device tun # Packet tunnel.
device pty # Pseudo-ttys (telnet etc)
device gif # IPv6 and IPv4 tunnelingdevice bpf
Файл /etc/rc.firewall:
#!/bin/sh -#Обьявляем переменную для облегчения написания правил. Ключик -q подавляет вывод сообщений ipfw на консоль
fwcmd="/sbin/ipfw -q"# Данные по внешней сети
LanOut="rl0"
IPOut="192.168.49.26"
NetOut="24"
MaskOut="255.255.255.0"# Данные по локальной сети
LanIn="vr0"
IPIn="193.0.0.1"
NetInIP="193.0.0.0"
NetInMask="24"
MaskIn="255.255.255.0"# Привелигированные адрес (доступ избранным)
MyIP1="193.0.0.1"
MyIP2="193.0.0.2"
MyIP3="193.0.0.3"
MyIP4="193.0.0.4"# Сбросить все правила которые устанавливались ранее
${fwcmd} -f flush# Пропускать все пакеты сгенерированные сервером (кажется что lo0 настолько понятно, что не знаешь как еще обьяснить :))
# Без этого вообще ничего работать не будет :)
${fwcmd} add pass all from any to any via lo0# Отправляем пакеты из внутренней сети наружу и с наружи для внутренней сети на обработку NAT
${fwcmd} add divert natd ip from ${NetInIP}/${NetInMask} to any out via ${LanOut}
${fwcmd} add divert natd ip from any to ${IPOut} in via ${LanOut}# Это и следующее правила значительно облегчают жизнь файрволу :)
# Пропускаем все соединения с установленным битом RST или ACK
# По другому - пропускаем установленные соединения соединение
${fwcmd} add pass tcp from any to any established
# Разрешаем все пакеты выходящие из внешнего интерфейса с внешнего IP
${fwcmd} add pass ip from ${IPOut} to any out xmit ${LanOut}# Избранным беспрепятственный доступ (все открывать неразумно)
${fwcmd} add pass tcp from ${MyIP1} to any 20,21,22,23,80,443,4000
${fwcmd} add pass tcp from any 20,21,22,23,80,443,4000 to ${MyIP1}
${fwcmd} add pass tcp from ${MyIP2} to any 20,21,22,23,80,443,4000
${fwcmd} add pass tcp from any 20,21,22,23,80,443,4000 to ${MyIP2}
${fwcmd} add pass tcp from ${MyIP3} to any 20,21,22,23,80,443,4000
${fwcmd} add pass tcp from any 20,21,22,23,80,443,4000 to ${MyIP3}
${fwcmd} add pass tcp from ${MyIP4} to any 20,21,22,23,80,443,4000
${fwcmd} add pass tcp from any 20,21,22,23,80,443,4000 to ${MyIP4}# Разрешаем почту, DNS
${fwcmd} add pass tcp from any to any 25,110 via ${LanOut}
${fwcmd} add pass tcp from any 25,110 to any via ${LanOut}
${fwcmd} add pass udp from any to any 53 via ${LanOut}
${fwcmd} add pass udp from any 53 to any via ${LanOut}${fwcmd} add pass all from any to any via ${LanIn}
#ICMP
${fwcmd} add allow icmp from any to ${IPOut} in via ${LanOut} icmptype 0,3,4,11,12
${fwcmd} add allow icmp from any to ${NetInIP}/${NetInMask} in via ${LanOut} icmptype 0,3,4,11,12
${fwcmd} add allow icmp from ${IPOut} to any out via ${LanOut} icmptype 3,8,12
${fwcmd} add allow icmp from ${IPOut} to any out via ${LanOut} frag${fwcmd} add deny log all from any to any via ${LanOut}
${fwcmd} add deny log ip from any to any
Файл /etc/natd.conf:same_ports yes
use_sockets yes
unregistered_only yes
Файл /etc/rc.conf:# -- sysinstall generated deltas -- # Tue Jun 6 02:33:57 2006
# Created: Tue Jun 6 02:33:57 2006
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
gateway_enable="YES"
hostname="dial-up.promoserver.net"
ifconfig_rl0="inet 192.168.49.26 netmask 255.255.255.0"
ifconfig_vr0="inet 193.0.0.1 netmask 255.255.255.0"
keymap="ru.koi8-r"
router="/sbin/routed"
router_enable="YES"
router_flags="-q"
static_routes="S Df"
route_S="-net 192.168.0.0 -iface rl0"
route_Df="-host default 192.168.1.1"
natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="rl0"
natd_flags="-f /etc/natd.conf"
sshd_enable="YES"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"Заранее спасибо!
покажи:
1) ifconfig
2) ipfw show
3) sockstat
>покажи:
>1) ifconfig
>2) ipfw show
>3) sockstatКак оно у вас работает с сеткой 193.0.0.0 - это не приватные сети, ключ -u у natd их не трогает. Или переезжайте в 192.168.0.0 172.16.0.0 10.0.0.0 или убирайте -u
Проверь также стартует ли НАТ при заргузке? У меня при апдейте с релиза 6.0 до stable - перестал при запуске НАТ стартовать. Пришлось запускать вручную через /usr/local/etc/rc.d
Не мучайтесь ерундой с сеткой 193.0.0.0, кроме охреневшего провайдера явятся к вам славные владельцы этой сетки и оборвут очумелые ручки.inetnum: 193.0.0.0 - 193.0.7.255
netname: RIPE-NCC
descr: RIPE Network Coordination Centre
descr: Amsterdam, Netherlands
remarks: Used for RIPE NCC infrastructure
> Не мучайтесь ерундой с сеткой 193.0.0.0, кроме охреневшего провайдера явятся к
>вам славные владельцы этой сетки и оборвут очумелые ручки.Не вводите в заблуждение, никто ничего не отровет. 193 сетка сидит за натом, ее адреса наружи нигде не будут светиться (при правильно настроенном NAT). Единственным минусом будет то, что реальные адреса 193 сетки будут недоступны из домашней сети.
Из вариантов: проверить слушает ли natd на порту 8668, и посмотреть не попадают ли ничего лишнего в /var/log/security. Можно еще включить log на правила с натом и посмотреть проходят ли пакеты в обе стороны.
>Не вводите в заблуждение, никто ничего не отровет. 193 сетка сидит за
>натом, ее адреса наружи нигде не будут светиться (при правильно настроенном
>NAT). Единственным минусом будет то, что реальные адреса 193 сетки будут
>недоступны из домашней сети.RFC и первые главы книг по TCP/IP для кого пишут ? Если каждый будет рулить адресным пространством IPv4 никому мало не покажется.... А сетка то как раз RIPE :-)
В данном случае, накеты с сети 193 не натились и запросы улетали к провайдеру, а ответы в сетку ripe. Еслу у провайдера динамическая маршрутизация, то чего там наколбасило - х.з.
> В данном случае, накеты с сети 193 не натились и запросы
>улетали к провайдеру, а ответы в сетку ripe. Еслу у провайдера
>динамическая маршрутизация, то чего там наколбасило - х.з.Ничего там не наколбасило. Даже если шлюз провайдера NAT'ом пропустил пакет с таким адресом источника, то ответ назад все равно не вернулся. И никакой вселенской катастрофы не произошло.
>> В данном случае, накеты с сети 193 не натились и запросы
>>улетали к провайдеру, а ответы в сетку ripe. Еслу у провайдера
>>динамическая маршрутизация, то чего там наколбасило - х.з.
>
>Ничего там не наколбасило. Даже если шлюз провайдера NAT'ом пропустил пакет с
>таким адресом источника, то ответ назад все равно не вернулся.
>И никакой вселенской катастрофы не произошло.Вот таким как Вы могут припоять соответствующие статьи УК - за деструктивные действия.
/proc/sys/net/ipv4/ip_forwarding = 1 ???
>/proc/sys/net/ipv4/ip_forwarding = 1 ???
Это ФРЯ ! %-)
>Вот таким как Вы могут припоять соответствующие статьи УК - за деструктивные
>действия.
А таким болтунам как вы отказать в доверии.
Всем огромное спасибо за помошь!!! Всё заработало! Я просто в файле /etc/natd.conf опцию unregistered_only с yes поменял на no. Т.е. теперь unregistered_only no.
Еще раз всем спасибо!