GNU/Linux >> Znalost Linux >  >> Linux

Odpovědět na stejném rozhraní jako příchozí?

echo 200 isp2 >> /etc/iproute2/rt_tables
ip rule add from <interface_IP> table isp2 prio 1
ip route add default via <gateway_IP> dev <interface> table isp2

Výše uvedené nevyžaduje žádné označování paketů pomocí ipfilter. Funguje to proto, že odchozí (odpovědní) pakety budou mít jako zdrojovou (od) adresu na odchozím paketu IP adresu, která byla původně použita pro připojení k 2. rozhraní.


Následující příkazy vytvoří alternativní směrovací tabulku pomocí eth1 pro pakety, které mají značku 1 (kromě paketů na localhost). ip příkaz je ze sady iproute2 (Ubuntu:iproute Install iproute http://bit.ly/software-small, iproute-doc Install iproute-doc http://bit.ly/software-small).

ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
ip route add 0.0.0.0/0 table 1 dev eth1

Druhá polovina práce je rozpoznávání paketů, které musí dostat značku 1; pak použijte iptables -t mangle -A OUTPUT … -j MARK --set-mark 1 na těchto paketech, aby byly směrovány přes směrovací tabulku 1. Myslím, že by to mělo udělat následující (nahradit 1.2.3.4 adresou rozhraní, které není výchozím směrováním):

iptables -t mangle -A OUTPUT -m conntrack --ctorigdst 1.2.3.4 -j MARK --set-mark 1

Nejsem si jistý, jestli to stačí, možná je potřeba další pravidlo pro příchozí pakety, které řekne modulu conntrack, aby je sledoval.


Měl jsem problémy s lokálně generovanými pakety s řešením navrženým Petrem, zjistil jsem, že to opravuje následující:

echo 200 isp2 >> /etc/iproute2/rt_tables
ip rule add from <interface_IP> table isp2 priority 900
ip rule add from dev <interface> table isp2 priority 1000
ip route add default via <gateway_IP> dev <interface> table isp2
ip route add <interface_prefix> dev <interface> proto static scope link src <interface_IP> table isp2

POZNÁMKA: U čtvrtého řádku výše můžete narazit na problémy se syntaxí. V takových případech může být syntaxe 4. příkazu nyní tato:

ip rule add iif <interface> table isp2 priority 1000

Linux
  1. Zrušte tabulky v MySQL

  2. iptables:příkaz nenalezen

  3. Získejte IP adresu rozhraní v systému Linux

  1. Určete, zda je síťové rozhraní bezdrátové nebo kabelové

  2. Rozhraní příkazového řádku C++

  3. Jak nasměrovat pouze konkrétní podsíť (zdrojovou IP) na konkrétní rozhraní?

  1. Linux – odpověď na stejném rozhraní jako příchozí?

  2. Rozhraní Sftp k Scp?

  3. Určete kanál bezdrátového rozhraní