LINUX.ORG.RU
решено ФорумAdmin

iptables и маски?

 


0

1

Приветствую, подскажите, в чем косякнул?

нужно банально прокинуть порт, просто адресов много, чтобы не заморачиваться каждым правилом, сделал через маркировку и цепочки

в mangle

-A PREROUTING -p tcp -m tcp --dport 5060 -j asterisk
-A PREROUTING -p udp -m udp -m multiport --dports 4569,5060,10000:20000 -j asterisk
-A PREROUTING -i eth1 -j CONNMARK --set-xmark 0x100/0xfff
-A PREROUTING -i eth0.41 -j CONNMARK --set-xmark 0x100/0xfff
-A asterisk -s ИП.1/32 -j asterisk_nat
-A asterisk -s ИП.2/32 -j asterisk_nat
-A asterisk -s ИП.3/32 -j asterisk_nat
-A asterisk -s ИП.4/32 -j asterisk_nat
-A asterisk -s ИП.N/32 -j asterisk_nat
-A asterisk_accept -j CONNMARK --set-xmark 0x1/0xfff
-A asterisk_nat -j CONNMARK --set-xmark 0x10/0xfff
-A asterisk_nat -j asterisk_accept

в nat

-A PREROUTING -m connmark --mark 0x10/0xfe -m comment --comment VoIP -j DNAT --to-destination ИПЛОКАЛЬНЫЙ

в фильтре

-A FORWARD -m connmark --mark 0x1/0x1 -m comment --comment VoIP -j ACCEPT

★★★

Если ничего не изменилось с тех пор как я с этим возюкался, то SIP поток нельзя просто снатить, надо убедиться что подгружены модули для nf filters
modprobe ip_conntrack_sip ip_nat_sip

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

а так только таблица фильтр показывается, в которой первый пару строк

Chain FORWARD (policy DROP 30304 packets, 1552K bytes)
 pkts bytes target     prot opt in     out     source               destination
  28M   19G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
 2082  322K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            connmark match  0x1/0x1 /* VoIP */

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

Ты наверное не в теме, но у SIP в заголовке запроса указывается IP и порт на котором вызывающий ожидает коннекты, поэтому тупой маскарад не всегда (никогда) работает. Поэтому тебе правильно сказали про не забыть модули поддержки SIP подгрузить

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

да попробовал я уже, не влияет это, наружу у локального астериска открыто так же, пакет в тспдампе вижу не проходит шлюз, на втором интерфейсе уже тишина

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)
Ответ на: комментарий от wolverin

где то проблема с масками мне кажется

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

2082 пакета были приняты по твоим маскам, для чистоты можешь сбросить счётчики и попробовать ещё раз?

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

сбросил, теперь нули

Chain FORWARD (policy DROP 661 packets, 34016 bytes)
 pkts bytes target     prot opt in     out     source               destination
 2298  419K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            connmark match  0x1/0x1 /* VoIP */

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

спасибо, мангл счетчики растут, а вот нат хрен!

Chain PREROUTING (policy ACCEPT 2212K packets, 150M bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       all  --  *      *       0.0.0.0/0            0.0.0.0/0            connmark match  0x10/0xfe /* VoIP */ to:локальныйадрес

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

Chain OUTPUT (policy ACCEPT 1933K packets, 133M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 1933K packets, 133M bytes)
 pkts bytes target     prot opt in     out     source               destination
30428 2012K SNAT       all  --  *      eth1    локальнаясеть/24      0.0.0.0/0            to:внешнийип1
    0     0 SNAT       all  --  *      eth0.41  локальнаясеть/24      0.0.0.0/0            to:внешнийип2

wolverin ★★★
() автор топика

Намекну.

iptables-translate -A PREROUTING -i eth1 -j CONNMARK --set-xmark 0x100/0xfff
nft add rule ip filter PREROUTING iifname "eth1" counter ct mark set ct mark xor 0x100 and 0xfffff000

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

ну то что проблема с масками я догадался, как правильно вот не доходит )

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

речь о том, что она затирает, но не уточняет маску? если не сложно, как правильно сделать маркировку уточнения пакетов х100 х1 х101 и тыды, а потом выдергивать эти уточнения

или просто местами перставить…

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 2)
Ответ на: комментарий от wolverin

речь о том, что она затирает, но не уточняет маску?

Она не затирает, она делает xor с нулём

как правильно сделать маркировку уточнения пакетов

Очевидно, сделать так, чтобы ксорила не с нулём. Например, так --set-xmark 0x100/0. Ну и внимательно читать документацию, что именно делают параметры у set-xmark

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

то что она ксорит то я знаю, хоть убейте не понимаю как сделать уточнения по ходу цепочек 111, 101, 110, 100 и тыды, а потом выдергивать эти 10 и 1 и 100

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