Я пытаюсь выполнить определенный трюк с маршрутизацией, когда я хочу, чтобы мой сервер Linux отвечал на запросы arp для 10.0.0.1
на eth0
, хотя
10.0.0.1
является не настроенный IP для eth0
(в этом случае ядро все же сделает это) и10.0.0.1
является не перенаправлено на какой-либо другой интерфейс этого сервера (в этом случае поможет проксирование arp).Эффект должен быть таким, что другие устройства на eth0
направит пакеты в 10.0.0.1
на мой сервер, где я могу обрабатывать их в PREROUTING
и другие таблицы.
Могу ли я сделать это, желательно без дополнительного демона?
В соответствии с просьбой, вот моя мотивация (но обратите внимание, что этот вопрос не насчет предложений, как добиться этого разными способами - мне действительно интересно знать, возможно ли это выше, а не разумно ли это :-)).
Предполагать 10.0.0.1
быть общедоступным IP-адресом и единственным, маршрутизируемым на рассматриваемую машину. Система (host
) содержит виртуальную машину (guest
). я хочу guest
верить 10.0.0.1
принадлежит ему, поэтому давать ему другой IP и заниматься натом - это не то, что я хочу делать. Вместо этого я host
к
192.168.0.1
), не маршрутизируемый публично,eth0
как если бы это было 10.0.0.1
,10.0.0.1:2222
к 192.168.0.1
, т.е. обрабатывать его локально,10.0.0.1
к виртуальному интерфейсу, который guest
прикреплен к.Это объясняет два ограничения в вопросе: guest
машина не всегда может быть включена, поэтому упомянутый маршрут не всегда будет присутствовать - это исключает прокси-ARP. Кроме того, я не могу утверждать 10.0.0.1
к eth0
, поскольку очень сложно заставить Linux перенаправить пакет, предназначенный для адреса, который ядро считает локальным. В local
таблица маршрутизации имеет приоритет 0 согласно ip rule
, например.
А как насчет использования псевдонимов IP, таких как eth0: 1? Это заставит интерфейс отвечать на ARP и позволит вам управлять его поведением с помощью iptables.
Кроме того, неясно, почему proxy-arp здесь не поможет, поскольку вы можете прервать ожидаемое поведение с помощью правил iptables.
Можете ли вы подробнее объяснить, чего вы пытаетесь достичь?