則賽打哪指哪的策略路由

2019-08-11

則賽的服務器沒有 BGP 的 IP,機房那邊前輩給弄了 3個 IP(聯通、移動、電信),三根線插到了服務器上。9日下午跑去機房配置裝上了 Ubuntu 16。裝機時間有點長,趕到了下班時間。於是只能回家配置策略路由,有點小慌,畢竟配置搞壞了還要開車跑一個城市去機房手懟

記錄本次活動的配置

這個是當時的配置,先貼出來留著備忘

IP

/etc/network/interface 中配置,三個線路的 IP 都是 靜態 IP 配置,默認的出口是 eno1(電信)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eno1
iface eno1 inet static
address 222.*.*.29
netmask 255.255.255.192
gateway 222.*.*.62
dns-nameservers 114.114.114.114


auto eno2
iface eno2 inet static
address 221.*.*.61
netmask 255.255.255.192
#gateway 221.*.*.1
#dns-nameservers 223.5.5.5


auto eno3
iface eno3 inet static
address 111.*.*.139
netmask 255.255.255.0
#gateway 111.*.*.1
#dns-nameservers 223.5.5.5

策略路由

原則:數據包從哪邊來,懟哪去,尋找自己的網關。

1
2
3
4
5
6
7
8
9
10
11
ip route add default via 222.*.*.62 dev eno1 table ct-line
ip rule add from 222.*.*.29 table ct-line
ip rule add to 222.*.*.29 table ct-line

ip route add default via 221.*.*.1 dev eno2 table cu-line
ip rule add from 221.*.*.61 table cu-line
ip rule add to 221.*.*.61 table cu-line

ip route add default via 111.*.*.1 dev eno3 table cm-line
ip rule add from 111.*.*.139 table cm-line
ip rule add to 111.*.*.139 table cm-line

路由表

Linux 內部支持 255 張路由表,其中 localdefaultmain 是內置的。

1
2
3
4
5
6
7
8
9
10
remiio@koumakan:~$ ip rule show
0: from all lookup local
32760: from all to 111.*.*.139 lookup cm-line
32761: from 111.*.*.139 lookup cm-line
32762: from all to 221.*.*.61 lookup cu-line
32763: from 221.*.*.61 lookup cu-line
32764: from all to 222.*.*.29 lookup ct-line
32765: from 222.*.*.29 lookup ct-line
32766: from all lookup main
32767: from all lookup default

本次活動中的策略路由僅僅是希望來源數據包通過來源的接口和來源的網關收發。

配置原則

  • 需要了解路由表是什麼;

規則

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 通過來源/目標 IP 設置,其中 10、20 是不同的路由表
# Source IP
ip rule add from 192.168.1.10 table 10
ip rule add from 192.168.2.0/24 table 20
# Destination IP
ip rule add to 168.95.1.1 table 10
ip rule add to 168.96.0.0/24 table 20

# 根據服務/協議(端口)來進行規劃,搭配 Netfilter 設置 Mark 值
# fwmark
iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 80 -j MARK --set-mark 1
iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 25 -j MARK --set-mark 2
iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 110 -j MARK --set-mark 2
iptables -t mangle -A FORWARD -i eth3 -j MARK --set-mark 3
ip rule add fwmark 1 table 1
ip rule add fwmark 2 table 2
ip rule add fwmark 3 table 3

# 通過接口 可以是 eth0/1/2/3
# dev
ip rule add dev eth2 table 1
ip rule add dev eth3 table 3

優先級別

1
2
3
# 用上文的例子,結尾數字越小優先級越高 10 高於 20
ip rule add from 192.168.1.10 table 10
ip rule add from 192.168.2.0/24 table 20

路由表

1
2
3
# 添加 
ip rule add from 192.168.1.10 table 10
# 系統中多了一個 IP 為 10 的路由表

這些事自己這次配置需要熟悉的內容,僅僅作為個人備忘使用,具體命令可以 man 或者 -h


Kommentare: