IPFW kernel nat - не работает port redirect

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
xrensgory
рядовой
Сообщения: 22
Зарегистрирован: 2011-11-18 15:13:06

IPFW kernel nat - не работает port redirect

Непрочитанное сообщение xrensgory » 2013-04-02 17:10:04

Доброго времени.
Возникла проблема при переезде с pf на ipfw.
Собственно не работает redirect_port.
Правила свел к минимуму, пробовал различные варианты из статей, man ipfw и т.п.
Т.е. в принципе работать должно, пакетов, подходящих под правило deny нет. Но видимо что-то не так, поэтому прошу помочь разобраться. Спасибо.

Конфигурация следующаю:

Код: Выделить всё

[root@ns1 /usr/local/etc/rc.d]# uname -srm
FreeBSD 9.1-STABLE amd64

Код: Выделить всё

# sysctl -a | grep one.pass
net.inet.ip.fw.one_pass: 1

Код: Выделить всё

[root@ns1 /usr/src/sys/amd64/conf]# awk '(NR>32 && NR<48) {print}' SERVER_IPFW

# IPFW Support
options         IPFIREWALL
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPFIREWALL_FORWARD
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_NAT
options         DUMMYNET
options         LIBALIAS
options         ROUTETABLES=2
options         MROUTING
# POLLING
options DEVICE_POLLING
options HZ="1000"

Код: Выделить всё

[root@ns1 ~]# grep ifconfig /etc/rc.conf
ifconfig_em0="DHCP -rxcsum -tso"
ifconfig_msk1="inet 192.168.248.1 netmask 255.255.255.240 promisc -rxcsum -tso"
ifconfig_msk0="inet 192.168.248.16 netmask 255.255.255.240 -rxcsum -tso"

Код: Выделить всё

[root@ns1 ~]# cat /etc/ipfw.conf
#!/bin/sh
ovpn_if="tap0"
inet_if="ng0"
beeline_if="em0"
local_if="msk1"
wi_if="wlan0"
xbox_if="msk0"

fwcmd="/sbin/ipfw -f"

${fwcmd} -f flush

# Tables
${fwcmd} table 0 add 192.168.248.0/28 # local_if:network
${fwcmd} table 0 add 172.30.248.0/24  # wi_if:network
${fwcmd} table 0 add 192.168.2.0/30   # xbox_if:network

${fwcmd} table 1 add 192.168.0.0/18   # ovpn_if:network

# Loopback
${fwcmd} add pass all from any to any via lo0
${fwcmd} add deny all from any to 127.0.0.1/8
${fwcmd} add deny all from 127.0.0.1/8 to any

${fwcmd} add pass tcp from any to any established

# L2TP
${fwcmd} add pass { tcp or udp } from any 1701 to any 1701 via ${beeline_if} keep-state

# IPTV
${fwcmd} add pass igmp from any to any
${fwcmd} add pass udp from any to 224.0.0.0/4
${fwcmd} add pass udp from 224.0.0.0/4 to any

#NAT
${fwcmd} nat 1 config log if ${inet_if} same_ports reset deny_in redirect_port tcp 192.168.248.4:5900 5900
${fwcmd} add nat 1 all from any to not table\(1\) via ${inet_if}

${fwcmd} nat 2 config log if ${beeline_if} same_ports reset deny_in
${fwcmd} add nat 2 all from any to any via ${beeline_if}

${fwcmd} nat 3 config log if ${ovpn_if} same_ports reset deny_in redirect_port tcp 192.168.248.4:5900 5900
${fwcmd} add nat 3 all from any to any via ${ovpn_if}

# Local
${fwcmd} add pass all from any to any via ${wi_if}
${fwcmd} add pass all from any to any via ${xbox_if}
${fwcmd} add pass all from any to any via ${ovpn_if}
${fwcmd} add pass all from any to any via ${local_if}

# Drop
${fwcmd} add deny log logamount 100 all from any to any

Код: Выделить всё

[root@ns1 ~]# ipfw -a list
00100   216    13132 allow ip from any to any via lo0
00200     0        0 deny ip from any to 127.0.0.0/8
00300     0        0 deny ip from 127.0.0.0/8 to any
00400  9657  1380653 allow tcp from any to any established
00500 10077  1791067 allow { tcp or udp } from any 1701 to any dst-port 1701 via em0 keep-state
00600    27      768 allow igmp from any to any
00700 58953 79000388 allow udp from any to 224.0.0.0/4
00800     0        0 allow udp from 224.0.0.0/4 to any
00900   483    39712 nat 1 ip from any to not table(1) via ng0
01000    55     5948 nat 2 ip from any to any via em0
01100  6681   494553 nat 3 ip from any to any via tap0
01200     4      946 allow ip from any to any via wlan0
01300     0        0 allow ip from any to any via msk0
01400     0        0 allow ip from any to any via tap0
01500  6790  1347922 allow ip from any to any via msk1
01600     0        0 deny log logamount 100 ip from any to any
65535   942   394652 allow ip from any to any
Последний раз редактировалось f_andrey 2013-04-03 5:47:52, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.
"Если человек не пьет, и не курит, поневоле задумываешься, уж не сволочь ли он?" (с) Антон Павлович Чехов

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

xrensgory
рядовой
Сообщения: 22
Зарегистрирован: 2011-11-18 15:13:06

Re: IPFW kernel nat - не работает port redirect

Непрочитанное сообщение xrensgory » 2013-04-02 17:17:17

Код: Выделить всё

[root@ns1 ~]# tcpdump -n -i ng0 tcp port 5900
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ng0, link-type NULL (BSD loopback), capture size 65535 bytes
18:12:39.432143 IP 91.239.60.12.50004 > 78.107.255.10.5900: Flags [S], seq 3281293527, win 14600, options [mss 1416,sackOK,TS val 1133574953 ecr 0,nop,wscale 5], length 0
18:12:42.431559 IP 91.239.60.12.50004 > 78.107.255.10.5900: Flags [S], seq 3281293527, win 14600, options [mss 1416,sackOK,TS val 1133577953 ecr 0,nop,wscale 5], length 0
18:12:48.431933 IP 91.239.60.12.50004 > 78.107.255.10.5900: Flags [S], seq 3281293527, win 14600, options [mss 1416,sackOK,TS val 1133583953 ecr 0,nop,wscale 5], length 0

Код: Выделить всё

[root@ns1 /home/asterisk]# tcpdump -n -i msk1 tcp port 5900
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on msk1, link-type EN10MB (Ethernet), capture size 65535 bytes
18:12:39.432170 IP 91.239.60.12.50004 > 192.168.248.4.5900: Flags [S], seq 3281293527, win 14600, options [mss 1416,sackOK,TS val 1133574953 ecr 0,nop,wscale 5], length 0
18:12:42.431586 IP 91.239.60.12.50004 > 192.168.248.4.5900: Flags [S], seq 3281293527, win 14600, options [mss 1416,sackOK,TS val 1133577953 ecr 0,nop,wscale 5], length 0
18:12:48.431966 IP 91.239.60.12.50004 > 192.168.248.4.5900: Flags [S], seq 3281293527, win 14600, options [mss 1416,sackOK,TS val 1133583953 ecr 0,nop,wscale 5], length 0
Не могу понять, почему обратно не летят
"Если человек не пьет, и не курит, поневоле задумываешься, уж не сволочь ли он?" (с) Антон Павлович Чехов