LINUX.ORG.RU
ФорумAdmin

iptables и динамика, и статика.


0

2

есть шлюз с тремя сетевыми:
eth0 (77.77.77.77) - внешний;
eth1 (192.168.1.1) - внутренний_1;
eth2 (192.168.2.1) - внутренний_2.

в подсети 192.168.1.0/24 - статические IP-адреса;
в подсети 192.168.2.0/24 - динамические IP-адреса с 2 по 100, с 101-254 статические (устройства).

Интернет раздается обеим сетям через squid.
Необходимо пробиться извне к устройству на 192.168.1.111 по порту 5000 (tcp, udp) и к устройству на 192.168.2.222 по порту 10000 (tcp, udp).

При ниже приведенных правилах достучаться можно только до устройства на 192.168.1.111
Если убрать комментарий с MASQUERADE, то достучаться можно только до устройства на 192.168.2.222

Собственно вопрос, как сделать чтобы достучаться можно было до обоих устройств?

IPTABLES -t nat -A PREROUTING -d 77.77.77.77 -p tcp --dport 5000 -j DNAT --to-destination 192.168.1.111
IPTABLES -t nat -A PREROUTING -d 77.77.77.77 -p udp --dport 5000 -j DNAT --to-destination 192.168.1.111
IPTABLES -t nat -A PREROUTING -d 77.77.77.77 -p tcp --dport 10000 -j DNAT --to-destination 192.168.2.222
IPTABLES -t nat -A PREROUTING -d 77.77.77.77 -p udp --dport 10000 -j DNAT --to-destination 192.168.2.222

IPTABLES -I FORWARD 1 -i eth0 -o eth1 -d 192.168.1.111 -p ALL -j ACCEPT
IPTABLES -I FORWARD 1 -i eth0 -o eth2 -d 192.168.2.222 -p ALL -j ACCEPT

IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 77.77.77.77
# IPTABLES -t nat -A POSTROUTING -j MASQUERADE

1. «Стучитесь» из интернета?

2. На 192.168.1.111 и 192.168.2.222 default gateway равен адресам шлюза?

3. Покажите iptables-save.

И да, попробуйте с помощью tcpdump/Wireshark посмотреть доходят ли вообще пакеты до 192.168.1.111 и 192.168.2.222.

edigaryev ★★★★★
()
Ответ на: комментарий от edigaryev

1. «Стучитесь» из интернета?

Ну, да, я же вроде, написал, что «извне». :)

2. На 192.168.1.111 и 192.168.2.222 default gateway равен адресам шлюза?

Да.

3. Покажите iptables-save.

При таком раскладе все работает, но только с 192.168.1.111
Если добавить MASQUERADE то только с 192.168.2.222

# Generated by iptables-save v1.3.8 on Sat Mar 16 19:09:29 2013
*mangle
:PREROUTING ACCEPT [5840358:4577003755]
:INPUT ACCEPT [2166529941:1705363482045]
:FORWARD ACCEPT [1586395108:1313350017730]
:OUTPUT ACCEPT [2640396:2903369581]
:POSTROUTING ACCEPT [3536708216:3312116010014]
COMMIT
# Completed on Sat Mar 16 19:09:29 2013
# Generated by iptables-save v1.3.8 on Sat Mar 16 19:09:29 2013
*nat
:PREROUTING ACCEPT [504845:36508101]
:POSTROUTING ACCEPT [201:27619]
:OUTPUT ACCEPT [22944:1555986]
-A PREROUTING -s 192.168.2.0/255.255.255.0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -s 192.168.1.0/255.255.255.0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3228
-A PREROUTING -d 77.77.77.77 -p tcp -m tcp --dport 5000 -j DNAT --to-destination 192.168.1.111
-A PREROUTING -d 77.77.77.77 -p udp -m udp --dport 5000 -j DNAT --to-destination 192.168.1.111
-A PREROUTING -d 77.77.77.77 -p tcp -m tcp --dport 10000 -j DNAT --to-destination 192.168.2.222
-A PREROUTING -d 77.77.77.77 -p udp -m udp --dport 10000 -j DNAT --to-destination 192.168.2.222
-A POSTROUTING -o eth0 -j SNAT --to-source 77.77.77.77
COMMIT
# Completed on Sat Mar 16 19:09:29 2013
# Generated by iptables-save v1.3.8 on Sat Mar 16 19:09:29 2013
*filter
:INPUT DROP [350899:21174434]
:FORWARD DROP [9210:486191]
:OUTPUT DROP [4:7270]
: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 -p tcp -m state --state RELATED -j ACCEPT
-A INPUT -s 192.168.2.0/255.255.255.0 -i eth2 -j ACCEPT
-A INPUT -s 192.168.1.0/255.255.255.0 -i eth1 -j ACCEPT
-A INPUT -s 127.0.0.1 -i lo -j ACCEPT
-A INPUT -s 192.168.2.1 -i lo -j ACCEPT
-A INPUT -s 192.168.1.1 -i lo -j ACCEPT
-A INPUT -s 77.77.77.77 -i lo -j ACCEPT
-A INPUT -s 192.168.1.0/255.255.255.0 -d 192.168.1.1 -j ACCEPT
-A INPUT -d 77.77.77.77 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -p tcp -j tcp_packets
-A INPUT -i eth1 -p udp -j udp_packets
-A INPUT -i eth1 -p icmp -j icmp_packets
-A INPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT INPUT packet died: " --log-level 7
-A FORWARD -d 192.168.2.222 -i eth0 -o eth2 -j ACCEPT
-A FORWARD -d 192.168.1.111 -i eth0 -o eth1 -j ACCEPT
-A FORWARD -p tcp -j bad_tcp_packets
-A FORWARD -s 192.168.2.0/255.255.255.0 -i eth2 -j ACCEPT
-A FORWARD -s 192.168.2.1 -i eth2 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT FORWARD packet died: " --log-level 7
-A OUTPUT -p tcp -j bad_tcp_packets
-A OUTPUT -s 127.0.0.1 -j ACCEPT
-A OUTPUT -s 192.168.2.1 -j ACCEPT
-A OUTPUT -s 192.168.1.1 -j ACCEPT
-A OUTPUT -s 77.77.77.77 -j ACCEPT
-A OUTPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT OUTPUT packet died: " --log-level 7
-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 -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 0 -j ACCEPT
COMMIT
# Completed on Sat Mar 16 19:09:29 2013

И да, попробуйте с помощью tcpdump/Wireshark посмотреть доходят ли вообще пакеты до 192.168.1.111 и 192.168.2.222.

Дык работает, но только или то, или другое. :)

ATAMAH
() автор топика
Ответ на: комментарий от ATAMAH

Дык работает, но только или то, или другое. :)

Смотрите там, где не работает.

edigaryev ★★★★★
()

Возможно я ошибаюсь , но из вывода iptables-save не видно разрешение на входящие соединения на внешний ip. попробуйте по очереди менять политики на ACCEPT , и проверять соединение. правила DNAT настроены правильно. И как уже сказали tcpdump вам в руки.

greynix
()
Ответ на: комментарий от greynix


Получается пакеты от 192.168.2.222 вообще наружу не выходят при SNAT ?

# tcpdump -i any -nn -vv port 10000

tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
19:56:30.262178 IP (tos 0x0, ttl 128, id 18371, offset 0, flags [DF], proto TCP (6), length 52) 88.88.88.88.53829 > 77.77.77.77.10000: S, cksum 0x5e5e (correct), 2193033652:2193033652(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
19:56:30.262202 IP (tos 0x0, ttl 127, id 18371, offset 0, flags [DF], proto TCP (6), length 52) 88.88.88.88.53829 > 192.168.2.222.10000: S, cksum 0x50be (correct), 2193033652:2193033652(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
19:56:33.269955 IP (tos 0x0, ttl 128, id 18372, offset 0, flags [DF], proto TCP (6), length 52) 88.88.88.88.53828 > 77.77.77.77.10000: S, cksum 0xf9f5 (correct), 4015653242:4015653242(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
19:56:33.269983 IP (tos 0x0, ttl 127, id 18372, offset 0, flags [DF], proto TCP (6), length 52) 88.88.88.88.53828 > 192.168.2.222.10000: S, cksum 0xec55 (correct), 4015653242:4015653242(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
19:56:33.269991 IP (tos 0x0, ttl 128, id 18373, offset 0, flags [DF], proto TCP (6), length 52) 88.88.88.88.53829 > 77.77.77.77.10000: S, cksum 0x5e5e (correct), 2193033652:2193033652(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
19:56:33.269998 IP (tos 0x0, ttl 127, id 18373, offset 0, flags [DF], proto TCP (6), length 52) 88.88.88.88.53829 > 192.168.2.222.10000: S, cksum 0x50be (correct), 2193033652:2193033652(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
19:56:39.276023 IP (tos 0x0, ttl 128, id 18374, offset 0, flags [DF], proto TCP (6), length 48) 88.88.88.88.53828 > 77.77.77.77.10000: S, cksum 0x0dff (correct), 4015653242:4015653242(0) win 8192 <mss 1460,nop,nop,sackOK>
19:56:39.276039 IP (tos 0x0, ttl 127, id 18374, offset 0, flags [DF], proto TCP (6), length 48) 88.88.88.88.53828 > 192.168.2.222.10000: S, cksum 0x005f (correct), 4015653242:4015653242(0) win 8192 <mss 1460,nop,nop,sackOK>
19:56:39.276046 IP (tos 0x0, ttl 128, id 18375, offset 0, flags [DF], proto TCP (6), length 48) 88.88.88.88.53829 > 77.77.77.77.10000: S, cksum 0x7267 (correct), 2193033652:2193033652(0) win 8192 <mss 1460,nop,nop,sackOK>
19:56:39.276051 IP (tos 0x0, ttl 127, id 18375, offset 0, flags [DF], proto TCP (6), length 48) 88.88.88.88.53829 > 192.168.2.222.10000: S, cksum 0x64c7 (correct), 2193033652:2193033652(0) win 8192 <mss 1460,nop,nop,sackOK>
19:56:51.289902 IP (tos 0x0, ttl 128, id 18376, offset 0, flags [DF], proto TCP (6), length 52) 88.88.88.88.53830 > 77.77.77.77.10000: S, cksum 0xf86c (correct), 1779337293:1779337293(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
19:56:51.289925 IP (tos 0x0, ttl 127, id 18376, offset 0, flags [DF], proto TCP (6), length 52) 88.88.88.88.53830 > 192.168.2.222.10000: S, cksum 0xeacc (correct), 1779337293:1779337293(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
19:56:54.298679 IP (tos 0x0, ttl 128, id 18377, offset 0, flags [DF], proto TCP (6), length 52) 88.88.88.88.53830 > 77.77.77.77.10000: S, cksum 0xf86c (correct), 1779337293:1779337293(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
19:56:54.298693 IP (tos 0x0, ttl 127, id 18377, offset 0, flags [DF], proto TCP (6), length 52) 88.88.88.88.53830 > 192.168.2.222.10000: S, cksum 0xeacc (correct), 1779337293:1779337293(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
19:57:00.304494 IP (tos 0x0, ttl 128, id 18378, offset 0, flags [DF], proto TCP (6), length 48) 88.88.88.88.53830 > 77.77.77.77.10000: S, cksum 0x0c76 (correct), 1779337293:1779337293(0) win 8192 <mss 1460,nop,nop,sackOK>
19:57:00.304509 IP (tos 0x0, ttl 127, id 18378, offset 0, flags [DF], proto TCP (6), length 48) 88.88.88.88.53830 > 192.168.2.222.10000: S, cksum 0xfed5 (correct), 1779337293:1779337293(0) win 8192 <mss 1460,nop,nop,sackOK>
ATAMAH
() автор топика
Ответ на: комментарий от anton_jugatsu
# ip ro

77.77.77.74/29 dev eth0 proto kernel scope link src 77.77.77.77
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.1
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1
127.0.0.0/8 dev lo scope link
default via 77.77.77.75 dev eth0 metric 1
ATAMAH
() автор топика
Ответ на: комментарий от greynix

а почему ты думаешь что ответные пакеты пойдут обратно с порта 10000 , что там крутится? какой сервис?

В обоих случаях - это видео камеры.

ATAMAH
() автор топика
Ответ на: комментарий от no-dashi

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE

это не помогает и даже 192.168.2.222 теряется. А при
iptables -A POSTROUTING -j MASQUERADE работает, но теряется 192.168.1.111

iptables -A FORWARD -m state --ctstate RELATED,ESTABLISHED -j ACCEPT

это само-сабой изначально было...

ATAMAH
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.