URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 76913
[ Назад ]

Исходное сообщение
"NAT не пропускает часть клиентов"

Отправлено Владимир , 20-Окт-07 18:49 
Ситуация такая. Есть FreeBSD. Настроен НАТ. Непонимаю почему, но часть клиентов нат не пропускает. Внутренний интерфейс виден а внешний нет.

sterver# ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
        ether 00:00:e8:44:02:f3
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 195.128.17.242 netmask 0xfffffffc broadcast 195.128.17.243
        ether 00:60:08:37:6e:95
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active

может ещё какие-то настройки сказать?


Содержание

Сообщения в этом обсуждении
"NAT не пропускает часть клиентов"
Отправлено DN , 22-Окт-07 00:12 
>Ситуация такая. Есть FreeBSD. Настроен НАТ. Непонимаю почему, но часть клиентов нат
>не пропускает. Внутренний интерфейс виден а внешний нет.
>
>sterver# ifconfig
>может ещё какие-то настройки сказать?

Командную строку запуска natd и его конфигурационный файл.
ipfw show


"NAT не пропускает часть клиентов"
Отправлено Владимир , 24-Окт-07 21:51 
>>Ситуация такая. Есть FreeBSD. Настроен НАТ. Непонимаю почему, но часть клиентов нат
>>не пропускает. Внутренний интерфейс виден а внешний нет.
>>
>>sterver# ifconfig
>>может ещё какие-то настройки сказать?
>
>Командную строку запуска natd и его конфигурационный файл.
>ipfw show

/etc/rc.local
/sbin/natd -p 8668 -a 195.128.17.242
/sbin/natd -p 8778 -a 192.168.1.1


ipwf show
00085      0        0 reject log logamount 10 tcp from any to any tcpflags syn,fin,ack,psh,rst,urg
00085    114     5472 deny ip from 192.168.0.0/24 to any dst-port 25
00085     18      840 deny ip from any 25 to me
00085     24     1152 deny ip from 192.168.0.0/24 to any dst-port 110
00085      0        0 deny ip from any 110 to me
00086      0        0 reject log logamount 10 tcp from any to any tcpflags !syn,!fin,!ack,!psh,!rst,!urg
00090   4878   186493 allow udp from any to me dst-port 7723
00090   1427   104043 allow udp from me 7723 to any
00091   2476  2769667 allow tcp from any to me setup limit src-addr 30
00091      0        0 allow udp from any to me setup limit src-addr 10
00092      2       80 allow ip from any to me dst-port 80
00092      0        0 allow ip from me 80 to any
00092      0        0 allow ip from any to me dst-port 22
00092      0        0 allow ip from me 22 to any
00093      0        0 allow tcp from any to me dst-port 21
00093      0        0 allow tcp from me 21 to any
00096      0        0 allow ip from any to any via lo0
00100 214659 41185732 divert 8778 ip from table(3) to not table(2)
00101  98689 19698980 fwd 192.168.1.19 ip from 192.168.1.1 to any
00102  77301 38755237 divert 8778 ip from any to 192.168.1.1
00108 174587 25199395 divert 8668 ip from 192.168.0.0/24 to any
00110  45808 53251757 divert 8668 ip from any to 195.128.17.242
00210  76549 55370072 allow ip from any to any via rl0
00215    187    32220 allow ip from any to me
00215   1096    61292 allow ip from me to any
00220     25     2945 allow ip from 192.168.1.0/24 to 192.168.1.0/24
40002      1      260 pipe 13 ip from table(2) to 192.168.0.241
40002      1       59 pipe 15 ip from 192.168.0.241 to table(2)
40002     80    12922 pipe 12 ip from not table(2) to 192.168.0.241
40002     41     3880 pipe 14 ip from 192.168.0.241 to not table(2)
40003     28     7366 pipe 17 ip from table(2) to 192.168.0.103
40003     29     1772 pipe 19 ip from 192.168.0.103 to table(2)
40003   5868  6327724 pipe 16 ip from not table(2) to 192.168.0.103
40003   2591   287764 pipe 18 ip from 192.168.0.103 to not table(2)
40004     30     7839 pipe 21 ip from table(2) to 192.168.0.105
40004     30     1817 pipe 23 ip from 192.168.0.105 to table(2)
40004   1678   257398 pipe 20 ip from not table(2) to 192.168.0.105
40004   1148   122631 pipe 22 ip from 192.168.0.105 to not table(2)
40005      0        0 pipe 25 ip from table(2) to 192.168.0.173
40005      0        0 pipe 27 ip from 192.168.0.173 to table(2)
40005      0        0 pipe 24 ip from not table(2) to 192.168.0.173
40005      1      229 pipe 26 ip from 192.168.0.173 to not table(2)
40006      4     1201 pipe 29 ip from table(2) to 192.168.0.156
40006      4      281 pipe 31 ip from 192.168.0.156 to table(2)
40006   1112    51936 pipe 28 ip from not table(2) to 192.168.0.156
40006    578    31910 pipe 30 ip from 192.168.0.156 to not table(2)
40007    130   136231 pipe 33 ip from table(2) to 192.168.0.60
40007    103    10432 pipe 35 ip from 192.168.0.60 to table(2)
40007    580    84502 pipe 32 ip from not table(2) to 192.168.0.60
40007    334    39921 pipe 34 ip from 192.168.0.60 to not table(2)
40008     66    15946 pipe 37 ip from table(2) to 192.168.0.112
40008     66     4149 pipe 39 ip from 192.168.0.112 to table(2)
40008   5454  3171976 pipe 36 ip from not table(2) to 192.168.0.112
40008   3216   242028 pipe 38 ip from 192.168.0.112 to not table(2)
40009     66    13051 pipe 41 ip from table(2) to 192.168.0.172
40009     50     3118 pipe 43 ip from 192.168.0.172 to table(2)
40009  79071 45936408 pipe 40 ip from not table(2) to 192.168.0.172
40009  45736  9070323 pipe 42 ip from 192.168.0.172 to not table(2)
40010     11     4082 pipe 45 ip from table(2) to 192.168.0.100
40010     11      655 pipe 47 ip from 192.168.0.100 to table(2)
40010    546   551220 pipe 44 ip from not table(2) to 192.168.0.100
40010    259    22318 pipe 46 ip from 192.168.0.100 to not table(2)
40011      1      147 pipe 49 ip from table(2) to 192.168.0.168
40011      1       64 pipe 51 ip from 192.168.0.168 to table(2)
40011      4      214 pipe 48 ip from not table(2) to 192.168.0.168
40011     24     2033 pipe 50 ip from 192.168.0.168 to not table(2)
40012     21     3178 pipe 53 ip from table(2) to 192.168.0.107
40012     13      779 pipe 55 ip from 192.168.0.107 to table(2)
40012  10256   659920 pipe 52 ip from not table(2) to 192.168.0.107
40012  10127  2812832 pipe 54 ip from 192.168.0.107 to not table(2)
40013     26     8591 pipe 57 ip from table(2) to 192.168.0.160
40013     26     1595 pipe 59 ip from 192.168.0.160 to table(2)
40013    594   231702 pipe 56 ip from not table(2) to 192.168.0.160
40013    364    38509 pipe 58 ip from 192.168.0.160 to not table(2)
40014    132    22238 pipe 61 ip from table(2) to 192.168.0.106
40014    126     8209 pipe 63 ip from 192.168.0.106 to table(2)
40014  10612  6853870 pipe 60 ip from not table(2) to 192.168.0.106
40014   8144   834535 pipe 62 ip from 192.168.0.106 to not table(2)
40015     30     5323 pipe 65 ip from table(2) to 192.168.0.109
40015     18     1090 pipe 67 ip from 192.168.0.109 to table(2)
40015   2464   222044 pipe 64 ip from not table(2) to 192.168.0.109
40015   4346   313525 pipe 66 ip from 192.168.0.109 to not table(2)
40016   4960  6301321 pipe 69 ip from table(2) to 192.168.0.117
40016   3735   195509 pipe 71 ip from 192.168.0.117 to table(2)
40016   1466   872597 pipe 68 ip from not table(2) to 192.168.0.117
40016    724    81609 pipe 70 ip from 192.168.0.117 to not table(2)
40017      2      484 pipe 73 ip from table(2) to 192.168.0.186
40017      2      117 pipe 75 ip from 192.168.0.186 to table(2)
40017    314    91382 pipe 72 ip from not table(2) to 192.168.0.186
40017    146    15284 pipe 74 ip from 192.168.0.186 to not table(2)
40018    100    65273 pipe 77 ip from table(2) to 192.168.0.243
40018     93     4450 pipe 79 ip from 192.168.0.243 to table(2)
40018    166    59674 pipe 76 ip from not table(2) to 192.168.0.243
40018     74    10889 pipe 78 ip from 192.168.0.243 to not table(2)
40019   1423  1756545 pipe 81 ip from table(2) to 192.168.0.218
40019   1199   118204 pipe 83 ip from 192.168.0.218 to table(2)
40019   1006   509368 pipe 80 ip from not table(2) to 192.168.0.218
40019    499    57529 pipe 82 ip from 192.168.0.218 to not table(2)
40020     20     6669 pipe 85 ip from table(2) to 192.168.0.246
40020     20     1225 pipe 87 ip from 192.168.0.246 to table(2)
40020   1154   533588 pipe 84 ip from not table(2) to 192.168.0.246
40020    607    56943 pipe 86 ip from 192.168.0.246 to not table(2)
40021      0        0 pipe 89 ip from table(2) to 192.168.0.234
40021      0        0 pipe 91 ip from 192.168.0.234 to table(2)
40021      0        0 pipe 88 ip from not table(2) to 192.168.0.234
40021     15     1980 pipe 90 ip from 192.168.0.234 to not table(2)
40022      2      610 pipe 93 ip from table(2) to 192.168.0.237
40022      2      262 pipe 95 ip from 192.168.0.237 to table(2)
40022    300    82348 pipe 92 ip from not table(2) to 192.168.0.237
40022    282    36980 pipe 94 ip from 192.168.0.237 to not table(2)
40023     21     5900 pipe 97 ip from table(2) to 192.168.0.110
40023     21     1261 pipe 99 ip from 192.168.0.110 to table(2)
40023    478    75322 pipe 96 ip from not table(2) to 192.168.0.110
40023    336    35062 pipe 98 ip from 192.168.0.110 to not table(2)
40024  27922 38444798 pipe 101 ip from table(2) to 192.168.0.61
40024  13872   589639 pipe 103 ip from 192.168.0.61 to table(2)
40024   1662  1130202 pipe 100 ip from not table(2) to 192.168.0.61
40024   3291   313251 pipe 102 ip from 192.168.0.61 to not table(2)
40025    388    29488 pipe 105 ip from table(2) to 192.168.0.129
40025    646    31008 pipe 107 ip from 192.168.0.129 to table(2)
40025     12      744 pipe 104 ip from not table(2) to 192.168.0.129
40025    324    15663 pipe 106 ip from 192.168.0.129 to not table(2)
40026    206    89941 pipe 109 ip from table(2) to 192.168.0.134
40026    252    57368 pipe 111 ip from 192.168.0.134 to table(2)
40026   1414  1613382 pipe 108 ip from not table(2) to 192.168.0.134
40026    753    67458 pipe 110 ip from 192.168.0.134 to not table(2)
40027      1      257 pipe 113 ip from table(2) to 192.168.0.161
40027      1       63 pipe 115 ip from 192.168.0.161 to table(2)
40027     14     7176 pipe 112 ip from not table(2) to 192.168.0.161
40027     18     1632 pipe 114 ip from 192.168.0.161 to not table(2)
40028   1262   936138 pipe 117 ip from table(2) to 192.168.0.213
40028   1318   199667 pipe 119 ip from 192.168.0.213 to table(2)
40028    226    98596 pipe 116 ip from not table(2) to 192.168.0.213
40028    188    19758 pipe 118 ip from 192.168.0.213 to not table(2)
40029     79    15571 pipe 121 ip from table(2) to 192.168.0.104
40029     81     5567 pipe 123 ip from 192.168.0.104 to table(2)
40029  11060  2382884 pipe 120 ip from not table(2) to 192.168.0.104
40029  10737  4400527 pipe 122 ip from 192.168.0.104 to not table(2)
40030     45     9390 pipe 125 ip from table(2) to 192.168.0.114
40030     43     2645 pipe 127 ip from 192.168.0.114 to table(2)
40030   4591  1200089 pipe 124 ip from not table(2) to 192.168.0.114
40030   3334   649968 pipe 126 ip from 192.168.0.114 to not table(2)
40032      5     1565 pipe 133 ip from table(2) to 192.168.0.151
40032      6      346 pipe 135 ip from 192.168.0.151 to table(2)
40032     54     9150 pipe 132 ip from not table(2) to 192.168.0.151
40032     42     6047 pipe 134 ip from 192.168.0.151 to not table(2)
40033   2951  1687942 pipe 137 ip from table(2) to 192.168.0.153
40033   1839    82676 pipe 139 ip from 192.168.0.153 to table(2)
40033      8     1384 pipe 136 ip from not table(2) to 192.168.0.153
40033     70    21403 pipe 138 ip from 192.168.0.153 to not table(2)
40037    284   223298 pipe 153 ip from table(2) to 192.168.0.177
40037    293    25972 pipe 155 ip from 192.168.0.177 to table(2)
40037    666   323024 pipe 152 ip from not table(2) to 192.168.0.177
40037    400    39787 pipe 154 ip from 192.168.0.177 to not table(2)
40038      0        0 pipe 157 ip from table(2) to 192.168.0.181
40038      0        0 pipe 159 ip from 192.168.0.181 to table(2)
40038      0        0 pipe 156 ip from not table(2) to 192.168.0.181
40038      2      307 pipe 158 ip from 192.168.0.181 to not table(2)
40044   2788  2199625 pipe 181 ip from table(2) to 192.168.0.188
40044   2636   420484 pipe 183 ip from 192.168.0.188 to table(2)
40044   4140  3113344 pipe 180 ip from not table(2) to 192.168.0.188
40044   2166   283239 pipe 182 ip from 192.168.0.188 to not table(2)
40068    138    30698 pipe 277 ip from table(2) to 192.168.0.113
40068    136     8572 pipe 279 ip from 192.168.0.113 to table(2)
40068   2238   472940 pipe 276 ip from not table(2) to 192.168.0.113
40068   1670   142542 pipe 278 ip from 192.168.0.113 to not table(2)
60000   2511   458150 deny ip from any to any
65100      0        0 deny tcp from any to any dst-port 3128,8080
65150      0        0 skipto 65400 ip from any to any
65200      0        0 deny tcp from any to any dst-port 3128,8080
65270      0        0 deny ip from any to any
65534   4675   388275 deny ip from any to any
65535      0        0 allow ip from any to any


самое интересное, что у клиента не ходят пинги даже на внешний интерфейс и в tcpdump нет абсолютно никакой информации по поводу ICMP пакетов на внешний интерфейс (tcpdump снимался на внутреннем)


"NAT не пропускает часть клиентов"
Отправлено PxeL , 25-Окт-07 00:16 
ipfw show - не осилил :(
попробуй сделать всё в ацеп, если не идет всёравно, значит дело в роуте.

"NAT не пропускает часть клиентов"
Отправлено Энди , 25-Окт-07 09:14 
>[оверквотинг удален]
>00100 214659 41185732 divert 8778 ip from table(3) to not table(2)
>00101  98689 19698980 fwd 192.168.1.19 ip from 192.168.1.1 to any
>00102  77301 38755237 divert 8778 ip from any to 192.168.1.1
>00108 174587 25199395 divert 8668 ip from 192.168.0.0/24 to any
>00110  45808 53251757 divert 8668 ip from any to 195.128.17.242
>00210  76549 55370072 allow ip from any to any via rl0
>
>самое интересное, что у клиента не ходят пинги даже на внешний интерфейс
>и в tcpdump нет абсолютно никакой информации по поводу ICMP пакетов
>на внешний интерфейс (tcpdump снимался на внутреннем)

где ipfw table 2(3) list ?
сдается мне что раз у клиента даже пинги не ходят - проблемы у клиента...


"NAT не пропускает часть клиентов"
Отправлено DN , 25-Окт-07 12:52 

>>Командную строку запуска natd и его конфигурационный файл.
>>ipfw show
>
>/etc/rc.local
>/sbin/natd -p 8668 -a 195.128.17.242

Этот NAT на внешнем публичном адресе , интерфейс xl0

>/sbin/natd -p 8778 -a 192.168.1.1

Этот NAT зачем?

>ipwf show
>00085      0      

....

>  0 allow ip from me 22 to any
>00093      0      
>  0 allow tcp from any to me dst-port 21
>
>00093      0      
>  0 allow tcp from me 21 to any
>00096      0      
>  0 allow ip from any to any via lo0
>
>00100 214659 41185732 divert 8778 ip from table(3) to not table(2)

Зачем этот диверт, что тут натим? Загружены ли таблицы ip адресами?

/sbin/ipfw add divert 8778 ip from table(3) to not table(2) '[in|out]' via dc0

>00101  98689 19698980 fwd 192.168.1.19 ip from 192.168.1.1 to any
>00102  77301 38755237 divert 8778 ip from any to 192.168.1.1

/sbin/ipfw add divert 8778 ip from any to 192.168.1.1 '[in|out]' via dc0

>00108 174587 25199395 divert 8668 ip from 192.168.0.0/24 to any

/sbin/ipfw add divert 8668 ip from 192.168.0.0/24 to any out via xl0

>00110  45808 53251757 divert 8668 ip from any to 195.128.17.242

/sbin/ipfw add divert 8668 ip from any to 195.128.17.242 in via xl0

>00210  76549 55370072 allow ip from any to any via rl0

Про интерфейс rl0 Вы ничего не писали.

>00215    187    32220 allow ip from
>any to me
>00215   1096    61292 allow ip from me
>to any
>00220     25     2945 allow
>ip from 192.168.1.0/24 to 192.168.1.0/24
>40002      1      
>260 pipe 13 ip from table(2) to 192.168.0.241

...

Включайте здесь лог и смотрите.
/sbin/ipfw add deny log ip from any to any

>60000   2511   458150 deny ip from any to
>any

.....

>65535      0      
>  0 allow ip from any to any
>
>
>самое интересное, что у клиента не ходят пинги даже на внешний интерфейс
>и в tcpdump нет абсолютно никакой информации по поводу ICMP пакетов
>на внешний интерфейс (tcpdump снимался на внутреннем)

Вообщем, типичная работа над своими же ошибками.


"NAT не пропускает часть клиентов"
Отправлено Владимир , 25-Окт-07 15:01 
сейчас всё по порядку.
test# ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 195.128.17.242 netmask 0xfffffffc broadcast 195.128.17.243
        ether 00:30:84:27:ec:46
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
        ether 00:e0:4c:8a:53:8c
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
-----------------------------------------------------------
test# ipfw show
00085  reject log logamount 10 tcp from any to any tcpflags syn,fin,ack,psh,rst,urg
00085  deny ip from 192.168.0.0/24 to any dst-port 25
00085  deny ip from any 25 to me
00085  deny ip from 192.168.0.0/24 to any dst-port 110
00085  deny ip from any 110 to me
00086  reject log logamount 10 tcp from any to any tcpflags !syn,!fin,!ack,!psh,!rst,!urg
00090  allow udp from any to me dst-port 7723
00090  allow udp from me 7723 to any
00091  allow tcp from any to me setup limit src-addr 30
00091  allow udp from any to me setup limit src-addr 10
00092  allow ip from any to me dst-port 80
00092  allow ip from me 80 to any
00092  allow ip from any to me dst-port 22
00092  allow ip from me 22 to any
00093  allow tcp from any to me dst-port 21
00093  allow tcp from me 21 to any
00096  allow ip from any to any via lo0
00100  divert 8778 ip from table(3) to not table(2)
00101  fwd 192.168.1.19 ip from 192.168.1.1 to any
00102  divert 8778 ip from any to 192.168.1.1
00108  divert 8668 ip from 192.168.0.0/24 to any
00110  divert 8668 ip from any to 195.128.17.242
00210  allow ip from any to any via rl0
00215  allow ip from any to me
00215  allow ip from me to any
00220  allow ip from 192.168.1.0/24 to 192.168.1.0/24
*тут были pipe
60000  deny ip from any to any
65100  deny tcp from any to any dst-port 3128,8080
65150  skipto 65400 ip from any to any
65200  deny tcp from any to any dst-port 3128,8080
65270  deny ip from any to any
65534  deny ip from any to any
65535  allow ip from any to any
------------------------------------------------------------
test# ipfw table 2 list
это сети UA-IX
------------------------------------------------------------
test# ipfw table 3 list
это список локальных IP для которых нужно использовать перенаправление на 192.168.1.19
------------------------------------------------------------

топология сети:
есть внешний канал1 (подключен к rl0) 195.128.17.242
есть внешний канал2 (подключен к rl1 через алиас0 с IP 192.168.1.1) шлюз-192.168.1.19
есть внутренняя сеть с IP 192.168.0.0/24 (подлючена к rl1 без алиаса с IP 192.168.0.1)

Задача:
так как трафик делица на UA-IX & WORLD то:
для тех кто в таблице 3 перенапрявлять запросы на IP которые не в таблице 2 на 192.168.1.19. Остальные запросы перенапрявлять на rl0
------------------------------------------------------------
Проблема:
иногда у клиентов перестаёт быть боступен внешний интерфейс. в tcpdump от клиента (при пингах внешнего) на внутреннем интерфейсе вижу что-то вроди этого: arp 192.168.0.x is at MAC и больше ничего. Про наличие пакетов на внешнем интерфейсе я и не говорю - пусто.
------------------------------------------------------------
ещё заметил станности в netstat -rn. там появляются несуществующие IP со статусом link#1 или 2 но без MAC

test# netstat -rn (сейчас сдесь всё нормально)
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            195.128.17.241     UGS         0  9296103    rl0
127.0.0.1          127.0.0.1          UH          0    15274    lo0
192.168.0          link#2             UC          0        0    rl1
192.168.0.61       00:30:84:27:4f:f9  UHLW        1     3180    rl1   1094
192.168.0.99       00:16:17:96:05:25  UHLW        1      354    rl1   1057
192.168.0.117      00:e0:4c:03:6d:0c  UHLW        1     6919    rl1   1051
192.168.0.156      00:18:f3:7f:77:27  UHLW        1     7200    rl1   1051
192.168.0.168      00:13:8f:5a:5f:2a  UHLW        1       66    rl1   1117
192.168.0.209      00:14:2a:91:e8:6e  UHLW        1     7972    rl1   1117
192.168.0.226      00:16:17:4f:a7:3b  UHLW        1        6    rl1   1117
192.168.0.228      00:0c:6e:c4:24:44  UHLW        1        8    rl1   1064
192.168.0.246      00:50:fc:ce:db:44  UHLW        1        8    rl1   1064
192.168.0.247      00:0f:b0:fe:4f:a9  UHLW        1        8    rl1   1071
192.168.1          link#2             UC          0        0    rl1
192.168.1.19       00:13:46:f8:ec:c0  UHLW        1  3047753    rl1     55
195.128.17.240/30  link#1             UC          0        0    rl0
195.128.17.241     00:03:47:f7:ab:b2  UHLW        2        0    rl0    250
195.128.17.242     00:30:84:27:ec:46  UHLW        1      102    lo0


"NAT не пропускает часть клиентов"
Отправлено DN , 25-Окт-07 16:03 
>-----------------------------------------------------------
>test# ipfw show

....
>00096  allow ip from any to any via lo0

Все из 192.168.1.1 сразу форвардим на 192.168.1.19 , дивертить уже не надо.

/sbin/ipfw add fwd 192.168.1.19 ip from 192.168.1.1 to any

/sbin/ipfw add divert 8778 ip from table(3) to not table(2) in via rl1
/sbin/ipfw add divert 8778 ip from any to 192.168.1.1 in via rl1
/sbin/ipfw add divert 8668 ip from 192.168.0.0/24 to any out via rl0
/sbin/ipfw add divert 8668 ip from any to 195.128.17.242 in via rl0

Может так полегчает.

>[оверквотинг удален]
>Задача:
>так как трафик делица на UA-IX & WORLD то:
>для тех кто в таблице 3 перенапрявлять запросы на IP которые не
>в таблице 2 на 192.168.1.19. Остальные запросы перенапрявлять на rl0
>------------------------------------------------------------
>Проблема:
>иногда у клиентов перестаёт быть боступен внешний интерфейс. в tcpdump от клиента
>(при пингах внешнего) на внутреннем интерфейсе вижу что-то вроди этого: arp
>192.168.0.x is at MAC и больше ничего. Про наличие пакетов на
>внешнем интерфейсе я и не говорю - пусто.

А внешний интерфейс (195.128.17.242) не входит ли в таблицу 2 (UA-IX) ?


"NAT не пропускает часть клиентов"
Отправлено Владимир , 25-Окт-07 16:59 

>
>А внешний интерфейс (195.128.17.242) не входит ли в таблицу 2 (UA-IX) ?
>

входит наверно в 195.128.16.0/22
в этом может быть проблемка, хотя юольшинство пользователей работают нормально...


"NAT не пропускает часть клиентов"
Отправлено DN , 25-Окт-07 17:32 
>
>>
>>А внешний интерфейс (195.128.17.242) не входит ли в таблицу 2 (UA-IX) ?
>>
>
>входит наверно в 195.128.16.0/22
>в этом может быть проблемка, хотя юольшинство пользователей работают нормально...

Сделайте skipto для адресов из 192.168.0.0/24 в 195.128.17.242 и обратно, обойдя
правила с divert 8778 ( в вашем посте с 100 по 102 ).


"NAT не пропускает часть клиентов"
Отправлено Владимир , 25-Окт-07 18:42 
>[оверквотинг удален]
>>>
>>>А внешний интерфейс (195.128.17.242) не входит ли в таблицу 2 (UA-IX) ?
>>>
>>
>>входит наверно в 195.128.16.0/22
>>в этом может быть проблемка, хотя юольшинство пользователей работают нормально...
>
>Сделайте skipto для адресов из 192.168.0.0/24 в 195.128.17.242 и обратно, обойдя
>правила с divert 8778 ( в вашем посте с 100 по 102
>).

я к сожалению не большой гуру в написании правил. можете помочь в написании skipto

эти правила как-то не так работают, протестирую ещё с локалки
#${ipfw} add 100 divert 8778 ip from table\(3\) to not table\(2\) '[in|out]' vi
#${ipfw} add 101 fwd 192.168.1.19 ip from 192.168.1.1 to any
#${ipfw} add 102 divert 8778 ip from any to 192.168.1.1 '[in|out]' via  ${ifint
#${ipfw} add 103 divert 8668 ip from 192.168.0.0/24 to any out via ${ifextmir}
#${ipfw} add 104 divert 8668 ip from any to 195.128.17.242 in via ${ifextmir}

вернулся пока к старым
${ipfw} add 100 divert 8778 all from table\(3\) to not table\(2\)
${ipfw} add 101 fwd 192.168.1.19 all from 192.168.1.1 to any
${ipfw} add 102 divert 8778 all from any to 192.168.1.1

${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any
${ipfw} add 110 divert 8668 all from any to 195.128.17.242
${ipfw} add 210 allow all from any to any via ${ifextmir}

а про skipto
${ipfw} add 99 skipto 107 all from 192.168.0.0/24 to 195.128.17.242 так?


"NAT не пропускает часть клиентов"
Отправлено DN , 25-Окт-07 22:50 
>я к сожалению не большой гуру в написании правил. можете помочь в
>написании skipto

Базовые примеры в /etc/rc.firewall
http://www.opennet.me/openforum/vsluhforumID10/3273.html
http://www.opennet.me/opennews/art.shtml?num=12522
man ipfw

>вернулся пока к старым
>${ipfw} add 100 divert 8778 all from table\(3\) to not table\(2\)
>${ipfw} add 101 fwd 192.168.1.19 all from 192.168.1.1 to any
>${ipfw} add 102 divert 8778 all from any to 192.168.1.1
>
>${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any
>${ipfw} add 110 divert 8668 all from any to 195.128.17.242
>${ipfw} add 210 allow all from any to any via ${ifextmir}

${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to any
${ipfw} add 98 skipto 103 all from 192.168.0.0/24 to 195.128.17.242
${ipfw} add 99 skipto 103 all from 195.128.17.242 to 192.168.0.0/24
Хотя, 99 правило здесь будет лишнее.
${ipfw} add 100 divert 8778 ip from table\(3\) to not table\(2\) in via rl1
${ipfw} add 102 divert 8778 ip from any to 192.168.1.1 in via rl1
${ipfw} add 108 divert 8668 ip from 192.168.0.0/24 to any out via rl0
${ipfw} add 110 divert 8668 ip from any to 195.128.17.242 in via rl0


"NAT не пропускает часть клиентов"
Отправлено Владимир , 26-Окт-07 12:22 

>[оверквотинг удален]
>${ipfw} add 99 skipto 103 all from 195.128.17.242 to 192.168.0.0/24
>Хотя, 99 правило здесь будет лишнее.
>${ipfw} add 100 divert 8778 ip from table\(3\) to not table\(2\) in
>via rl1
>${ipfw} add 102 divert 8778 ip from any to 192.168.1.1 in via
>rl1
>${ipfw} add 108 divert 8668 ip from 192.168.0.0/24 to any out via
>rl0
>${ipfw} add 110 divert 8668 ip from any to 195.128.17.242 in via
>rl0

я вот чого подумал:
1. Зачем указывать in или out ?
2. Зачем указывать интерфейс? (у меня на интерфейсе алиас поднят, это не мешает или kxit указать конкрутный IP)
3. правило fwd(№97) разве не должно идти после проверки принадлежности IP к списку (№100)


"NAT не пропускает часть клиентов"
Отправлено DN , 26-Окт-07 12:41 

>[оверквотинг удален]
>>via rl1
>>${ipfw} add 102 divert 8778 ip from any to 192.168.1.1 in via
>>rl1
>>${ipfw} add 108 divert 8668 ip from 192.168.0.0/24 to any out via
>>rl0
>>${ipfw} add 110 divert 8668 ip from any to 195.128.17.242 in via
>>rl0
>
>я вот чого подумал:
>1. Зачем указывать in или out ?

Накладные расходы при обработке пакетов роутером с использованием natd
относительно большие. natd - это пока приложение , а не
составная часть ядра.
Зачем загружать natd заведоме бесполезной работой по обработке
пакетов для него не предназначенных?

>2. Зачем указывать интерфейс? (у меня на интерфейсе алиас поднят, это не
>мешает или kxit указать конкрутный IP)

В вашем случае все равно, потому что в другой части правил явно указаны
ip адреса , а не from any to any .

>3. правило fwd(№97) разве не должно идти после проверки принадлежности IP к
>списку (№100)

Пакет уже был ранее обработан natd (divert 8778) и/или имеет ip адрес
192.168.1.1 . Ранее обработан потому, что все пакеты обработанные
приложением natd снова возвращаются в стек TCP/IP Сразу форвардим, зачем снова его напрвлять natd
(divert 8778)?



"NAT не пропускает часть клиентов"
Отправлено DN , 26-Окт-07 12:47 
>[оверквотинг удален]
>>via rl1
>>${ipfw} add 102 divert 8778 ip from any to 192.168.1.1 in via
>>rl1
>>${ipfw} add 108 divert 8668 ip from 192.168.0.0/24 to any out via
>>rl0
>>${ipfw} add 110 divert 8668 ip from any to 195.128.17.242 in via
>>rl0
>
>я вот чого подумал:
>1. Зачем указывать in или out ?

Накладные расходы при обработке пакетов роутером с использованием natd
относительно большие. natd - это пока приложение , а не
составная часть ядра.
Зачем загружать natd заведомо бесполезной работой по обработке
пакетов для него не предназначенных?

>2. Зачем указывать интерфейс? (у меня на интерфейсе алиас поднят, это не
>мешает или kxit указать конкрутный IP)

В вашем случае все равно, потому что в другой части этого правила явно указаны
ip адреса, а не from any to any .

>3. правило fwd(№97) разве не должно идти после проверки принадлежности IP к
>списку (№100)

Пакет уже был ранее обработан natd (divert 8778) и/или имеет ip адрес
192.168.1.1 . Ранее обработан natd потому, что все пакеты обработанные
приложением natd снова возвращаются в стек TCP/IP и проверка правил
ipfw начинается сначала. Сразу форвардим, зачем снова его напрвлять natd
(divert 8778)?

Почитайте ссылки из моего предыдущего поста.


"NAT не пропускает часть клиентов"
Отправлено Владимир , 26-Окт-07 13:24 
Тогда почему эти не работают?

${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to any
${ipfw} add 98 skipto 103 all from 192.168.0.0/24 to 195.128.17.242
#${ipfw} add 99 skipto 103 all from 195.128.17.242 to 192.168.0.0/24
#Хотя, 99 правило здесь будет лишнее.
${ipfw} add 100 divert 8778 all from table\(3\) to not table\(2\) in via rl1
${ipfw} add 102 divert 8778 all from any to 192.168.1.1 in via rl1
${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any out via rl0
${ipfw} add 110 divert 8668 all from any to 195.128.17.242 in via rl0

А эти работают?
#------------work rule
#${ipfw} add 100 divert 8778 all from table\(3\) to not table\(2\)
#${ipfw} add 101 fwd 192.168.1.19 all from 192.168.1.1 to any
#${ipfw} add 102 divert 8778 all from any to 192.168.1.1

#${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any
#${ipfw} add 110 divert 8668 all from any to 195.128.17.242
#------------


"NAT не пропускает часть клиентов"
Отправлено DN , 26-Окт-07 14:58 
>Тогда почему эти не работают?
>
>${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to any

Можно уточнить это правило

${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to any via rl1

>[оверквотинг удален]
>
>А эти работают?
>#------------work rule
>#${ipfw} add 100 divert 8778 all from table\(3\) to not table\(2\)
>#${ipfw} add 101 fwd 192.168.1.19 all from 192.168.1.1 to any
>#${ipfw} add 102 divert 8778 all from any to 192.168.1.1
>
>#${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any
>#${ipfw} add 110 divert 8668 all from any to 195.128.17.242
>#------------

1. Мне не известно, что Вы поместили в table 2 и table 3 .
Может там надо сделать какие-то исключения , как в случае с 195.128.17.242 .
2. Промоделировать ваш файрволл у себя в полной мере я не могу и ,
вообщем, не собираюсь.
3. Читать документация по ссылкам, Вы тоже не желаете.

>самое интересное, что у клиента не ходят пинги даже на внешний интерфейс и в tcpdump нет абсолютно никакой информации по поводу ICMP пакетов на внешний интерфейс (tcpdump снимался на внутреннем)

4. Где tcpdump'ы с внутренних, внешних и loopback интерфейсов ?

Включите в конце правил
${ipfw} add deny log all from any to any
Смотрите /var/log/security и tcpdump .
Ищите ошибки .
Кстати , в вашем случае,
используйте ipfw set атрибут для новых тестовых правил , если все делаете
на "живой" работающей системе.

5. Из старого поста:
Надо внимательно читать man'ы ipfw(8), divert(4), natd(8) и форумы.

Что касается правил в ipfw, то это Вы должны определить сами, в зависимости от
поставленных задач. Нет заранее определенного порядка правил.

Другое дело, Вы должны понимать идеологию работы ipfw.

Если кратко про идеологию:
1. IP пакет приходящий на любой интерфейс , в том числе и lo0 , тестируется
последовательно всеми правилами ipfw , пока не получится совпадение.
2. При совпадении с IP пакетом делается то, что написано в правиле совпадения
(pass, deny, divert и т.д.)
3. Если пакет транзитом следует на другой интерфейс (по таблице роутинга),
чтобы покинуть роутер, то такой IP пакет должен  пройти еще раз сначала все правила ipfw,
как исходящий пакет. Соответственно, повторяется п.2.
4. Если пакет не транзитный для роутера, то с учетом п.2 идет его обработка стеком
TCP/IP роутера.
5. Если пакет "рождается" в роутере и следует на исходящий интерфейс, в соответствии с
таблицей роутинга, то такой IP пакет должен пройти сначала все правила ipfw,
как исходящий пакет. Соответственно, повторяется п.2.

Более подробно, только в man .

Рисуйте "черный ящик" - роутер с интерфейсами для наглядности представления.
Вот например, с тремя интерфейсами rl0,rl1,lo0 .
И смотрите, какие и как IP пакеты Вам необходимо транслировать и форвардить.
              
     I----------I
rl0 I           I rl1
<->I           I<->
     I           I
     I           I->-I
     I           I    I lo0
     I           I-<-I
     I----------I    

Пишите правила ipfw, если надо включаете log на отдельные правила.

Смотрите ipfw show
ipfw -d show
Включаете tcpdump -n -i интерфейс  и смотрите все ли
правильно бегает.  netstat -rn
ifconfig -au

Удачи.

Тестировать не буду, но подскажу, где, возможно, ошибка.



"NAT не пропускает часть клиентов"
Отправлено Владимир , 26-Окт-07 16:20 
/sbin/natd -p 8668 -a 195.128.17.242
/sbin/natd -p 8778 -a 192.168.1.1
-------------------------------------------

${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to any
${ipfw} add 98 skipto 103 all from 192.168.0.0/24 to 195.128.17.242
#${ipfw} add 99 skipto 103 all from 195.128.17.242 to 192.168.0.0/24
#Хотя, 99 правило здесь будет лишнее.
${ipfw} add 100 divert 8778 all from table\(3\) to not table\(2\) in via rl1
${ipfw} add 102 divert 8778 all from any to 192.168.1.1 in via rl1
${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any out via rl0
${ipfw} add 110 divert 8668 all from any to 195.128.17.242 in via rl0

Как я понимаю эти правила (поправьте если я не прав):
№97 перенаправлять пакеты на 192.168.1.19 если они пришли на 192.168.1.1 и в адресе назначения всё что угодно (но откуда оно узает что пришло на 192.168.1.1 если правило перенаправления стоит позже?).
№98 перебросить на №103 если в запросе от 192.168.0.0/24 указывается 195.128.17.242 (даже если правило 97 как-то узнало что перенапрлять, почему мы только сейчас ставим skipto)
№100 перенаправить в NAT 8778 входящие подключения от всех из таблицы 3 на ВСЕ адреса которые не указаны в таблице 2 через rl1
№102 далее перенаправлять в NAT 8778 всё что в него пришло (in) на 192.168.1.1 через rl1

далее ехаем. правило №108 говорит NAT 8668 принимать всё от 192.168.0.0/24 если они хотят идти (out) куда угодно через интерфейс rl0 (внешний?). Но тут я так понял, что сработал первый нат и пакеты которые ушли на 192.168.1.1 уже сюда не попадают, поэтому работаем с тем, что осталось от первого ната.
№110 перенаправить на NAT 8668 все входящие (in) от любого источника на 195.128.17.242 через rl0
Но при этих правилах пользователи с таблицы 3, и те кто не в таблице, так и продалжают ходить в весь инет через 195.128.17.242. А должны только на ip которые в таблице 2.

А эти работают?
#------------work rule
#${ipfw} add 100 divert 8778 all from table\(3\) to not table\(2\)
#${ipfw} add 101 fwd 192.168.1.19 all from 192.168.1.1 to any
#${ipfw} add 102 divert 8778 all from any to 192.168.1.1

#${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any
#${ipfw} add 110 divert 8668 all from any to 195.128.17.242
#------------

Эти правила такие же как предыдущее, только не конкретизрованы и fwd стоит после проверки кто-куда должен идти.


"NAT не пропускает часть клиентов"
Отправлено DN , 26-Окт-07 17:16 
>${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to any

${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to any via rl1

>[оверквотинг удален]
>rl1
>${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any out via
>rl0
>${ipfw} add 110 divert 8668 all from any to 195.128.17.242 in via
>rl0
>
>Как я понимаю эти правила (поправьте если я не прав):
>№97 перенаправлять пакеты на 192.168.1.19 если они пришли на 192.168.1.1 и в
>адресе назначения всё что угодно (но откуда оно узает что пришло
>на 192.168.1.1 если правило перенаправления стоит позже?).

Пришли не на 192.168.1.1 , а пришли из 192.168.1.1 , пришли из NAT 8778 .
Пакет с источником в адресе 192.168.1.1 ( это внешний адрес NAT, natd 8778) должен быть
всегда отправлен на шлюз 192.168.1.19, кроме случая, если Вам захочестся
пинговать (взаимодействовать) с эти адресом из сети 192.168.0.0/24 .
Тогда надо добавить правила перед №97.

Если же адрес 192.168.1.1 Вы будете использовать только,
как внешний адрес NAT, то перед правилом №97 ничего
добавлять не надо.

Можно правило №97 переписать еще так:
${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to not 192.168.0.0/24 via rl1

Все, но не к 192.168.0.0/24 .
Тогда думаю, что перед правилом №97 тоже ничего добавлять не надо.

>№98 перебросить на №103 если в запросе от 192.168.0.0/24 указывается 195.128.17.242 (даже
>если правило 97 как-то узнало что перенапрлять, почему мы только сейчас
>ставим skipto)

Зачем вам пакет из 192.168.0.0/24 направлять на divert?
195.128.17.242 поднят на интерфейсы этого же роутера.

>№100 перенаправить в NAT 8778 входящие подключения от всех из таблицы 3
>на ВСЕ адреса которые не указаны в таблице 2 через rl1

На выходе из NAT 8778 пакет будет уже с адресом в источнике 192.168.1.1 и
снова будет направлен в самое начало правил ipfw .
Дойдет до 97 правила и форвардится на 192.168.1.19.

>№102 далее перенаправлять в NAT 8778 всё что в него пришло (in)
>на 192.168.1.1 через rl1

Да, это обратный путь через 192.168.1.19 .

>далее ехаем. правило №108 говорит NAT 8668 принимать всё от 192.168.0.0/24 если
>они хотят идти (out) куда угодно через интерфейс rl0 (внешний?). Но
>тут я так понял, что сработал первый нат и пакеты которые
>ушли на 192.168.1.1 уже сюда не попадают, поэтому работаем с тем,
>что осталось от первого ната.

Все что не попало в NAT 8778 , попадет в NAT 8668 , будет преобразовано
в пакет с источником в адресе 195.128.17.242.
Далее пакет из natd с источником в адресе 195.128.17.242 снова будет направлен в самое начало правил ipfw , и если правила ipfw позволят, покинет интерфей rl0 .


>№110 перенаправить на NAT 8668 все входящие (in) от любого источника на
>195.128.17.242 через rl0

Да, это обратный путь через 195.128.17.242.

>Но при этих правилах пользователи с таблицы 3, и те кто не
>в таблице, так и продалжают ходить в весь инет через 195.128.17.242.
>А должны только на ip которые в таблице 2.

Это не так . Еще раз читайте "философию" ipfw, divert, natd .
Каждый пакет, который напраляется в natd, обрабатывается им, потом снова
возвращается в начало правил ipfw , а не в то место правил, где произшел divert на
natd.

>[оверквотинг удален]
>#${ipfw} add 100 divert 8778 all from table\(3\) to not table\(2\)
>#${ipfw} add 101 fwd 192.168.1.19 all from 192.168.1.1 to any
>#${ipfw} add 102 divert 8778 all from any to 192.168.1.1
>
>#${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any
>#${ipfw} add 110 divert 8668 all from any to 195.128.17.242
>#------------
>
>Эти правила такие же как предыдущее, только не конкретизрованы и fwd стоит
>после проверки кто-куда должен идти.


"NAT не пропускает часть клиентов"
Отправлено Владимир , 26-Окт-07 17:25 
там я писал про топологию сети.
вот тот IP 192.168.1.19 являеться роутером (обчная мыльница DLINK). Возможно мне не нужно поднимать 2 NATа на основном сервере. Может можно ограничиться обычным форвардингом на роутер, а он пусть уже маршрутищирует то, что на него пришло?

"NAT не пропускает часть клиентов"
Отправлено Владимир , 26-Окт-07 17:28 
и ещё одно не совсем к теме. разница между deny и drop? В ман написано, что оба запрещают пакет, но по логике deny даёт ответ отправителю пакета, что он заблокирован, а drop не отправляет никаких сведений - сообветственно уменьшая нагрузку за счет не генерирования ответного пакета. Я прав?

"NAT не пропускает часть клиентов"
Отправлено DN , 26-Окт-07 17:53 
>и ещё одно не совсем к теме. разница между deny и drop?
>В ман написано, что оба запрещают пакет, но по логике deny
>даёт ответ отправителю пакета, что он заблокирован, а drop не отправляет
>никаких сведений - сообветственно уменьшая нагрузку за счет не генерирования ответного
>пакета. Я прав?

deny / drop - это синонимы.

unreach code отправит ответ . Для него частично синонимом является reject,
который оправляет ответ unreach host.


"NAT не пропускает часть клиентов"
Отправлено DN , 26-Окт-07 17:45 
>там я писал про топологию сети.
>вот тот IP 192.168.1.19 являеться роутером (обчная мыльница DLINK). Возможно мне не
>нужно поднимать 2 NATа на основном сервере. Может можно ограничиться обычным
>форвардингом на роутер, а он пусть уже маршрутищирует то, что на
>него пришло?

Если DLINK натит и файрволит, то можно просто форвардинг, сменив его
192.168.1.19 на 192.168.0.19 для простоты.


"NAT не пропускает часть клиентов"
Отправлено Владимир , 26-Окт-07 18:11 
>>там я писал про топологию сети.
>>вот тот IP 192.168.1.19 являеться роутером (обчная мыльница DLINK). Возможно мне не
>>нужно поднимать 2 NATа на основном сервере. Может можно ограничиться обычным
>>форвардингом на роутер, а он пусть уже маршрутищирует то, что на
>>него пришло?
>
>Если DLINK натит и файрволит, то можно просто форвардинг, сменив его
>192.168.1.19 на 192.168.0.19 для простоты.

тогда правила изменят свою структуру на нечто такое:

${ipfw} add 101 fwd 192.168.0.19 all from table\(3\) to not table\(2\) to any
${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any
${ipfw} add 110 divert 8668 all from any to 195.128.17.242
правильно?


"NAT не пропускает часть клиентов"
Отправлено DN , 26-Окт-07 18:45 
>[оверквотинг удален]
>>Если DLINK натит и файрволит, то можно просто форвардинг, сменив его
>>192.168.1.19 на 192.168.0.19 для простоты.
>
>тогда правила изменят свою структуру на нечто такое:
>
>${ipfw} add 101 fwd 192.168.0.19 all from table\(3\) to not table\(2\) to
>any
>${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any
>${ipfw} add 110 divert 8668 all from any to 195.128.17.242
>правильно?

Ну, да.


"NAT не пропускает часть клиентов"
Отправлено DN , 26-Окт-07 18:51 
>[оверквотинг удален]
>>Если DLINK натит и файрволит, то можно просто форвардинг, сменив его
>>192.168.1.19 на 192.168.0.19 для простоты.
>
>тогда правила изменят свою структуру на нечто такое:
>
>${ipfw} add 101 fwd 192.168.0.19 all from table\(3\) to not table\(2\) to
>any
>${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any
>${ipfw} add 110 divert 8668 all from any to 195.128.17.242
>правильно?

Sorry. Поторопился.

${ipfw} add 101 fwd 192.168.0.19 all from table\(3\) to not table\(2\) in via rl1


"NAT не пропускает часть клиентов"
Отправлено Владимир , 27-Окт-07 15:22 
>
>${ipfw} add 101 fwd 192.168.0.19 all from table\(3\) to not table\(2\) in
>via rl1

Ок. Спасибо, попробую.
Ещё вопросик не совсем в тему.
у меня rc.firewall имеет такой вид:

#!/bin/sh

ipfw="ipfw -q"

${ipfw} -f flush

ifextmir='rl0'
ifint='rl1'

${ipfw} table 3 add 192.168.0.60

${ipfw} table 3 add 192.168.0.99
${ipfw} table 3 add 192.168.0.100
${ipfw} table 3 add 192.168.0.101
...
...
...
${ipfw} table 3 add 192.168.0.253
${ipfw} table 3 add 192.168.0.254
ну и дальше там всякие другие правила.

1. Как мне можно включить файл с этим списком (таблица 3) в rc.firewall?
--------------------------------------
2. У меня есть такой скрипт, который обновляет список UA-IX сетей.

#!/bin/sh
fetch http://colocall.net/uaix/prefixes.txt
cp prefixes.txt /tmp/
/sbin/ipfw table 2 flush
uanet=`cat /tmp/prefixes.txt`
for T1 in ${uanet};
    do
ipfw table 2 add ${T1}
done

могули я сделать такой же скрипт для внесения изменённого списка localIP без перезагрузки фаервола - netstart не подходит, потому как биллинг формирует в фаерволе ещё свои правила, и если запустить netstart то всe биллинговые правила падают.

#!/bin/sh
cp local_ip.txt /tmp/
/sbin/ipfw table 3 flush
local_ip=`cat /tmp/local_ip.txt`
for T1 in ${local_ip};
    do
ipfw table 3 add ${T1}
done

Правильный скрипт? После выполнения этого скрипта, фаервол начнёт работать с новым списком 3, или у него в памяти останется старый список, и нужно будет перегружать систему?


"NAT не пропускает часть клиентов"
Отправлено DN , 29-Окт-07 01:49 

>[оверквотинг удален]
>/sbin/ipfw table 3 flush
>local_ip=`cat /tmp/local_ip.txt`
>for T1 in ${local_ip};
>    do
>ipfw table 3 add ${T1}
>done
>
>Правильный скрипт? После выполнения этого скрипта, фаервол начнёт работать с новым списком
>3, или у него в памяти останется старый список, и нужно
>будет перегружать систему?

Зачем перегружать?
Вы сделали /sbin/ipfw table 3 flush
Загрузили таблицу 3
Осталось только посмотреть, что Вы загрузили
/sbin/ipfw table 3 list

По поводу правильности скрипта.
Лучше бы заменить эту часть, если в файле большой  
local_ip=`cat /tmp/local_ip.txt`  
for T1 in ${local_ip};
do
  ipfw table 3 add ${T1}
done

На типа
cat /tmp/local_ip.txt | \
while read T1
do
  ipfw table 3 add ${T1}
done