Марсиане в TCP/IP

06/07/2016

Если вы читаете эту статью, то вы наверняка увидели в логах своей системы сообщения вида

"IPv4: martian source X.X.X.X from X.X.X.X, on dev eth0"

И почти наиболее вероятно то, что вы до этого пытались настроить на вашем файрволле (маршрутизаторе) проброс портов, или какой-либо из типов VPN'а, и ничего из этого не заработало. Вернее заработало, но ядро вашей системы упорно препятствует обмену пакетами, кидая эти забавные сообщения про марсиан в лог. Почему? Давайте сначала поймем, что такое "martian source", по-русски марсиане. Марсианами принято называть пакеты, которые по законам интернета никак не могли оказатья на интерфейсе компьютера, но почему-то там оказались. Например пакет с адресом назначения 192.168.1.2 никак не мог прийти от 8.8.8.8, потому что "серые" адреса в интернете не маршрутизируются. Чтобы вы все-таки могли обмениваться информацией с узлами в интернете, вы настраиваете NAT (проброс портов) на вашем маршрутизаторе, подменяя адрес назначения на локальный адрес компьютера (сервера), находящегося за NAT'ом, получая пакеты как из нашего примера. Подробнее о том, какие еще адреса попадают под "martian source" можно в Википедии. В Debian версии 6, а может даже и 7, это работало и так. Появились такие блокировки сравнительно недавно. Как все-таки сказать ядру, что мы совсем не против получать такие пакеты? Для это следует отредактировать конфигурационный файл ядра - sysctl.conf, который, как правило, лежит в /etc/. Но, если его там нет поищите глубже с помощью, например find:

find /etc -name "*sysctl*"

Далее отредактируйте 2 параметра, а если их там нет - добавьте

net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0

и перечитайте конфигурацию ядра

sysctl -p

Однако помните, что теперь забота о блокировки марсиан полностью лежит на ваших плечах - конфигурируйте её с помощью nftables

 

Темы:

Добавить комментарий