iptables sta cambiando gli indirizzi IP che iniziano con 047. a 39.!

Ho cercato di proibire un indirizzo IP in iptables che inizia con 047, ma lo cambierà a 039.

iptables -v -w -I INPUT 1 -s 047.75.162.122 -j DROP 

Ma l'indirizzo IP sarebbe stato bandito come 39.75.162.122!

Perché pensi che questo sta succedendo?

2 Solutions collect form web for “iptables sta cambiando gli indirizzi IP che iniziano con 047. a 39.!”

Questo è ciò che sta succedendo:

 $ printf "%d\n" 047 39 

047 in ottale è 39 in decimale.

Hai solo bisogno di abbandonare il primo 0 .

A un presupposto, questo accade perché qualcosa in iptables sta dividendo gli indirizzi IPv4 in 4 numbers decimali in modo da poter convertire la rappresentazione di stringhe IP a lungo. Ma è una congettura.

inet_aton accetta anche un paio di altre forms less usuali ( il manuale li descrive anche):

 octal: 020.0.1.22 -> 16.0.1.22 hexadecimal: 0x10.0.1.22 -> 16.0.1.22 combination: 020.0.1.0x16 -> 16.0.1.22 bottom two bytes together (old Class B) 16.0.278 -> 16.0.1.22 bottom three bytes together (old Class A) 16.278 -> 16.0.1.22 all in one, hex 0x10000116 -> 16.0.1.22 all in one, decimal (completely unreadable) 268435734 -> 16.0.1.22 this should be simple 0020.0426 -> ... 

Probabilmente lavoreranno anche sui browser web.

Prefiggendo numbers ottali con uno zero e numbers esadecimali con 0x è alless vecchio come il linguaggio C.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.