د OpenVPN بشپړ تونل ستاسو SSH ناسته پرې کوي: د ځواب لاره سمه کړئ
تلواله لاره SSH ځوابونه تونل ته لیږي۔ peer وتړئ، redirect-gateway فلټر کړئ، یا د ماشین له لاسه ورکولو دمخه د سرچینې له مخې لارښوونه وکړئ۔
د یوې ماشین په سر چې تاسو ورته SSH له لارې رسېږئ، د OpenVPN کلاینټ په بشپړ تونل کې فعالول کېدای شي ناسته په یوه ثانیه کې پرې کړي، او ماشین هېڅ غلط نه کوي۔ تونل نه بدلوي چې پاکټونه څنګه سرور ته رسېږي؛ هغه بدلوي چې ځوابونه څنګه وتل کوي۔ کله چې تلواله لاره tun0 ته اشاره وکړي، ستاسو SSH کلاینټ ته ځواب د چمتو کوونکي شبکې ته ننوځي، چې ستاسو پتې ته د بېرته تګ هېڅ لاره نه لري۔ اړیکه ځړېدلې پاتې کېږي، بل هڅه وخت تېروي، او ډیمون ټول وخت پر پورټ 22 غوږ نیسي۔
د VPN لاګ له لوستلو دمخه د لارښوونې جدول ولولئ۔ لاګ به ووايي چې تونل پورته شو، او سمه ده۔ پوښتنه دا ده چې هر ځواب کوم انټرفېس ته سپارل کېږي، او دا د هر پاکټ لپاره په هغه جدول کې پلټنه ده چې تونل همدا اوس بیا لیکلې ده۔
ځواب ولې د غلط دروازې له لارې وتل کوي
دننه راتلونکي پاکټونه لا هم پر فزیکي انټرفېس راځي، ځکه چې VPN کلاینټ نشي بدلولی چې انټرنیټ ستاسو سرور عامې پتې ته څنګه رسېږي۔ ځوابونه بېله پرېکړه ده: د هر پاکټ لپاره کرنل منزل لټوي، او د --redirect-gateway وروسته تلواله ثبت وايي تونل۔ د چمتو کوونکي وتل هغه منزل ویني چې هغه یې خدمت نه کوي او پاکټ غورځوي۔
د OpenVPN خپله ساتنه په دقیق ډول یو منزل پوښي۔ د 2.6 لارښود --redirect-gateway د یوې تسلسل په توګه بیانوي: د تونل دمخه کارول شوي ګېټوې له لارې د VPN peer لپاره د کوربه لار اضافه کوي، ترڅو کوډ شوی ټرافیک خپل ځان ته بېرته ونه ګرځي، او بیا تلواله لاره بدلوي۔ هغه د کوربه لاره یوازې peer لپاره ده۔ ستاسو SSH کلاینټ یوازې بله انټرنیټ پته ده او هېڅ استثنا نه ترلاسه کوي۔
یوه پری فېکس غلطي د وخت دمخه ردول ارزښت لري۔ ip route add -net 0.0.0.0 gw 10.8.0.1 dev tun0 پرته له اوږدوالي یوازې له یوې پتې 0.0.0.0 سره سمون خوري، له انټرنیټ سره نه؛ باید 0.0.0.0/0 وي۔ او که د تلوالې لارې اخیستل د تونل خپل ترانسپورت مات کړي، پای ټکی د فزیکي انټرفېس له لارې د کوربه لارې په توګه اضافه کړئ، د چمتو کوونکي ریښتینې پتې په کارولو سره۔
د سملاسي سمون لپاره خپله SSH کلاینټ پته وتړئ
تر ټولو ژر ترمیم دا دی چې د تونل دمخه سرور کارول شوي ګېټوې له لارې ستاسو د کلاینټ پتې لپاره د کوربه لاره ورزیاته کړئ۔ له خپل لوري، هغه پته ومومئ چې سرور به یې ویني، بیا د سرور جدول ولولئ ترڅو زړه ګېټوې وپېژنئ:
curl -s https://ifconfig.co
ip route
پر سرور، استثنا د کلاینټ له پیل دمخه اضافه کړئ۔ دلته پتې ځای نیوونکې دي؛ بڼه مهمه ده:
sudo ip route add 80.128.240.55 via 192.168.178.1
دا هغه ترمیم دی چې په راپور شوې قضیه کې کارول شوی، او سمدلاسه کار کوي۔ هغه په دوو وړاندوینې وړ لارو هم نازک دی: لاره د بیا پیل پر مهال ورکېږي، او هغه شیبه چې ستاسو ISP بل پته درکوي غلطېږي۔ هغه د بیړني تدبیر په توګه وګڼئ او په قصد سره یې دوامداره کړئ، د شبکې واحد یا د dispatcher کنډک له لارې، یا ومنئ چې لنډمهاله ده او د بیرته راګرځېدو لاره ولیکئ۔
کلاینټ ته اجازه ورنکړئ تلواله لاره واخلي
پاکه طریقه دا ده چې تونل ته اجازه ورنکړئ تلواله لاره هېڅکله بدله کړي۔ route-nopull، د --client یا --pull سره کارول شوی، پرته له لارو، block-outside-dns او د DNS سرورونو په څېر DHCP بڼې اختیارونه، نور ټول فشار شوي اختیارونه مني، نو یوازې هغه پری فېکسونه اضافه کوئ چې ورته اړتیا لرئ۔ تنګه وسیله د کشولو فلټر دی چې یو ستونزه لرونکی لارښوونه غورځوي او نور ساتي:
route-nopull
pull-filter ignore "redirect-gateway"
یو یا بل وکاروئ، دواړه نه، او روښانه وي چې څه بدلېږي۔ د تونل له لارې د تلوالې لارې پرته، سرور نور د چمتو کوونکي له لارې انټرنیټ نه ګوري؛ یوازې هغه ځای ته رسېږي چې تاسو په ښکاره ډول لارښوونه کړې ده۔ که بشپړ تونل د ترتیب ټول هدف و، دا غلط سویچ دی او پورتنې د کوربه لاره سمه ده۔
د بېرته تګ لاره د سرچینې یا اړیکې له مخې ووېشئ
کله چې دننه راتلونکې پته ثابته وي، د سرچینې قاعده ځوابونه پرته له دې چې د تونل خپلو لارو ته لاس ووهي سیمه ییز ساتي۔ فزیکي انټرفېس پتې ته خپل جدول ورکړئ چې LAN پری فېکس او فزیکي تلواله لاره ولري، بیا هغه جدول د هغې له لوري راتلونکي ټرافیک لپاره وټاکئ:
ip rule add from 192.168.1.11 table 128
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1
دا کار کوي ځکه چې د دننه راتلونکې SSH اړیکې ځوابونه له هغې پتې راځي چې کلاینټ ورسره وصل شوی و۔ هغه راپور شوې قضیه چې هر دننه راتلونکی خدمت باید کار ته دوام ورکړي، په دقیق ډول همدا بڼه کارولې وه۔ کله چې دننه راتلونکې پته تګ راتګ لري یا لاره متحرک وي، پرځای یې اړیکه نښه کړئ: پر لومړي پاکټ چې له فزیکي انټرفېس راځي conntrack نښه کېږدئ، په OUTPUT کې یې پر ځواب پاکټونو کاپي کړئ، او نښه شوي پاکټونه د هغه جدول له لارې لارښوونه کړئ چې فزیکي ګېټوې ته اشاره کوي۔
iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234
iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321
ip route add default via 192.168.1.1 dev eth0 table 3412
ip rule add fwmark 4321 table 3412
د ازموینې پر مهال د اړیکې نښه، د اور وژنې نښه او د جدول شمېره جلا وساتئ۔ د یوې شمېرې د دوو رولونو لپاره بیا کارول هغه قاعده جوړوي چې سمه ښکاري او غلط پاکټونه وهي۔ د جدول تلواله ثبت په عادي Ethernet اړیکه کې د LAN ګېټوې سره via هم غواړي؛ بربنډ dev eth0 یوازې هغه وخت کار کوي چې انټرفېس نقطه-نقطه وي یا بله ټوپ بل ډول حل شي۔ راپور شوی Jessie کوربه ناڅاپه پر هغې اړیکه و چې بربنډه بڼه پکې کار کوله، او دا د کاپي کولو وړ د ویش قاعده نه ده۔
پرته له دې چې ځان بند کړئ، وګورئ
د قطع کولو له لارې ازموینه مه کوئ۔ لومړنې ناسته پرانیستې وساتئ، تونل پورته کړئ، او کرنل وپوښتئ چې ستاسو خپله پته کومه لاره نیسي:
ip route get 80.128.240.55
ځواب باید تونل نه، بلکې فزیکي انټرفېس او زړه ګېټوې ونوموي۔ بیا دوهمه SSH اړیکه پرانیزئ؛ همدا ریښتینې ازموینه ده، ځکه چې زړه ناسته کېدای شي پر هغې حالت ژوندۍ پاتې شي چې نوې اړیکه یې نشي بیا جوړولی۔ که دوهمه وځړېږي او لومړنې لا ځواب ورکوي، قاعده هېڅکله مهم ټرافیک ته ونه رسېده، او نښې یا د سرچینې پته هغه ځای دی چې باید وګورئ۔
د ټول تمرین پر مهال د بېنډ څخه بهر کنسول شته وساتئ۔ هغه سرور چې یوازینې لاسرسي لاره یې هغه تونل دی چې تاسو همدا اوس مات کړ، د هغه تونل له لارې نه شي ترمیم کېدای، او بیرته راګرځول اسانه دي کله چې تاسو اضافه شوي د جدول شمېرې او پری فېکسونه لیکلي وي۔