O problema está resolvido. RHEL > 6 sysctl:
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
Eu tenho um problema! Então, eu tenho dois provedores e um servidor de roteamento no CentOS7. Eu não consigo fazer a marcação funcionar no segundo provedor. A essência é esta: Com o primeiro provedor tudo está bem, não é destacado em uma tabela separada. Uma regra simples para o MASQUERADE e uma regra para um firewall.
iptables -t nat -I POSTROUTING -s MY_IP -j MASQUERADE
iptables -I RH-Firewall-1-INPUT -m mac --mac-source MY_MAC -j ACCEPT
O segundo provedor fica em uma tabela separada. Na própria tabela, há apenas a rota padrão e algumas regras:
ip route show table 2
default via GATEWAY_OF_PROVIDER dev eth2.2
ip rule show
from GATEWAY_OF_PROVIDER lookup 2
from all fwmark 0x2 lookup 2
Resultado: Se eu adicionar uma regra:
ip rule add from MY_IP lookup 2
, então tudo funciona, e se eu adicionar
iptables -t mangle -I PREROUTING -s MY_IP -j MARK --set-mark 2
, tudo quebra no gateway do provedor.
rastrear com regra manual:
1 <1 мс <1 мс <1 мс gate.dtbyh.ru [192.168.0.XX]
2 <1 мс <1 мс <1 мс ipXXX.XXX.XXX.XXX.ipblk.stnsk.ru [195.189.218.73]
3 1 ms 1 ms <1 мс gw.stnsk.ru [XX.XX.XX.XX]
4 1 ms 1 ms 1 ms startel-gw.mega-com.ru [XXX.XX.XX.XX]
5 1 ms 1 ms 1 ms kuchum-xe-0-0-2.yndx.net [XX.XX.XX.XX]
6 46 ms 61 ms 50 ms sverdlov-xe-0-0-3.yndx.net [213.180.213.68]
7 46 ms 46 ms 46 ms styri-et-10-3-0-901.yndx.net [213.180.213.18]
8 63 ms 47 ms 47 ms m9-p2-eth-trunk8.yndx.net [87.250.239.127]
rastrear com regra de marca:
1 <1 мс <1 мс <1 мс gate [192.168.0.XX]
2 * <1 мс <1 мс ipXXX.XXX.XXX.XXX.ipblk.stnsk.ru [XX.XXX.XXX.XX]
3 * * *
4 * * *
ou seja, a marcação é trabalho, mas não solta o gateway.
sysctl:
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
Obrigado!
O problema está resolvido. RHEL > 6 sysctl:
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2