Bisakah Anda meminjamkan keahlian Anda dalam memahami cara
mengonfigurasi pemisahan lalu lintas jaringan pada dua antarmuka jaringan?
Seperti yang saya pahami sejauh ini, rute statis digunakan untuk lalu lintas jaringan yang
tidak dirancang untuk menggunakan gateway default. Gerbang default digunakan untuk
semua lalu lintas yang tidak ditujukan untuk jaringan lokal dan yang tidak
rute pilihannya telah ditentukan dalam tabel perutean.
Skenarionya adalah sebagai berikut.
- Setiap komputer dalam jaringan memiliki dua kartu jaringan.
- Antarmuka produksi untuk masing-masing adalah
eth0
(GW =10.10.10.1). - Antarmuka manajemen untuk masing-masing adalah
eth1
(GW =192.168.100.1). - Lalu lintas Produksi dan Manajemen harus benar-benar dipisahkan.
Saya telah memposting, di bawah, hal-hal apa yang telah saya coba dengan Debian Wheezy.
Dan, masalah saya adalah, meskipun saya memiliki host yang diatur sedemikian rupa sehingga
mereka berkomunikasi di kedua antarmuka, host individu tampaknya "mendengar"
lalu lintas pada antarmuka yang salah. Misalnya:
Tuan rumah 140
eth0 Link encap:Ethernet HWaddr 08:00:27:d1:b6:8f
inet addr:10.10.10.140 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fed1:b68f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1341 errors:0 dropped:0 overruns:0 frame:0
TX packets:2530 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:641481 (626.4 KiB) TX bytes:241124 (235.4 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:ad:14:b6
inet addr:192.168.100.140 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fead:14b6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7220 errors:0 dropped:0 overruns:0 frame:0
TX packets:5257 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:602485 (588.3 KiB) TX bytes:1022906 (998.9 KiB)
Dari Host 140, saya menjalankan perintah ini:tcpdump -i eth0
. Dalam sesi
terpisah di Host 140, saya menjalankan ping 192.168.100.50
.
19:17:29.301565 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 10, length 64
19:17:30.301561 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 11, length 64
19:17:31.301570 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 12, length 64
19:17:32.301580 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 13, length 64
Mengapa saya melihat output di atas pada eth0
? Saya rasa saya seharusnya hanya melihat lalu lintas untuk 10.10.10.140.
Saya juga melihat ini di eth1
, seperti yang diharapkan:
19:18:47.805408 IP 192.168.100.50 > 192.168.100.140: ICMP echo request, id 1605, seq 247, length 64
Jika saya melakukan ping dari Host 50 (ifconfig
yang sama] hasil – hanya kuadran terakhir yang berbeda),
lalu eth0
diam, dan saya melihat ICMP bergema di eth1
, seperti yang diharapkan.
Saya ingin memahami bagaimana mengonfigurasi setiap antarmuka untuk menangani hanya
lalu lintas yang menjadi tanggung jawabnya dalam dua varietas Linux utama.
Saya pikir saya hampir sampai, tetapi saya kehilangan sesuatu yang baru saja saya dapat' sepertinya tidak ditemukan.
- Debian Wheezy (7.x) atau Debian Jessie (8.x)
- Linux Perusahaan (6.x) (RedHat/CentOS/Scientific/Oracle).
Saya tahu bahwa solusi untuk Debian harus baik untuk Wheezy dan Jessie,
dan bahwa solusi untuk EL harus sama untuk semua versi EL 6.x.
Saya ingin menghindari penggunaan skrip RC untuk menjalankan perintah, sebagai gantinya memilih
untuk menggunakan file konfigurasi.
Di Debian, file konfigurasi relevan yang saya ketahui adalah:
/etc/network/interfaces
Di EL 6.x, file konfigurasi relevan yang saya ketahui adalah:
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/route-eth0
/etc/sysconfig/network-scripts/route-eth1
/etc/sysconfig/network-scripts/rule-eth0
/etc/sysconfig/network-scripts/rule-eth1
Debian 8 "Jessie" saya /etc/network/interfaces
berkas:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# Production interface
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.10.10.140
netmask 255.255.255.0
gateway 10.10.10.1
# Management interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.100.140
netmask 255.255.255.0
Saya pikir netstat -anr
mungkin menggambarkan masalahnya:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 eth0
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Jawaban yang Diterima:
Saya ingin tahu lebih banyak tentang topik ini untuk menyempurnakan konfigurasi menjadi yang terbaik, tetapi inilah yang saya miliki sejauh ini. Bahkan tanpa mengaktifkan pemfilteran ARP di semua antarmuka jaringan (net.ipv4.conf.all.arp_filter = 0
), seperti yang disebutkan oleh @spuk,
lalu lintas tampaknya benar-benar dipisahkan dalam konfigurasi ini.
File, /etc/iproute2/rt_tables
, setidaknya sama di EL 6.x dan DEB 7/8. Ini adalah file yang membuat tabel perutean bernama untuk rute statis.
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
252 mgmt
Di atas, jumlah rute statis bernama, 252, pada dasarnya sewenang-wenang; atau, setiap rute statis mendapatkan nomor uniknya sendiri antara 1 dan 252.
File, /etc/network/interfaces
dalam DEB 7/8, setidaknya:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The production network interface
# The 'gateway' directive is the default route.
# Were eth0 configured via DHCP, the default route would also be here.
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.10.10.140
netmask 255.255.255.0
gateway 10.10.10.1
# The management network interface
# The 'gateway' directive cannot be used again because there can be
# one, and only one, default route. Instead, the 'post-up' directives
# use the `mgmt` static route.
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.100.140
netmask 255.255.255.0
post-up ip route add 192.168.100.0/24 dev eth1 src 192.168.100.140 table mgmt
post-up ip route add default via 192.168.100.1 dev eth1 table mgmt
post-up ip rule add from 192.168.100.140/32 table mgmt
post-up ip rule add to 192.168.100.140/32 table mgmt
Hasil ip route show
di Debian:
default via 10.10.10.1 dev eth0
10.10.10.0/24 dev eth0 proto kernel scope link src 10.10.10.140
192.168.100.0/24 dev eth1 proto kernel scope link src 192.168.100.140
EL 6.x /etc/sysconfig/network
berkas:
NETWORKING=yes
HOSTNAME=localhost.localdomain
GATEWAY=10.10.10.1
Di atas, GATEWAY adalah rute default. Di bawah ini, jika BOOTPROTOCOL disetel ke DHCP, rute default akan diperoleh dari DHCP.
EL 6.x /etc/sysconfig/network-scripts/ifcfg-eth0
file, tanpa “HWADDR” dan “UUID”:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=10.10.10.140
NETMASK=255.255.255.0
NETWORK=10.10.10.0
BROADCAST=10.10.10.255
EL 6.x /etc/sysconfig/network-scripts/ifcfg-eth1
file, tanpa “HWADDR” dan “UUID”:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=192.168.100.140
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255
EL 6.x /etc/sysconfig/network-scripts/route-eth1
berkas:
192.168.100.0/24 dev eth1 table mgmt
default via 192.168.100.1 dev eth1 table mgmt
EL 6.x /etc/sysconfig/network-scripts/rule-eth1
berkas:
from 192.168.100.0/24 lookup mgmt
Hasil ip route show
di EL 6.x:
192.168.100.0/24 dev eth1 proto kernel scope link src 192.168.100.160
10.10.10.0/24 dev eth0 proto kernel scope link src 10.10.10.160
default via 10.10.10.1 dev eth0
Pembaruan untuk RHEL8
Metode yang dijelaskan di atas berfungsi dengan RHEL 6 &RHEL 7 serta turunannya, tetapi untuk RHEL 8 dan turunannya, pertama-tama harus menginstal network-scripts
untuk menggunakan metode yang dijelaskan di atas.
dnf install network-scripts
Instalasi menghasilkan peringatan bahwa network-scripts
akan dihapus di salah satu rilis utama RHEL berikutnya dan NetworkManager menyediakan ifup
/ifdown
skrip juga.
Pembaruan untuk Ubuntu 20.04 LTS
Membuat tabel perutean bernama boleh saja, tetapi tidak diperlukan dengan netplan
, yang tidak akan menggunakan nama itu. Meskipun demikian jumlah tabel routing bernama dari rt_tables
file dapat digunakan untuk netplan
. NIC yang sesuai adalah enps03
(eth0
) dan enp0s8
(eth1
).
network:
version: 2
ethernets:
enp0s3:
addresses:
- 10.10.10.140/24
dhcp4: false
dhcp6: false
gateway4: 10.10.10.1
nameservers:
addresses:
- 1.2.3.4
- 1.2.3.5
search:
- your-search-domain-name.com
enp0s8:
dhcp4: false
dhcp6: false
addresses:
- 192.168.100.140/24
routes:
- to: 192.168.100.0/24
via: 192.168.100.1
table: 252
routing-policy:
- from: 192.168.100.0/24
table: 252
Ini menghasilkan rute berikut dari ip r s
.
default via 10.10.10.1 dev enp0s3 proto static
10.10.10.0/24 dev enp0s3 proto kernel scope link src 10.10.10.140
192.168.100.0/24 dev enp0s8 proto kernel scope link src 192.168.100.140