(Generic Routing Encapsulation (GRE یک پروتکل تونل سازی است که توسط Cisco سیستم ساخته شده است و می تواند طیف گسترده ای از پروتکل های لایه شبکه را در داخل پیوندهای نقطه به نقطه مجازی یا پیوندهای نقطه به چند منظوره از طریق شبکه پروتکل اینترنت محصور کند. ما را همراهی کنید تا به شما نحوه راه اندازی لینوکس GRE tunnel را آموزش دهیم.
تونل GRE در موقعیت های خاص مانند محافظت از سرور بدون محافظت DDoS با استفاده از دیگری با محافظت مفید است یا فعال کردن برنامه هایی که فقط به IPv4 اجازه می دهند IPv6 را نیز بپذیرند.
اول از همه، شما باید دو سرور با دسترسی root داشته باشید. در این آموزش به آنها سرور A و سرور B گفته می شود و دارای مشخصات زیر می باشد:
سرور A – سروری که کلیه مشتریها به آن متصل خواهند شد:
سرور B – سروری که در واقع تمام برنامه ها را اجرا می کند:
برای راه اندازی یک تونل 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 استفاده می شود تا داده های خود را از 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 را ببینید.
در سرور 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 را نصب کنید.
امیدواریم از این مقاله بهره لازم را برده و برای شما مفید بوده باشد. نظرات خود را با ما به اشتراک بگذارید.
ما را در شتابان هاست دنبال کنید.