Am 2 subrețele în rețeaua mea locală (192.168.4.0/24, 192.168.5.0/24), dar doar 1 server gateway (192.168.4.223) care are 2 conexiuni OpenVPN (10.100.2.6/24, 10.6/104.33.102) . Topologia este ca:
introduceți descrierea imaginii aici
Vreau ca computerele din 192.168.4.0/24 (cum ar fi Computerul B) să se conecteze la Internet prin serverul OpenVPN 2 și computerele din 192.168.5.0/24 (cum ar fi Computerul A) să se conecteze la Internet prin serverul OpenVPN 1.
Pe OPENWRT
router:
## Ce am facut:
vi /etc/iproute2/rt_tables
...
110 myovp # Adăugați un tabel pentru 192.168.5.0/24
...
# Apoi adăugați reguli pentru iproute2 și iptables:
regulă ip adăugați fwmark 110 tabelul 110
regula ip se adaugă la tabelul principal 192.168.4.0/24
IP route add default prin 192.168.4.223 dev br-lan_1 tabelul 110
iptables -t mangle -A PREROUTING -i br-lan_2 -j MARK --set-mark 110
## Câteva rezultate:
# Ieșirea „regula ip”:
0: din toate căutările locale
32764: de la toate la 192.168.4.0/24 principal de căutare
32765: din toate fwmark 0x6e lookup myovp
32766: din toate căutările principale
32767: din toate căutările implicite
# Ieșirea „ip route show”:
192.168.4.0/24 dev br-lan_1 proto kernel scope link src 192.168.4.1
192.168.5.0/24 dev br-lan_2 proto kernel scope link src 192.168.5.1
# Ieșirea „ip route show table 110”:
implicit prin 192.168.4.223 dev br-lan_1
# Ieșirea lui `iptables -t mangle -L PREROUTING -v`
PRERUUTARE în lanț (politica ACCEPTĂ pachete de 871K, 177M de octeți)
pkts bytes target prot opt in out source destination
28030 1954K MARK all -- br-lan_2 oriunde oriunde MARK set 0x6e
Pe Serverul Debian Gateway
:
## Ce am facut:
vi /etc/iproute2/rt_tables
...
110 myovp # Adăugați un tabel pentru 192.168.5.0/24
...
# Apoi adăugați reguli pentru iproute2 și iptables:
regulă ip adăugați fwmark 110 tabelul 110
regula ip se adaugă la tabelul principal 192.168.4.0/24
regula ip se adaugă la tabelul principal 192.168.5.0/24
IP route add default prin 10.100.2.1 dev tun0 tabelul 110
IP route add 192.168.5.0/24 prin 192.168.4.1 dev enp4s0
iptables -t mangle -A PREROUTING -i enp4s0 -s 192.168.5.0/24 -j MARK --set-mark 110
# Apoi adăugați reguli pentru NAT și FORWARD:
iptables -A FORWARD -i enp4s0 -j ACCEPT
iptables -A FORWARD -i tun1 -o enp4s0 -m stat --state RELATED,STABLISHED -j ACCEPT
iptables -A FORWARD -i enp4s0 -o tun1 -m stat --state RELATED,STABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o enp4s0 -m state --state RELATED,STABLISHED -j ACCEPT
iptables -A FORWARD -i enp4s0 -o tun0 -m stat --state RELATED,STABLISHED -j ACCEPT
iptables -A IEȘIRE -o tun1 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o tun1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -o tun0 -j MASQUERADE
## Câteva rezultate:
# Ieșirea „adresa ip”:
...
4: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state NECUNOSCUT grup implicit qlen 500
link/niciuna
inet 10.100.3.6/24 scope global tun1
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fe80::fd55:444a:552a:a454/64 scope link stabil-confidențialitate
valid_lft pentru totdeauna preferred_lft pentru totdeauna
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN grup implicit qlen 500
link/niciuna
inet 10.100.2.6/24 scope global tun0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fe80::af61:acf1:4e9c:b1a8/64 scope link stabil-privacy
valid_lft pentru totdeauna preferred_lft pentru totdeauna
...
# Ieșirea „ip route show”:
0.0.0.0/1 prin 10.100.3.1 dev tun1
implicit prin 192.168.4.1 dev enp4s0 proto metric static 100
10.100.2.0/24 dev tun0 proto kernel scope link src 10.100.2.5
10.100.3.0/24 dev tun1 proto kernel scope link src 10.100.3.5
128.0.0.0/1 prin 10.100.3.1 dev tun1
192.168.4.0/24 dev enp4s0 proto kernel scope link src 192.168.4.223 metric 100
192.168.5.0/24 prin 192.168.4.1 dev enp4s0
# Ieșirea „ip route show table 110”:
implicit prin 10.100.2.1 dev tun0
# Ieșirea „regula ip”:
0: din toate căutările locale
32763: de la toate la 192.168.5.0/24 principal de căutare
32764: de la toate la 192.168.4.0/24 principal de căutare
32765: din toate căutările fwmark 0x6e 110
32766: din toate căutările principale
32767: din toate căutările implicite
# Ieșirea lui `iptables -t filter -L -v`:
INTRARE în lanț (politica ACCEPTĂ 30661 pachete, 3126K octeți)
pkts bytes target prot opt in out source destination
Lanț FORWARD (politica ACCEPT 0 pachete, 0 octeți)
pkts bytes target prot opt in out source destination
2117K 194M ACCEPT pe toate -- enp4s0 oriunde oriunde
3394K 4191M ACCEPT toate -- tun1 enp4s0 oriunde oriunde stat RELATED,STABLISHED
0 0 ACCEPT all -- enp4s0 tun1 oriunde oriunde stat RELATED,STABLISHED
1541 133K ACCEPT all -- tun0 enp4s0 oriunde oriunde stat RELATED,STABLISHED
0 0 ACCEPT all -- enp4s0 tun0 oriunde oriunde stat RELATED,STABLISHED
IEȘIRE în lanț (politica ACCEPTĂ 35596 pachete, 22 M octeți)
pkts bytes target prot opt in out source destination
1044 108K ACCEPT toate -- orice tun1 oriunde oriunde
0 0 ACCEPT all -- orice tun0 oriunde oriunde
# Ieșirea lui `iptables -t nat -L -v`:
PRERUUTARE în lanț (politica ACCEPTĂ pachete de 208K, 34M de octeți)
pkts bytes target prot opt in out source destination
INTRARE în lanț (politica ACCEPTĂ 266 pachete, 46150 octeți)
pkts bytes target prot opt in out source destination
POSTROUTING în lanț (politica ACCEPTĂ 98 de pachete, 5876 de octeți)
pkts bytes target prot opt in out source destination
27638 2036K MASQUERADE toate -- orice tun1 192.168.4.0/24 oriunde
347 19186 MASQUERADE toate -- orice tun0 192.168.5.0/24 oriunde
IEȘIRE în lanț (politica ACCEPTĂ 95 de pachete, 5636 de octeți)
pkts bytes target prot opt in out source destination
# Ieșirea lui `iptables -t mangle -L PREROUTING -v`:
PRERUTARE în lanț (politica ACCEPT 0 pachete, 0 octeți)
pkts bytes target prot opt in out source destination
2829 215K MARK all -- enp4s0 orice 192.168.5.0/24 oriunde MARK set 0x6e
Și pe ambele servere OpenVPN (sunt aproape aceleași, cu excepția adreselor IP de subrețea și a adreselor de Internet):
## Ce am facut:
# Mai întâi configurați serverul OpenVPN
# Apoi adăugați reguli pentru NAT și FORWARD:
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m stare --state RELATED,STABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m stare --state RELATED,STABLISHED -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.100.2.0/24 -o eth0 -j MASQUERADE
## Unele ieșiri
# Ieșirea „adresa ip”:
...
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN grup implicit qlen 500
link/niciuna
inet 10.100.2.1/24 scope global tun0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fe80::c31e:ba42:4cb5:d887/64 scope link stabil-confidențialitate
valid_lft pentru totdeauna preferred_lft pentru totdeauna
...
# Ieșirea lui `iptables -t filter -L -v`:
INTRARE în lanț (politica ACCEPTĂ 16 M pachete, 1026 M octeți)
pkts bytes target prot opt in out source destination
Chain FORWARD (politica ACCEPT 1522K pachete, 114M bytes)
pkts bytes target prot opt in out source destination
247M 192G ACCEPT pe toate -- tun0 oriunde oriunde
0 0 ACCEPT all -- tun0 eth0 oriunde oriunde stat RELATED,STABLISHED
178M 106G ACCEPT toate -- eth0 tun0 oriunde oriunde stat RELATED,STABLISHED
0 0 ACCEPT all -- tun0 any 10.100.2.0/24 oriunde
IEȘIRE în lanț (politica ACCEPTĂ 16 M pachete, 1047 M octeți)
pkts bytes target prot opt in out source destination
55959 7717K ACCEPT toate -- orice tun0 oriunde oriunde
# Ieșirea lui `iptables -t nat -L -v`:
PRERUUTARE în lanț (politica ACCEPTĂ 27 de milioane de pachete, 1809 de milioane de octeți)
pkts bytes target prot opt in out source destination
INTRARE în lanț (politica ACCEPTĂ 11 M pachete, 605 M octeți)
pkts bytes target prot opt in out source destination
IEȘIRE în lanț (politica ACCEPTĂ 5047 pachete, 386K octeți)
pkts bytes target prot opt in out source destination
POSTROUTING în lanț (politica ACCEPTĂ pachete de 996K, 83M octeți)
pkts bytes target prot opt in out source destination
16M 1063M MASQUERADE toate -- orice eth0 10.100.2.0/24 oriunde
Acum, computerele din 192.168.4.0/24 (cum ar fi Computerul B) se pot conecta perfect la Internet prin serverul OpenVPN 2.
Dar în 192.168.5.0/24, computerele nu pot rezolva niciun nume de gazdă.Pe computerul A, ping 8.8.8.8
funcționează bine și tracert 8.8.8.8
arată că poate ajunge la serverul 8.8.8.8 prin serverul OpenVPN 1, dar nslookup google.com 8.8.8.8
se intoarce Interogarea a fost refuzată
.
Îmi pare foarte rău pentru o postare atât de lungă, dar chiar nu știu ce să fac sau ce am ratat. Nu sunt un profesionist al lucrurilor în rețea, așa că orice sugestie și ajutor specific sunt apreciate. Mulțumiri!