એક LAN સબનેટને OpenVPN દ્વારા રૂટ કરો અને ડિફોલ્ટ જાળવો
એક સબનેટ ટનલમાંથી પસાર થાય ત્યારે LAN ડિફોલ્ટ જાળવો. પોલિસી ટેબલની સરખામણી મુખ્ય ટેબલના ફેરફારો સાથે કરો, પછી NAT અથવા સર્વર-સાઇડ રૂટ પસંદ કરો.
જે બોક્સ LAN માટે રૂટ કરે છે અને સાથે જ VPN ડાયલ કરે છે, તે પોતાની સાથે જ એ જ દલીલમાં આવી જાય છે: ટનલ ડિફોલ્ટ રૂટનો માલિક બનવા માંગે છે, અને LAN ને તે પાછો જોઈએ છે. જ્યારે OpenVPN કનેક્ટ થાય છે, ત્યારે તે ટનલ દ્વારા ડિફોલ્ટ અથવા અડધા-ડિફોલ્ટની જોડી ઇન્સ્ટોલ કરી શકે છે, જે લેપટોપ માટે યોગ્ય છે પણ એવા ગેટવે માટે ખોટું છે જેના પડોશીઓ તેના LAN સરનામાંથી જવાબોની અપેક્ષા રાખે છે. જવાબ VPN છોડી દેવાનો નથી. જવાબ એ છે કે બે નિર્ણયોને બે અલગ ટેબલ આપવા.
એક ડિફોલ્ટ રૂટ, બે માલિકો
ફોરવર્ડ થયેલી ટ્રાફિક અને સ્થાનિક રીતે ઉદ્ભવેલી ટ્રાફિકને એક જ રસ્તો લેવાની જરૂર નથી. LAN ક્લાયન્ટ્સને ટનલ ફક્ત તમે પસંદ કરેલા ગંતવ્યો માટે જરૂરી છે, જ્યારે હોસ્ટના પોતાના મેનેજમેન્ટ સેશન્સ અને તે ક્લાયન્ટ્સને તેના જવાબોને LAN ડિફોલ્ટની જરૂર છે. બંનેને મુખ્ય ટેબલમાં મિશ્ર કરવાથી બે અલગ પ્રશ્નો પર એક જ જવાબ લાદવામાં આવે છે.
OpenVPN પાસે બરાબર આ માટે સ્વિચ છે. route-noexec ક્લાયન્ટને મુખ્ય ટેબલને બિલકુલ સ્પર્શ કરતું અટકાવે છે, અને તે જે મૂલ્યો વાપર્યા હોત તે route-up સ્ક્રિપ્ટમાં route_vpn_gateway, dev અને ઇન્ટરફેસના સરનામાં તરીકે નિકાસ થાય છે. પછી કયું ટેબલ કયો રૂટ મેળવે તે તમે નક્કી કરો છો, એવા કોડમાં જે પછી વાંચી શકાય.
પોલિસી ટેબલ સામે મુખ્ય ટેબલ ફરીથી લખવું
| Approach | What it buys | What it costs |
|---|---|---|
| Separate table plus source rule | LAN traffic and host traffic keep independent defaults | Every lookup now depends on rule order |
| Editing the main table only | Fewer moving parts on a single-purpose host | One mistake takes the gateway offline entirely |
| Two half-default routes | Works for a full-tunnel client | Ambiguous on a host that must answer on its LAN address |
અલગ ટેબલ એ જ એક વિકલ્પ છે જે એક સબનેટથી આગળ સ્કેલ થાય છે. તેને એક વાર નામ આપો, પછી નામથી જ તેનો ઉલ્લેખ કરો જેથી કોઈને સંખ્યા યાદ રાખવી ન પડે:
echo "10 vpn" >> /etc/iproute2/rt_tables
ip rule add from 192.168.50.0/24 table vpn
ip route add default via 10.8.0.1 dev tun0 table vpnઅહીંના સરનામાં પ્લેસહોલ્ડર છે. કંઈપણ ચલાવતા પહેલાં તમારા પોતાના ડિપ્લોયમેન્ટમાંથી LAN પ્રીફિક્સ, ટનલ ગેટવે અને ઉપકરણનું નામ બદલો.
નિયમ હોસ્ટ સાથે પણ મેળ ખાવો જોઈએ
ફક્ત LAN પ્રીફિક્સ સાથે મેળ ખાતો નિયમ ફોરવર્ડ થયેલા પેકેટોને આવરી લે છે. તે ગેટવે પોતે જે ટ્રાફિક ઉત્પન્ન કરે છે તેને આવરી લેતો નથી, અને LAN ક્લાયન્ટ્સને પરત મોકલાતા જવાબોને પણ આવરી લેતો નથી, જે ઉદ્ભવ તરીકે ગેટવેનું LAN સરનામું ધરાવે છે. તે લુકઅપ main માં પડે છે અને હજી પણ ટનલમાંથી બહાર નીકળી શકે છે.
ગેટવેના પોતાના LAN સરનામા માટે બીજો નિયમ ઉમેરો, અથવા પ્રથમ નિયમને બંનેનો સમાવેશ કરતા સમૂહ સુધી વિસ્તૃત કરો. ક્રમ મહત્વપૂર્ણ છે: વધુ ચોક્કસ નિયમ પહેલા મૂકો, અને ઉદ્ભવ સ્પષ્ટપણે દર્શાવતા લુકઅપ સાથે પરિણામ ચકાસો.
ip route get 203.0.113.9 from 192.168.50.1જો તે સ્થાનિક રહેવું જોઈએ તેવા ગંતવ્ય માટે ટનલ ઉપકરણ બતાવે, તો ટેબલમાં શું છે તે ધ્યાનમાં લીધા વિના નિયમોનો સમૂહ ખોટો છે.
NAT કે સામેની બાજુ રૂટ
VPN સર્વર ટનલ સબનેટ જાણે છે અને બીજું કંઈ નહીં. LAN ઉદ્ભવ સરનામા સાથે આવતા પેકેટોને પરત માર્ગ હોતો નથી સિવાય કે કોઈ તે પૂરો પાડે, અને તે પૂરો પાડવાની બરાબર બે રીતો છે. સર્વર પર LAN પ્રીફિક્સ માટે રૂટ ઉમેરવાથી મૂળ ઉદ્ભવ અંત સુધી દૃશ્યમાન રહે છે, જે ઓડિટ કરેલી ડિઝાઇન સામાન્ય રીતે ઇચ્છે છે. ગેટવે પર માસ્કરેડ કરવાથી ઉદ્ભવ ટનલ સરનામામાં ફરીથી લખાય છે અને સર્વરના કોઈ સહકારની જરૂર પડતી નથી.
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADEજ્યારે તમે સર્વર નિયંત્રિત કરતા નથી અને ત્યાં રૂટ ઉમેરી શકતા નથી ત્યારે NAT પસંદ કરો. જ્યારે લોગ, એક્સેસ કંટ્રોલ અથવા પરત માર્ગની સમપ્રમતા મહત્વની હોય ત્યારે સર્વર-સાઇડ રૂટ પસંદ કરો, કારણ કે માસ્કરેડ સામેની બાજુ જે પણ નોંધે તેમાંથી મૂળ સરનામું ભૂંસી નાખે છે.
બંને રીતે ફોરવર્ડિંગ સક્ષમ હોવું જોઈએ, અને કડક રિવર્સ-પાથ ફિલ્ટરિંગ જવાબને કાઢી શકે છે જ્યારે main તે ઉદ્ભવ માટે ટનલ પસંદ ન કરતું હોય. ટનલને દોષ આપતા પહેલાં અસરકારક મૂલ્ય ચકાસો.
વિભાજન ફરીથી કનેક્શનમાં ટકી રહે તેમ કરો
હાથે ઉમેરેલા નિયમો અને રૂટ ઇન્ટરફેસ ફરીથી બનાવાતા અદૃશ્ય થઈ જાય છે, અને જૂની ટેબલ એન્ટ્રી તેને ન્યાય આપનાર સેશન કરતાં વધુ ટકી શકે છે. ટેબલનો નિયમ, ટનલનો રૂટ અને માસ્કરેડ એન્ટ્રી ક્લાયન્ટની route-up સ્ક્રિપ્ટમાં મૂકો, અને સ્ક્રિપ્ટની શરૂઆતમાં ટેબલ ખાલી કરો જેથી જૂનું ગેટવે નવા સેશનમાં ટકી ન શકે.
બંને છેડેથી ચકાસો: ગેટવે પર LAN ઉદ્ભવ સાથે લુકઅપ, અને LAN ક્લાયન્ટથી ટનલમાંથી પસાર થવું જોઈએ તેવા ગંતવ્ય સુધી વાસ્તવિક વિનંતી. જે રૂટ અસ્તિત્વમાં છે પણ ક્યારેય પસંદ થતો નથી તે કાઉન્ટર વાંચો ત્યાં સુધી બિલકુલ રૂટ ન હોય તેમ જ વર્તે છે.