راه اندازی لینوکس GRE tunnel

  • توسط مرتضی حبیبی
  • ۲۱ روز قبل
  • لینوکس
راه اندازی لینوکس GRE tunnel

(Generic Routing Encapsulation (GRE یک پروتکل تونل سازی است که توسط Cisco سیستم ساخته شده است و می تواند طیف گسترده ای از پروتکل های لایه شبکه را در داخل پیوندهای نقطه به نقطه مجازی یا پیوندهای نقطه به چند منظوره از طریق شبکه پروتکل اینترنت محصور کند. ما را همراهی کنید تا به شما نحوه راه اندازی لینوکس GRE tunnel را آموزش دهیم.

راه اندازی لینوکس GRE tunnel:

تونل GRE در موقعیت های خاص مانند محافظت از سرور بدون محافظت DDoS با استفاده از دیگری با محافظت مفید است یا فعال کردن برنامه هایی که فقط به IPv4 اجازه می دهند IPv6 را نیز بپذیرند.

پیش نیازها:

اول از همه، شما باید دو سرور با دسترسی root داشته باشید. در این آموزش به آنها سرور A و سرور B گفته می شود و دارای مشخصات زیر می باشد:

سرور A – سروری که کلیه مشتریها به آن متصل خواهند شد:

  • IP: 198.51.100.1
  • IP داخلی تونل GRE: 10.0.0.1

سرور B – سروری که در واقع تمام برنامه ها را اجرا می کند:

  • IP: 203.0.113.1
  • IP داخلی تونل GRE: 10.0.0.2

مرحله ۱ – ماژول Load:

برای راه اندازی یک تونل GRE در لینوکس باید ماژول ip_gre را در هسته خود بارگذاری کنید. برای اطمینان از بارگیری آن، فقط دستور زیر را وارد کنید:

sudo modprobe ip_gre
lsmod | grep gre

بعد از وارد کردن دستور بالا با پیام زیر مواجه می شوید:

ip_gre                 #####  0
gre                    #####  1 ip_gre

اگر چیز دیگری دیدید، ممکن است که هسته شما از GRE پشتیبانی نکند.

برای پیشبرد تمام ترافیک داخل و خارج از تونل GRE می خواهیم از iptables و iproute2 استفاده کنیم که باید در همه توزیع های عمده لینوکس نصب شود. در صورت نصب آنها از دستور زیر استفاده کنید:

برای دایرکتوری های مبتنی بر دبیان از این دستور استفاده کنید:

sudo apt install iptables iproute2

برای distros مبتنی بر رد هت از این دستور استفاده کنید:

sudo yum install iptables iproute2

مرحله ۲ – تنظیم تونل:

ابتدا باید تونل خود را راه‌اندازی کنید.

در سرور A این کد را برای فعال کردن انتقال IP اجرا کنید:

sudo echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sudo sysctl -p

اکنون یک رابط شبکه جدید ایجاد کنید که یکی از تونل های GRE باشد:

sudo ip tunnel add gre1 mode gre local 198.51.100.1 remote 203.0.113.1 ttl 255
sudo ip addr add 10.0.0.1/30 dev gre1
sudo ip link set gre1 up

سپس همین کار را در سرور B با تغییر IP ها انجام دهید:

sudo ip tunnel add gre1 mode gre local 203.0.113.1 remote 198.51.100.1 ttl 255
sudo ip addr add 10.0.0.2/30 dev gre1
sudo ip link set gre1 up

مرحله ۲-۱ – تست پینگ:

در سرور A انجام دهید:

ping 10.0.0.2

در سرور B انجام دهید:

ping 10.0.0.1

اگر پینگ کار کند، تونل GRE به درستی تنظیم شده است.

مرحله ۳ – مسیرهای جدید اضافه کنید:

مسیری لازم است تا اطمینان حاصل شود که داده های وارد شده از طریق تونل GRE به درستی اداره می شوند.

در سرور B دستور زیر را اجرا کنید:

sudo echo '100 GRE' >> /etc/iproute2/rt_tables
sudo ip rule add from 10.0.0.0/30 table GRE
sudo ip route add default via 10.0.0.1 table GRE

مرحله ۴ – تنظیمات NAT:

از NAT استفاده می شود تا داده های خود را از GRE و خارج دیگر عبور کند.

در سرور A اجرا کنید:

iptables -t nat -A POSTROUTING -s 10.0.0.0/30 ! -o gre+ -j SNAT --to-source 198.51.100.1

برای آزمایش اتصال outbound در سرور B این دستورات را اجرا کنید:

برای دایرکتوری های مبتنی بر دبیان:

sudo apt install curl

برای distros مبتنی بر رد هت:

sudo yum install curl

و بعد دستور زیر را وارد کنید:

curl http://www.cpanel.net/showip.cgi --interface 10.0.0.2

در پایان باید IP سرور A را ببینید.

مرحله ۵ – Forward Ports:

در سرور A این دستورات را اجرا کنید تا اجازه دهید تمام داده هایی که در سرور B هستند دریافت شوند:

sudo iptables -A FORWARD -d 10.0.0.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -s 10.0.0.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

سپس می خواهیم همه داده های خود را از سرور A به سرور B ارسال کنیم.

اجرای روی سرور A:

sudo iptables -t nat -A PREROUTING -d 198.51.100.1 -p PROTO -m PROTO --dport PORT -j DNAT --to-destination 10.0.0.2

جایگزین کردن PROTO و PORT با موارد واقعی خود.

به عنوان مثال، برای انتقال همه داده ها به وب سرور (پورت TCP 80) باید این کار را انجام دهیم:

sudo iptables -t nat -A PREROUTING -d 198.51.100.1 -p TCP -m TCP --dport 80 -j DNAT --to-destination 10.0.0.2

ما باید این کار را برای هر پورت مورد استفاده انجام دهیم.

مرحله ۶ – ماندگار شوید:

در سرور راه اندازی مجدد تمام کارهایی که انجام دادیم پاک می شوند. برای اطمینان از اینکه تونل GRE و سایر موارد پس از راه اندازی مجدد کار می کنند، باید پرونده etc/rc.local/ را ویرایش کنیم و تمام دستوراتی را که ما وارد کردیم را قبل از exit 0 اضافه کنیم. ( این دستور را وارد نکنید)

sudo echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

به همین راحتی می توانید راه اندازی لینوکس GRE tunnel را نصب کنید.

امیدواریم از این مقاله بهره لازم را برده و برای شما مفید بوده باشد. نظرات خود را با ما به اشتراک بگذارید.

ما را در شتابان هاست دنبال کنید.

قبلی «
بعدی »

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *