Интересно, есть ли у меня VPS с двумя сетевыми интерфейсами (1.1.1.1 И 2.2.2.2) и 1.1.1.1, установленным в качестве основного ...
eth0 = 1.1.1.1
eth0: 1 = 2.2.2.2
Теперь я хочу направить весь трафик для domain.com (я не знаю домен, если он использует Cloudflare), чтобы пройти через IP 2.2.2.2 eth0: 1
ex1:
если плохо побегу
wget domain.com
он пройдет через 2.2.2.2 eth0: 1
но бегиwget google.com
он пройдет через 1.1.1.1 eth0
ex2:
если я перейду на whatismyip.com, чтобы пройти через eth0, он покажет, что мой IP-адрес - «1.1.1.1»
но если я перейду на «whatismyipaddress.com», он будет пропущен через eth0: 1, поэтому он покажет, что мой IP-адрес - «2.2.2.2»
Следует учесть следующие моменты:
Существует множество вариантов конфигурации для маршрутизации в Linux, но ни один из них не принимает голые доменные имена. В конце концов, мы говорим об IP-маршрутизации. Таким образом, правила должны быть определены для IP-адресов, которые, очевидно, «сломаются» при изменении записи (записей) DNS домена.
В этом случае есть 2 интерфейса, обеспечивающих маршрут к одной и той же подсети (0.0.0.0/0, также известной как Интернет). Чтобы сообщить ядру о предпочтении определенного интерфейса, нам необходимо применить маршрутизацию на основе политик (PBR).
Как следует из названия, маршрутизация на основе политик работает путем определения политики (также известной как «правило») для определения того, какой интерфейс использовать. Без политик ядро выберет первый маршрут, соответствующий сети назначения.
Ядро использует маршруты для определения того, как обрабатывать пакеты. Маршрут - это простое определение, которое включает адрес назначения и ссылку (интерфейс) для использования.
Маршруты сгруппированы в tables
, какая таблица используется, зависит от определенных политик.
А policy
(или правило) сообщает ядру, какую таблицу следует исследовать для маршрутизации пакетов. Определение политики включает в себя исследуемый источник, пункт назначения и таблицу маршрутизации.
Чтобы отобразить маршруты, используемые в настоящее время системой, выполните ip route
Это показывает все записи в main
таблица маршрутизации. К другим таблицам можно получить доступ, запустив ip route show table <tablename>
.
Чтобы отобразить используемые в настоящее время политики, выполните ip rule
Здесь перечислены все политики / правила, используемые ядром. Они повторяются сверху вниз, пока одно правило не соответствует обрабатываемому пакету.
echo "101 out1" >> /etc/iproute2/rt_tables
ip rule add from all to 3.4.5.6 table out1
ip route add default via 10.0.0.1 dev eth0 src 1.1.1.1 table out1
ip route add 10.0.0.0/8 dev eth0 src 1.1.1.1 table out1
Эти команды создадут новую таблицу маршрутизации. out1
и добавить 10.0.0.1
как шлюз для доступа в Интернет. Трафик идет в 3.4.5.6
(который необходимо заменить фактическим, разрешенным IP-адресом целевого домена) будет отправлен через шлюз по умолчанию, определенный в out1
стол, используя указанное устройство eth0
и IP 1.1.1.1
.
Я бы рекомендовал прочитать некоторые существующие уроки и руководства, чтобы ознакомиться с терминологией. Ищи iproute2
и linux advanced routing and traffic control
.
И последнее, но не менее важное: проверьте свои изменения, прежде чем применять их в действующей системе. Ошибки случаются, лично я предпочитаю жарить виртуальную машину вместо удаленного сервера.