Jump to content

Recommended Posts

Posted (edited)

Кто-нибудь знает почему правила в "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
Код для проверки
Posted

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

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

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...

Important Information

This site uses cookies. By clicking "I accept" or continuing to browse the site, you authorize their use in accordance with the Privacy Policy.