Пытаюсь перенаправить 25 порт с внешнего сервера на почтовый сервер в локальной сети.
Где ошибка?
cat /etc/ipfw.conf
#!/bin/sh
cmd="/sbin/ipfw -q add"
ipfw -f table all flush
/etc/ipfw_add_ip.sh
eif="rl0"
iif="rl1"
eip="99.202.99.99"
intnet="192.168.0.0/22"# clear all rules
/sbin/ipfw -q -f flush# allow loopback
$cmd allow ip from any to any via lo0# allow access to internal mail server in external interface
$cmd allow tcp from any to 192.168.1.29 dst-port 25 in via $eif setup
$cmd allow tcp from 192.168.1.29 to any dst-port 25 out via $eif setup
$cmd allow tcp from 192.168.1.29 25 to any out via $eif setup# allow all via local network interface from internal network
$cmd allow all from any to any via $iif# nat
/sbin/ipfw -q nat 1 config if $eif reset same_ports deny_in redirect_port tcp 192.168.1.29:25 25
$cmd nat 1 ip from "table(1)" to any out via $eif
$cmd nat 1 ip from any to $eip in via $eifПытаюсь подключится из интернета на сервер с ipfw
telnt 99.202.99.99 25. . . Не удается открыть подключение к этому узлу, на порт 25 : Сбой подключенияНа сервере с ipfw
tcpdump -ni rl1 host 192.168.1.29
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on rl1, link-type EN10MB (Ethernet), capture size 262144 bytes
10:52:19.241855 ARP, Request who-has 192.168.1.29 tell 192.168.2.19, length 46
10:52:19.242181 ARP, Reply 192.168.1.29 is-at 00:0c:29:b8:9d:8e, length 46
10:52:19.242190 IP 222.166.229.255.65365 > 192.168.1.29.25: Flags [S], seq 242604477, win 64240, options [mss 1448,nop,wscale 8,nop,nop,sackOK], length 0
10:52:22.253870 IP 222.166.229.255.65365 > 192.168.1.29.25: Flags [S], seq 242604477, win 64240, options [mss 1448,nop,wscale 8,nop,nop,sackOK], length 0
^C
>[оверквотинг удален]
> tcpdump -ni rl1 host 192.168.1.29
> tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
> listening on rl1, link-type EN10MB (Ethernet), capture size 262144 bytes
> 10:52:19.241855 ARP, Request who-has 192.168.1.29 tell 192.168.2.19, length 46
> 10:52:19.242181 ARP, Reply 192.168.1.29 is-at 00:0c:29:b8:9d:8e, length 46
> 10:52:19.242190 IP 222.166.229.255.65365 > 192.168.1.29.25: Flags [S], seq 242604477,
> win 64240, options [mss 1448,nop,wscale 8,nop,nop,sackOK], length 0
> 10:52:22.253870 IP 222.166.229.255.65365 > 192.168.1.29.25: Flags [S], seq 242604477,
> win 64240, options [mss 1448,nop,wscale 8,nop,nop,sackOK], length 0
> ^Cну а ответные то пакетики от почтового хоста где?
> ну а ответные то пакетики от почтового хоста где?Наверно ответные пакеты не пускает ipfw. Потому, что
Если соединятся из локальной сети, то соединение устанавливается
telnet 192.168.1.29 25
Trying 192.168.1.29...
Connected to 192.168.1.29.
Escape character is '^]'.
220 gw.pbnsk.ru, ESMTP EXIM 4.77
quitНа сервере с ipfw
tcpdump -vvvnni rl1 host 192.168.1.29
tcpdump: listening on rl1, link-type EN10MB (Ethernet), capture size 262144 bytes
11:47:11.067023 IP (tos 0x10, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
192.168.2.19.46111 > 192.168.1.29.25: Flags [S], cksum 0x9510 (correct), seq 1324145157, win 65535, options [mss 1460,nop,wscale 6,sackOK,TS val 414015 ecr 0], length 0
11:47:11.067322 IP (tos 0x0, ttl 64, id 54426, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.29.25 > 192.168.2.19.46111: Flags [S.], cksum 0x9dea (correct), seq 50893542, ack 1324145158, win 65535, options [mss 1460,nop,wscale 6,sackOK,TS val 2224282770 ecr 414015], length 0
11:47:11.067360 IP (tos 0x10, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
192.168.2.19.46111 > 192.168.1.29.25: Flags [.], cksum 0xc8b3 (correct), seq 1, ack 1, win 1026, options [nop,nop,TS val 414015 ecr 2224282770], length 0
11:47:11.072834 IP (tos 0x0, ttl 64, id 54427, offset 0, flags [DF], proto TCP (6), length 86)
192.168.1.29.25 > 192.168.2.19.46111: Flags [P.], cksum 0x50c7 (correct), seq 1:35, ack 1, win 1040, options [nop,nop,TS val 2224282771 ecr 414015], length 34: SMTP, length: 34
220 gw.pbnsk.ru, ESMTP EXIM 4.77
11:47:11.178856 IP (tos 0x10, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
192.168.2.19.46111 > 192.168.1.29.25: Flags [.], cksum 0xc820 (correct), seq 1, ack 35, win 1026, options [nop,nop,TS val 414127 ecr 2224282771], length 0
11:47:15.659390 IP (tos 0x10, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 58)
192.168.2.19.46111 > 192.168.1.29.25: Flags [P.], cksum 0xce9d (correct), seq 1:7, ack 35, win 1026, options [nop,nop,TS val 418608 ecr 2224282771], length 6: SMTP, length: 6
quit
11:47:15.660242 IP (tos 0x0, ttl 64, id 54428, offset 0, flags [DF], proto TCP (6), length 88)
192.168.1.29.25 > 192.168.2.19.46111: Flags [P.], cksum 0x765c (correct), seq 35:71, ack 7, win 1040, options [nop,nop,TS val 2224283230 ecr 418608], length 36: SMTP, length: 36
>[оверквотинг удален]
> proto TCP (6), length 58)
> 192.168.2.19.46111 > 192.168.1.29.25: Flags [P.], cksum 0xce9d (correct),
> seq 1:7, ack 35, win 1026, options [nop,nop,TS val 418608 ecr
> 2224282771], length 6: SMTP, length: 6
> quit
> 11:47:15.660242 IP (tos 0x0, ttl 64, id 54428, offset 0, flags [DF],
> proto TCP (6), length 88)
> 192.168.1.29.25 > 192.168.2.19.46111: Flags [P.], cksum 0x765c (correct),
> seq 35:71, ack 7, win 1040, options [nop,nop,TS val 2224283230 ecr
> 418608], length 36: SMTP, length: 36шлюз по умолчанию на почтовом хосте настроен?
> шлюз по умолчанию на почтовом хосте настроен?Шлюз на почтовом сервере настроен на внешний IP адрес сервера с ipfw, чтобы ходить в интернет.
>> шлюз по умолчанию на почтовом хосте настроен?
> Шлюз на почтовом сервере настроен на внешний IP адрес сервера с ipfw,это как?
он должен быть настроен на внутренний ip роутера> чтобы ходить в интернет.
>>> шлюз по умолчанию на почтовом хосте настроен?
>> Шлюз на почтовом сервере настроен на внешний IP адрес сервера с ipfw,
> это как?
> он должен быть настроен на внутренний ip роутера
>> чтобы ходить в интернет.Извините, так правильно
Шлюз на почтовом сервере настроен на внутренний IP адрес (адрес в локальной сети) сервера с ipfw
>[оверквотинг удален]
> proto TCP (6), length 58)
> 192.168.2.19.46111 > 192.168.1.29.25: Flags [P.], cksum 0xce9d (correct),
> seq 1:7, ack 35, win 1026, options [nop,nop,TS val 418608 ecr
> 2224282771], length 6: SMTP, length: 6
> quit
> 11:47:15.660242 IP (tos 0x0, ttl 64, id 54428, offset 0, flags [DF],
> proto TCP (6), length 88)
> 192.168.1.29.25 > 192.168.2.19.46111: Flags [P.], cksum 0x765c (correct),
> seq 35:71, ack 7, win 1040, options [nop,nop,TS val 2224283230 ecr
> 418608], length 36: SMTP, length: 36Запустите tcpdump на хосте 192.168.1.29 - убедитесь что ответные пакетики выходят с хоста... и проверьте таблицу маршрутизации- туда ли они идут...
зачем вам это
$cmd allow tcp from any to 192.168.1.29 dst-port 25 in via $eif setupсетап от любого хоста из вне?
зачем вам динамика?
перепишите свои правила в статике
Разобрался. Проблема не в настройках сервера-шлюза (ipfw или …), а в том, что сам почтовый сервер иногда пропадает из сети (сетевая карта или кабель или ещё что-нибудь такое). Всем спасибо.