Связать входящие пакеты с одним интерфейсом и исходящими пакетами со вторым интерфейсом?

У меня есть машина Linux с 2 сетевыми интерфейсами, мне нужно использовать один для входящих пакетов, другой для исходящих пакетов.

Текущий сценарий

  • Настройка предпочтительного сетевого адаптера для просмотра
  • Предпочитайте проводную связь по беспроводной сети в той же сети (специальный случай)
  • Windows 8 Hyper-V - как предоставить доступ в Интернет через Интернет?
  • Сеть не работает после обновления Windows 10
  • Как загрузить баланс 2 подключения к Интернету на компьютере под управлением Windows 7?
  • Несколько карт Wi-Fi и подключения к Интернету в Windows 7
  • Каков наилучший способ ограничить IP-адреса, которые могут быть доступны из контейнера докеров?
  • Маршрутизация трафика ЛВС через eth0, а не tun0, в точке доступа к VPN
  • Как увидеть попытки подключения, отклоненные брандмауэром в режиме реального времени?
  • Блокировать все порты, кроме SSH / HTTP, в ipchains и iptables
  • Не знаю, что слушает порт 80 в OS X
  • Настройка Iptables NATforwarding
  • One Solution collect form web for “Связать входящие пакеты с одним интерфейсом и исходящими пакетами со вторым интерфейсом?”

    Если вы согласны использовать один IP / префикс на вашем компьютере (назовем его XXXX / Y, со шлюзом GGGG), тогда его можно сделать тривиально.

    • Добавьте свой адрес в eth0 , но с полной подсети.

      Например, ip addr add XXXX/32 dev eth0

    • Не устанавливайте адрес на eth1. Если он есть, очистите его с помощью ip -4 addr flush dev eth1

    • Добавьте маршруты подсети и шлюза через eth1

      ip route add XXXX/Y dev eth1 ip route add default via GGGG dev eth1

    • Если на Ubuntu или в других дистрибутивах Linux, которые по умолчанию разрешают фильтрацию обратного пути, отключите его, поскольку они предполагают и обеспечивают симметричную маршрутизацию.

      sysctl -w net.ipv4.conf.eth0.rp_filter = 0 sysctl -w net.ipv4.conf.eth1.rp_filter = 0

    • Если оба сетевых интерфейса подключены к коммутатору, вам не нужно отвечать на ARP на eth1. Поскольку мы добавили IP-адрес в eth0 , мы можем просто установить arp_ignore на eth1 на 1 (только ответ ARP для адресов eth1 ) или 8 (ничего не ответьте).

      sysctl -w net.ipv4.conf.eth1.arp_ignore = 8

    Как только эта конфигурация будет завершена, будет только один трафик, который будет протекать в обратном порядке: если ядро ​​получает ARP-запрос для XXXX от eth0 , он ответит с помощью eth0 .

    Давайте будем гением компьютера.