Šioje pamokoje pateikiami sprendimai situacijai, kai esate prisijungę prie pirmojo serverio ir bandote užmegzti VPN ryšį su antruoju serveriu, tačiau dėl to nutrūksta SSH sesija.
Naudojami terminai
PC – įrenginys, iš kurio jungiatės per SSH
SERVER1 – jūsų pirmasis serveris
Second Server – jūsų VPN serveris
1. Pirmas sprendimas
Kad SSH srautas ir toliau eitų tiesiai per jūsų PC, o ne per VPN, pridėkite maršrutą jūsų PC IP adresui.
Prisijungti prie serverio galėsite tik iš to įrenginio IP adreso, kurį nurodysite.
Šią komandą vykdykite būdami prisijungę prie savo VPS per SSH.
Container ir Storage VPS:
ip r a PC-IP/32 dev venet0
Linux VPS:
ip r a PC-IP/32 via 169.254.0.1 dev enc3
Vietoje PC-IP įrašykite viešąjį IP adresą įrenginio, iš kurio jungiatės prie serverio per SSH.
2. Antras sprendimas (pažengusiems naudotojams)
PREROUTING grandinėje pažymėkite srautą konkrečiam prievadui, pavyzdžiui, SSH, kad jis būtų nukreipiamas tiesiai į serverį, o ne per VPN.
Container ir Storage VPS:
Pirmiausia išjunkite rp_filter:
sysctl -w net.ipv4.conf.venet0.rp_filter=0
Tada sukurkite iptables taisykles:
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-xmark 3
ip rule add fwmark 3 table 3
ip r a default dev venet0 table 3
Linux VPS:
Sukurkite iptables taisykles:
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-xmark 3
ip rule add fwmark 3 table 3
ip r a default via 169.254.0.1 dev ens3 table 3
Jei norite leisti prieigą ne per SSH, o per kitą prievadą, pavyzdžiui, 80 arba 443, aukščiau pateiktose iptables taisyklėse pakeiskite 22 į pasirinktą prievado numerį.
Tuomet ši paslauga bus pasiekiama tiesiogiai, apeinant VPN maršrutą.
3. Papildomai: kaip nukreipti tik SSH srautą ne per VPN
Jei norite, kad visas kitas srautas eitų per VPN, o ne per jį būtų nukreipiamos tik SSH jungtys, sukurkite šias taisykles (pavyzdys Container ir Storage VPS):
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 3
iptables -t nat -A POSTROUTING -m mark --mark 3 -j SNAT --to-source SERVER1-IP
ip rule add fwmark 3 table 3
ip r a default dev venet0 table 3
Vietoje SERVER1-IP įrašykite viešąjį savo serverio IP adresą.
