Abstrak:
Saya memiliki (saya menduga perutean) masalah ketika menambahkan ISP sekunder ke pengaturan jaringan saya yang ada: lalu lintas masuk Router1
tidak dijawab, tetapi lalu lintas lokal dan masuk masuk Router0
berfungsi dengan baik.
Bagaimana saya bisa menjaga bagian yang saat ini berfungsi dengan baik, sementara membuat lalu lintas masuk melalui Router1
pekerjaan?
Elaborasi:
Saya telah membuat sketsa diagram di bawah ini dengan esensi telanjang situasi (dalam praktiknya ada lebih banyak perangkat di setiap LAN, tetapi mereka tidak masalah).
Inilah situasinya:
- Saya memiliki dua jaringan internal:
LAN0
adalah192.168.x.0/24
danLAN1
sekarang192.168.y.0/24
. Keduanya berfungsi dengan baik untuk lalu lintas internal (misalnya http menggunakan cURL ). LAN0
selalu terhubung melaluiRouter0
danISP0
ke InternetInternet
.LAN1
selalu memilikiRouter1
, tapi sekarang terhubung melaluiISP1
keInternet
.- Mesin hanya hidup
LAN0
dan memiliki rute default melaluiRouter0
kerja yang baik untuk lalu lintas keluar dan masuk. - Mesin hanya hidup
LAN1
dan memiliki rute default melaluiRouter1
kerja yang baik untuk lalu lintas keluar dan masuk. - Lalu lintas internal menyala
LAN0
danLAN1
selalu berfungsi dengan baik. - Lalu lintas masuk melalui
Router1
untukWindowsB
tiba dengan benar: Saya dapat menghubungkannya melalui RDP dariWindowsC
. - Lalu lintas masuk
Router1
untukLinuxB
kedatangan (menurut tcpdump ), tetapi tidak dijawab kembali saatcurl http://e.f.g.h
fronLinuxC
menunjukkan dengan tcpdump padaLinuxB
acara:
Ini hanya memperlihatkan paket-paket yang - sesuai dengan format keluaran tcpdump - memiliki set flag SYN :
LinuxB:/tmp/LinuxB.eth1.80 # tcpdump -i eth1 'port 80'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
13:35:19.489779 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047182 ecr 0,sackOK,eol], length 0
13:35:19.788841 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047478 ecr 0,sackOK,eol], length 0
13:35:19.888835 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047578 ecr 0,sackOK,eol], length 0
13:35:19.989412 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047678 ecr 0,sackOK,eol], length 0
13:35:20.089685 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047778 ecr 0,sackOK,eol], length 0
13:35:20.190836 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047877 ecr 0,sackOK,eol], length 0
13:35:20.392123 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287048072 ecr 0,sackOK,eol], length 0
13:35:20.693692 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:21.197162 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:22.204134 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:24.115961 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:27.852374 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:31.967049 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
Ini adalah LinuxB
tabel rute:
LinuxB:/tmp/LinuxB.eth1.80 # route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.x.1 0.0.0.0 UG 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
link-local * 255.255.0.0 U 0 0 0 eth0
192.168.x.0 * 255.255.255.0 U 0 0 0 eth0
192.168.x.0 * 255.255.255.0 U 0 0 0 eth1
Sejak menghubungkan lebih dari RDP dari WindowsC
ke WindowsB
bekerja dengan baik, saya melanjutkan ini memang masalah routing. Ini adalah WindowsB
tabel rute:
C:\temp>route print
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 0c 29 35 77 e1 ...... AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport
0x3 ...00 0c 29 35 77 eb ...... VMware Accelerated AMD PCNet Adapter - Packet Scheduler Miniport
===========================================================================
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.x.1 192.168.x.4 10
0.0.0.0 0.0.0.0 192.168.y.1 192.168.y.4 5
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.x.0 255.255.255.0 192.168.x.4 192.168.x.4 10
192.168.x.4 255.255.255.255 127.0.0.1 127.0.0.1 10
192.168.x.255 255.255.255.255 192.168.x.4 192.168.x.4 10
192.168.y.0 255.255.255.0 192.168.y.4 192.168.y.4 10
192.168.y.4 255.255.255.255 127.0.0.1 127.0.0.1 10
192.168.y.255 255.255.255.255 192.168.y.4 192.168.y.4 10
224.0.0.0 240.0.0.0 192.168.x.4 192.168.x.4 10
224.0.0.0 240.0.0.0 192.168.y.4 192.168.y.4 10
255.255.255.255 255.255.255.255 192.168.x.4 192.168.x.4 1
255.255.255.255 255.255.255.255 192.168.y.4 192.168.y.4 1
Default Gateway: 192.168.y.1
===========================================================================
Persistent Routes:
Network Address Netmask Gateway Address Metric
0.0.0.0 0.0.0.0 192.168.y.1 5
0.0.0.0 0.0.0.0 192.168.x.1 10
Jadi bagaimana saya bisa mendapatkan perutean LinuxB
menjadi seperti ini:
- menjaga standar rute di
LinuxB
ke192.168.x.1
sehingga lalu lintas keluar terus menggunakanRouter0
/ISP0
- terus menjawab permintaan masuk dari
LAN0
padaLAN0
- terus menjawab permintaan masuk dari
LAN1
padaLAN1
- tetap menjawab permintaan masuk melalui
Router0
(a.b.c.d
/192.168.x.1
) via192.168.x.1
- mulai menjawab permintaan masuk melalui
Router1
(e.f.g.h
/192.168.y.1
) via192.168.y.1
- bonus: memiliki
Router1
fail-over atau load-balance withRouter0
Nota bene:
Gambar PNG di bawah ini dihasilkan pada teks UML melalui mesin PlantUML online gratis . Jika Anda ingin melihat teks UML asli, rekatkan tautan gambar PNG ke formulir PlantUML ini , lalu tekan Submit
.
sumber
yast
.Yast
tampaknya keluar untuk melakukan perutean yang rumit danroute
tampaknya tidak disukai lagiip
. Lihat opensuse.14.x6.nabble.com/yast2-advanced-routing-td3083578.html dan suse.com/documentation/sles11/book_sle_admin/data/…Jawaban:
Saya punya skrip shell untuk melakukan sesuatu seperti itu sejak lama tapi, maaf, bisa menemukannya. Jadi saya hanya bisa memberi Anda petunjuk untuk solusi yang saya terapkan saat itu. Saya menulis sebagian besar dari memori sehingga beberapa contoh hilang:
Saya punya satu tabel routing per uplink (rute ip ... tabel 101, rute ip ... tabel 102). Itu masuk ke / etc / iproute2 / rt_tables.
101 isp1 102 isp2
Anda perlu mengatur tabel-tabel itu juga:
ip route add default via $ Gateway1 dev $ Interface1 table isp1 ip route add default via $ Gateway2 dev $ Interface2 table isp2
# Jangan lupa tabel default:
ip route add default via $ DefaultGateway dev $ DefaultInterface
Aktifkan pelacakan koneksi iptables (modprobe nf_conntrack)
Tetapkan aturan ip yang memastikan lalu lintas keluar meskipun antarmuka menggunakan tabel perutean yang tepat
ip rule add from $ ip1 table isp1 ip rule add dari $ ip2 table isp2
Tetapkan aturan ip (tambahkan aturan ip ...) yang menyatakan bahwa "paket bertanda 0x201 akan mencari tabel routing 201", satu aturan untuk setiap uplink.
Dengan semua yang ada, Anda harus dapat menerima dan memulai koneksi dengan uplink apa pun dan bahkan menyeimbangkan koneksi keluar.
Itu akan menjadi dasar. Iptables + "ip route" + "ip rule" dan Anda siap melakukannya.
sumber