No meu servidor CentOS7, esvaziei todas as regras do iptables e adicionei a regra abaixo:
iptables -t mangle -N DIVERT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
posso verificar:
[root@localhost go-tproxy]# iptables -n -L -t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DIVERT tcp -- 0.0.0.0/0 0.0.0.0/0 socket
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain DIVERT (1 references)
target prot opt source destination
MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK set 0x1
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
e meu serviço iptables no meu servidor está ativo.
Você vê a MARK set 0x1
tag nas regras e então eu uso ping www.demo.com
e `curl -vo 1 'https://google.com' para testar os dados. e eu capturo os pacotes pelo wireshark, você pode conferir:
https://github.com/moonshineBoy/pastebin_files
Não encontrei a localização do MARK set 0x1 em capture-https.pcapng
, por favor me diga onde fica a localização do MARK.