Skip to content

Linux i dwa interfejsy w tej samej podsieci

Następujący problem: host z systemem Linux potrzebuje dwóch interfejsów w tej samej podsieci, dodatkowo ruch do wskazanych sieci zewnętrznych ma odbywać się przez konkretny interfejs z jego adresem jako adres źródłowy.

Adresacja IP:
10.10.10/24 – sieć w której znajduje się host.
10.10.10.1 – gateway dla sieci
10.10.10.100 – adres interfejsu eth0
10.10.10.101 – adres interfejsu eth1

1.1.1/24 – sieć do której ruch ma wychodzić przez eth0
2.2.2/24 – sieć do której ruch ma wychodzić przez eth1

Po pierwsze ustawiamy parametr jądra net.ipv4.conf.default.arp_filter=1.
Dzięki temu system będzie odpowiadał odpowiednim adresem MAC na otrzymane zapytania ARP o każdy z użytych na interfejsach (eth0,eth1) adresów IP.

# sysctl -w net.ipv4.conf.default.arp_filter=1
net.ipv4.conf.default.arp_filter = 1

Ustawiamy parametr na stałe

# echo "net.ipv4.conf.all.arp_filter = 1" >> /etc/sysctl.conf

Tworzymy osobną tablicę rutingu dla każdego z interfejsów dopisując na koniec pliku /etc/iproute2/rt_tables 2 linie:

# cat /etc/iproute2/rt_tables

#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep

1 eth0_RT
2 eth1_RT

Ustawiamy trasy

1. Dla ruchu wychodzącego przez eth0:

ip route add 10.10.10.0/24 dev eth0 src 10.10.10.100 table eth0_RT
ip route add default via 10.10.10.1 dev eth0 table eth0_RT
#siec 1.1.1/24 przez eth0
ip route add 1.1.1.0/24 via 10.10.10.1 dev eth0 src 10.10.10.100
ip route add 10.10.10.0/24 dev eth0 src 10.10.10.100
#domyslnie ruch bedzie wychodzil przez interfejs eth0
ip route add default via 10.10.10.1  
ip rule add from 10.10.10.100 table eth0_RT

2. Dla ruchu wychodzącego przez eth1

ip route add 10.10.10.0/24 dev eth1 src 10.10.10.101 table eth1_RT
ip route add default via 10.10.10.1 dev eth1 table eth1_RT
#siec 2.2.2/24 przez eth1
ip route add 2.2.2.0/24 via 10.10.10.1 dev eth1 src 10.10.10.101
ip rule add from 10.10.10.101 table eth1_RT

Trasy na stałe możemy zapisać w plikach /etc/sysconfig/network dla Centos/RH lub w /etc/network/interfaces w Debianie.

Facebook Comments

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *