Jump to content

Пропадают правила в "iptables"


Recommended Posts

Кто-нибудь знает почему правила в "iptables" пропадают?

Запускаю скрипты - он заполняют "iptables". Делаю "iptables-save" - всё ок:

~ # iptables-save | grep "KVAS2"
:KVAS2_ROUTING_1_POSTROUTING - [0:0]
-A POSTROUTING -j KVAS2_ROUTING_1_POSTROUTING
-A KVAS2_ROUTING_1_POSTROUTING -o nwg1 -j MASQUERADE
:KVAS2_ROUTING_1 - [0:0]
-A PREROUTING -m set --match-set kvas2_1 dst -j KVAS2_ROUTING_1
-A OUTPUT -m set --match-set kvas2_1 dst -j KVAS2_ROUTING_1
-A KVAS2_ROUTING_1 -m set ! --match-set kvas2_1 dst -j RETURN
-A KVAS2_ROUTING_1 -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A KVAS2_ROUTING_1 -m mark --mark 0x1 -j RETURN
-A KVAS2_ROUTING_1 -m conntrack --ctstate NEW -j MARK --set-xmark 0x1/0xffffffff
-A KVAS2_ROUTING_1 -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff

Но стоит буквально самую малость подождать (например воспользоваться созданными правилами / потупить пару минут) и получаю следующее:

~ # iptables-save | grep "KVAS2"
:KVAS2_ROUTING_1_POSTROUTING - [0:0]
-A POSTROUTING -j KVAS2_ROUTING_1_POSTROUTING
-A KVAS2_ROUTING_1_POSTROUTING -o nwg1 -j MASQUERADE

Куда-то пропадает вся цепочка "KVAS2_ROUTING_1". Отдебажил свой код на всякий - он ничего не трогает.

Мистика какая-то... Предполагаю, что сам NDM подтирает "iptables", однако ревёрсить бинарники не особо-то и хочется, чтобы найти виновника.

 

Код для проверки:

CHAIN_PREFIX=KVAS2_
ROUTING_ID=1
IPSET_TABLE=kvas2_1
MARK=1
INTERFACE=nwg1

ipset create ${IPSET_TABLE} hash:ip
iptables -t nat -N ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}_POSTROUTING
iptables -t nat -A ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}_POSTROUTING -o ${INTERFACE} -j MASQUERADE
iptables -t nat -A POSTROUTING -j ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}_POSTROUTING
iptables -t mangle -N ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}
iptables -t mangle -A ${CHAIN_PREFIX}ROUTING_${ROUTING_ID} -m set ! --match-set ${IPSET_TABLE} dst -j RETURN
iptables -t mangle -A ${CHAIN_PREFIX}ROUTING_${ROUTING_ID} -j CONNMARK --restore-mark
iptables -t mangle -A ${CHAIN_PREFIX}ROUTING_${ROUTING_ID} -m mark --mark ${MARK} -j RETURN
iptables -t mangle -A ${CHAIN_PREFIX}ROUTING_${ROUTING_ID} -m conntrack --ctstate NEW -j MARK --set-mark ${MARK}
iptables -t mangle -A ${CHAIN_PREFIX}ROUTING_${ROUTING_ID} -j CONNMARK --save-mark
iptables -t mangle -A PREROUTING -m set --match-set ${IPSET_TABLE} dst -j ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}
iptables -t mangle -A OUTPUT -m set --match-set ${IPSET_TABLE} dst -j ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}

#
# --- Откат изменений ---
#
ipset destroy ${IPSET_TABLE}
iptables -t nat -D POSTROUTING -j ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}_POSTROUTING
iptables -t nat -F ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}_POSTROUTING
iptables -t nat -X ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}_POSTROUTING
iptables -t mangle -D PREROUTING -m set --match-set ${IPSET_TABLE} dst -j ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}
iptables -t mangle -D OUTPUT -m set --match-set ${IPSET_TABLE} dst -j ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}
iptables -t mangle -F ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}
iptables -t mangle -X ${CHAIN_PREFIX}ROUTING_${ROUTING_ID}

 

Edited by Ponywka
Код для проверки
Link to comment
Share on other sites

Немного поизучав исходники оригинального kvas обнаружил, что там это исправляется с помощью хука "netfilter.d": https://github.com/qzeleza/kvas/blob/3fdbbd1ace7b57b11bf88d8db3882d94a1d6e01c/opt/etc/ndm/netfilter.d/100-vpn-mark

Опять же - печально, ибо я хочу по минимуму привязываться к связке "KeeneticOS + Entware" в своём проекте :(

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...