Не могу пробросить порт во внутрисеть извне

Есть система

#uname -a
Linux Domen 3.2.11-hardened #5 SMP Tue Jun 19 00:38:02 EEST 2012 i686 Intel(R) Celeron(R) CPU E3500 @ 2.70GHz GenuineIntel GNU/Linux

Все работает, кроме доступа из инета на внутренний сервер.
Помогите устранить причину.

Правила в iptables следующие

# Generated by iptables-save v1.4.13 on Tue Jun 19 01:11:22 2012
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [25:2002]
:OUTPUT ACCEPT [2:168]
:POSTROUTING ACCEPT [1:84]
-A PREROUTING -j ACCEPT
-A PREROUTING -i eth0 -p tcp -m tcp --dport 3390 -j DNAT --to-destination 192.168.0.20:3389
-A PREROUTING -i eth0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.20:3389
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Jun 19 01:11:22 2012
# Generated by iptables-save v1.4.13 on Tue Jun 19 01:11:22 2012
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [389:29218]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [476:58516]
:POSTROUTING ACCEPT [476:58516]
-A PREROUTING -j ACCEPT
COMMIT
# Completed on Tue Jun 19 01:11:22 2012
# Generated by iptables-save v1.4.13 on Tue Jun 19 01:11:22 2012
*filter
:INPUT ACCEPT [6:288]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:allowed - [0:0]
:bad_tcp_packets - [0:0]
:icmp_packets - [0:0]
:tcp_packets - [0:0]
:udp_packets - [0:0]
-A INPUT -p tcp -j bad_tcp_packets
-A INPUT -s 192.168.0.0/24 -i eth1 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -j tcp_packets
-A INPUT -i eth0 -p udp -j udp_packets
-A INPUT -i eth0 -p icmp -j icmp_packets
-A INPUT -d 224.0.0.0/8 -i eth0 -j DROP
-A FORWARD -p tcp -j bad_tcp_packets
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -j bad_tcp_packets
-A OUTPUT -s 127.0.0.1/32 -j ACCEPT
-A OUTPUT -s 192.168.0.1/32 -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
-A allowed -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A allowed -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A allowed -p tcp -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "New not syn:"
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A icmp_packets -p icmp -f -j DROP
-A icmp_packets -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A tcp_packets -p tcp -m tcp --dport 21 -j allowed
-A tcp_packets -p tcp -m tcp --dport 22 -j allowed
-A tcp_packets -p tcp -m tcp --dport 33 -j allowed
-A tcp_packets -p tcp -m tcp --dport 25 -j allowed
-A tcp_packets -p tcp -m tcp --dport 80 -j allowed
-A tcp_packets -p tcp -m tcp --dport 110 -j allowed
-A tcp_packets -p tcp -m tcp --dport 113 -j allowed
-A tcp_packets -p tcp -m tcp --dport 143 -j allowed
-A tcp_packets -p tcp -m tcp --dport 443 -j allowed
-A tcp_packets -p tcp -m tcp --dport 993 -j allowed
-A tcp_packets -p tcp -m tcp --dport 995 -j allowed
-A udp_packets -p udp -m udp --sport 53 -j ACCEPT
-A udp_packets -p udp -m udp --sport 123 -j ACCEPT
-A udp_packets -d 255.255.255.255/32 -i eth0 -p udp -m udp --dport 67:68 -j DROP
COMMIT
# Completed on Tue Jun 19 01:11:22 2012

убрать первый -j ACCEPT из

убрать первый -j ACCEPT из PREROUTING ?

lix написал(а): убрать первый

lix написал(а):
убрать первый -j ACCEPT из PREROUTING ?

убрал - результат тот же...

зачем аццепты, если полиси и

зачем аццепты, если полиси и так стоит в аццепт и пропускает все по дефолту ?

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

убирал из mangle даже ацепт

убирал из mangle даже ацепт прероутинга, перезагружал шлюз - ничего не меняется.

iptables -t nat -nvL Chain

iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   35  1808 DNAT       tcp  --  *      *       0.0.0.0/0            xxx.xxx.xxx.xxx        tcp dpt:10202 to:192.168.1.118:10000
   30  1548 DNAT       tcp  --  *      *       0.0.0.0/0            xxx.xxx.xxx.xxx        tcp dpt:2201 to:192.168.1.118:22
7901K  571M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain INPUT (policy ACCEPT 637K packets, 70M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 289K   20M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
2439K  143M MASQUERADE  all  --  *      eth0    192.168.1.0/24       0.0.0.0/0           
 289K   20M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

iptables -t nat -nvLChain

 iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 107 packets, 8823 bytes)
 pkts bytes target     prot opt in     out     source               destination
    2   104 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3390 to:192.168.0.20:3389
    5   260 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3389 to:192.168.0.20:3389

Chain INPUT (policy ACCEPT 107 packets, 8823 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 54 packets, 3791 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 32 packets, 2014 bytes)
 pkts bytes target     prot opt in     out     source               destination
   61  4581 MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0

# Generated by iptables-save v1.4.13 on Wed Jun 20 00:41:30 2012
*nat
:PREROUTING ACCEPT [145:11912]
:INPUT ACCEPT [145:11912]
:OUTPUT ACCEPT [56:3943]
:POSTROUTING ACCEPT [33:2066]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 3390 -j DNAT --to-destination 192.168.0.20:3389
-A PREROUTING -i eth0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.20:3389
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Wed Jun 20 00:41:30 2012

результат тот же пакеты не доходят

Chain PREROUTING (policy

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   35  1808 DNAT       tcp  --  *      *       0.0.0.0/0            xxx.xxx.xxx.xxx        tcp dpt:10202 to:192.168.1.118:10000
   30  1548 DNAT       tcp  --  *      *       0.0.0.0/0            xxx.xxx.xxx.xxx        tcp dpt:2201 to:192.168.1.118:22
Chain PREROUTING (policy ACCEPT 107 packets, 8823 bytes)
 pkts bytes target     prot opt in     out     source               destination
    2   104 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3390 to:192.168.0.20:3389
    5   260 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3389 to:192.168.0.20:3389

Если не внимателно читал, то найди 1 отличие
П.С xxx.xxx.xxx.xxx - адрес внешки

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

iptables -t nat -nvLChain

iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       tcp  --  eth0   *       0.0.0.0/0            193.xxx.xxx.xxx         tcp dpt:3389 to:192.168.0.20:3389

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  126  9265 MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0

к сожалению результат тот же... похоже вообще ничего не проходит
странно но такая конструкция файрволла, как у меня, успешно работает на других шлюзах.
не пойму в чем проблема?

Переставил систему, скомпилировал ядро genkernel - проблема осталась...

Часто забываю про ip_forward

Как то так
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

Или в постоянку так nano /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1

А при внешней динамике еще и
net.ipv4.ip_dynaddr = 1

Тут все прописано , но

Тут все прописано , но результат тот же

tcpdump-ом проверь, приходят

tcpdump-ом проверь, приходят ли пакеты на внешний интерфейс и уходят ли с внутреннего?

Нейтральность - высшее достижение сознания!

#/usr/sbin/tcpdump -i eth0

#/usr/sbin/tcpdump -i eth0  -ttt -n -nn -v dst host 192.168.0.20
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel



#/usr/sbin/tcpdump -i eth1  -ttt -n -nn -v dst host 192.168.0.20

tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
000000 IP (tos 0x0, ttl 117, id 19123, offset 0, flags [DF], proto TCP (6), length 48) xxx.xxx.xxx.xxx.3389 > 192.168.0.20.3389: S, cksum 0xd620 (correct), 1761978231:1761978231(0) win 65535 <mss 1436,nop,nop,sackOK>
3. 018892 IP (tos 0x0, ttl 117, id 20090, offset 0, flags [DF], proto TCP (6), length 48) xxx.xxx.xxx.xxx.3389 > 192.168.0.20.3389: S, cksum 0xd620 (correct), 1761978231:1761978231(0) win 65535 <mss 1436,nop,nop,sackOK>
1. 982386 arp who-has 192.168.0.20 tell 192.168.0.1
4. 033811 IP (tos 0x0, ttl 117, id 22690, offset 0, flags [DF], proto TCP (6), length 48) xxx.xxx.xxx.xxx.3389 > 192.168.0.20.3389: S, cksum 0xd620 (correct), 1761978231:1761978231(0) win 65535 <mss 1436,nop,nop,sackOK>

И после этого все. Хотя доступ к серверу из внутрисети есть...

Пояснения к дампу

ххх.ххх.ххх.ххх - внешний ip адрес

eth0 - внешн интерфейс

 # ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 50:e5:49:8f:a8:e4
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1300  Metric:1
          RX packets:8838 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18192 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:848261 (828.3 KiB)  TX bytes:4538247 (4.3 MiB)
          Interrupt:43 Base address:0xa000


+

#tcpdump -i eth0 -ttt -n -nn -v dst host 192.168.0.20
эта команда бесполезна, какой смысл смотреть на внешнем интерфейсе пакеты где адрес назначения из внутренней сети?

#/usr/sbin/tcpdump -i eth1 -ttt -n -nn -v dst host 192.168.0.20
эта команда более показательна. как мы видим пакеты уходят со шлюза на сервер. но из-за "dst host" непонятно возвращаются ли ответы))) поэтому надо посмотреть трафик командой
tcpdump -ni eth1 host 192.168.0.20 and port 3389
так мы увидим есть ли ответы от сервера.
пока стоит такая неопределенность могу предположить что :
сервер режет пакеты т.к. они прилетают с интернетным адресом в "src", и быстрое решение:
iptables -t nat -I POSTROUTING -o eth1 -d 192.168.0.20 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.0.1

there is only war...

-A POSTROUTING -s

-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

да ты просто гений ;)

да ты просто гений ;)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".