IPTables সহ এফটিপি ফরোয়ার্ড করুন


9

আমি আইপিটিবেলগুলির সাথে একটি এফটিপি-সার্ভার ফরোয়ার্ড করার চেষ্টা করছি। এফটিপি-সার্ভারটি একটি উইন্ডোজ ২০০৮ বক্সে (সার্বেরাস) চলছে on

ভাবমূর্তি

বিশদ বক্স:

  • আইপি: 192.168.220.51
  • এফটিপি-বন্দর: 21
  • PASV- বন্দরগুলি: 11000-13000

এফটিপি-সার্ভার ল্যানে দুর্দান্ত কাজ করে।

রাউটারটি অন্যান্য ক্লায়েন্টদের জন্য দুর্দান্ত কাজ করছে (NAT, DHCP, ফায়ারওয়াল পরিবেশন করছে ...)। আমাকে এফটিপি-পরিষেবাটি বাইরের বিশ্বে ফরোয়ার্ড করা দরকার, তবে আমি পোর্ট 20-21 ব্যবহার করতে পারি না (ইতিমধ্যে নেওয়া হয়েছে)।

আমি এটি চেষ্টা করেছিলাম, কিন্তু এটি কার্যকর হয়নি:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 2121 -j DNAT --to 192.168.220.51:21

বর্তমান আইপেটেবল কনফিগারেশন:

[root@router ~]# service iptables status
Table: nat
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0           
2    MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  127.0.0.1            0.0.0.0/0           
2    DROP       all  --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:2222 
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:67 
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:68 
6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:1194 
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:8080 
8    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443 
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3128 
10   ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53 
11   ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53 
12   ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:1194 
13   ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
14   DROP       udp  --  0.0.0.0/0            0.0.0.0/0           
15   DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

যেকোনো সাহায্যই অসাধারণ :-).

অনুগ্রহ-সম্পাদনা : আমি এটি বের করতে সক্ষম হইনি, কোনও সাহায্যের প্রশংসা হবে।

EDIT2

কমান্ড চালানোর পরে আমি এখনই আমার এফটিপি-সার্ভারে টেলনেট করতে সক্ষম হয়েছি:

modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 2121 -j DNAT --to 192.168.220.51:21

আমি সেখানে পৌঁছতে শুরু করি ... আমার মনে হয় আমার এখনি আমার পাস-পোর্টগুলি এখন কাজ করা দরকার ...

সম্পাদনা 3: অতিরিক্ত তথ্য

[root@router ~]# iptables -L -n -v
Chain INPUT (policy ACCEPT 3251 packets, 154K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  540 48534 ACCEPT     all  --  *      *       127.0.0.1            0.0.0.0/0           
4270K 5625M ACCEPT     all  --  *      *       192.168.220.0/24     0.0.0.0/0           
    0     0 DROP       all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:2222 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:67 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:68 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:1194 
   65  8487 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8080 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443 
    8   404 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3128 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:53 
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:53 
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:1194 
63870   81M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
  974  224K DROP       udp  --  *      *       0.0.0.0/0            0.0.0.0/0           
  638 34956 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 

Chain FORWARD (policy ACCEPT 3578K packets, 3355M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 2275K packets, 703M bytes)
 pkts bytes target     prot opt in     out     source               destination  



[root@router ~]# iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 33954 packets, 2595K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:2121 to:192.168.220.51:21 

Chain POSTROUTING (policy ACCEPT 5925 packets, 699K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      eth1    0.0.0.0/0            0.0.0.0/0           
27170 1785K MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 5777 packets, 457K bytes)
 pkts bytes target     prot opt in     out     source               destination  

সমাধান

এইভাবে আমি এটি করেছি, খুব সুন্দর নাও হতে পারে, তবে এটি কার্যকর।

[root@router ~]# iptables -t nat -I PREROUTING -p tcp --dport 2121 -j DNAT --to 192.168.220.51:2121
[root@router ~]# iptables -I FORWARD -p tcp -d 192.168.220.51 --dport 2121 -j ACCEPT
[root@router ~]# iptables -t nat -I PREROUTING -p tcp --dport 11000:13000 -j DNAT --to 192.168.220.51:11000-13000
[root@router ~]# iptables -I FORWARD -p tcp -d 192.168.220.51 --dport 11000:13000 -j ACCEPT

কিছু অতিরিক্ত নোট: এফটিপি-সার্ভার বট 21 এ 2121 শুনছে এবং পিএএসভি-রেঞ্জটি 11000 থেকে 13000 পর্যন্ত সেট করা আছে


এফটিপি কনট্র্যাক এবং নেট কার্নেল মডিউলগুলি লোড করা আছে? এর আউটপুট কি lsmod | grep -i ftp?
স্টিভেন সোমবার

খালি, আমি কোনও অতিরিক্ত কার্নেল মডিউল লোড করিনি। আমার কি কিছু দরকার?
বার্ট ডি ভোস

1
@ টিজোন: হ্যাঁ এফটিপি পিএএসভি এবং পোর্ট কমান্ডে যে পোর্ট নম্বর এবং অ্যাড্রেসগুলি ব্যবহার করে সেগুলি ট্র্যাক করার জন্য আইপেটেবলদের কনট্র্যাক মডিউলগুলির প্রয়োজন। এছাড়াও, আপনি যখন NAT করছেন তখন NAT মডিউলগুলি পোর্ট নম্বর এবং ঠিকানাগুলি আবার লিখতে হবে যাতে FTP প্রোটোকলটি সঠিকভাবে কাজ করতে পারে।
স্টিভেন সোমবার

2
ভাল এবং সম্পূর্ণ ব্যাখ্যার জন্য +1।
গোপোই

3
@ টিজোন: স্টিভেন মোনাই যেমন ইতিমধ্যে উল্লেখ করেছেন, এফটিপি কোনও এনএটি গেটওয়ের পিছনে সঠিকভাবে কাজ করতে পারে, আপনার প্রয়োজন হবে ip_conntrack_ftpএবং ip_nat_ftpকার্নেল মডিউলগুলি লোড করা হবে। ফায়ারওয়াল / এনএটি গেটওয়ের পিছনে মোকাবেলা করতে এফটিপি একটি আকর্ষণীয় প্রোটোকল। আপনি কেবল sftp (এসএসএইচ এফটিপি) ব্যবহার করা সহজ বলে মনে করতে পারেন যা কেবল 22 পোর্ট ব্যবহার করে এবং এনক্রিপ্ট করা (আরও বেশি সুরক্ষিত)। ফাইলজিলা একটি দুর্দান্ত ফ্রি এফটিপি ক্লায়েন্ট যা এসএফটিপি সমর্থন করে।
শন সি

উত্তর:


7

প্যাসিভ সাপোর্ট কাজ করার জন্য, আপনাকে প্যাসিভ পোর্টগুলি একই পোর্ট নম্বর সহ অভ্যন্তরীণ এফটিপি সার্ভারে ফরোয়ার্ড করতে হবে ।

সহজ সমাধান: তাদের সকলকে সারাক্ষণ ফরোয়ার্ড করুন

ইন্টারনেটআইপি: 11000-13000 -> 192.168.220.51:11000-13000

শক্ত সমাধান:

আপনার কিছু বিশেষ-উদ্দেশ্যে সংযোগ ট্র্যাকিং এজেন্টের প্রয়োজন হবে যা এফটিপি প্রোটোকলটি পড়ে এবং ঠিক সময়ে সঠিক নেট ম্যাপিং করে। দেখে মনে হচ্ছে ip_conntrack_ftp এটি করতে পারে।


আমি এটি এরকম করেছিলাম। আমি স্থায়ীভাবে সমস্ত বন্দর ফরওয়ার্ড করেছি। এটি সেরা সমাধান নাও হতে পারে তবে এটি কাজ করে। হোস্টো দিয়ে সম্পাদিত প্রথম পোস্ট।
বার্ট ডি ভোস

9

আমি বিশ্বাস করি আপনার এফটিপি সংযোগ ট্র্যাকিং মডিউলটি বোঝা দরকার।

http://www.sns.ias.edu/~jns/wp/2006/01/12/iptables-connection-tracking-ftp/


মডিউল সক্ষম করার পরেও, আমি সংযোগ করতে অক্ষম।
বার্ট ডি ভোস

অগ্রগতি হচ্ছে, আমার পোস্ট সম্পাদনা করা।
বার্ট ডি ভোস

0
iptables -t nat -I PREROUTING -p tcp --dport 2121 -j DNAT --to 192.168.220.51:2121
iptables -I FORWARD -p tcp -d 192.168.220.51 --dport 2121 -j ACCEPT
modprobe nf_conntrack_ftp 
modprobe nf_nat_ftp

যথেষ্ট হতে হবে


পোর্ট নম্বর 2121দিয়ে প্রতিস্থাপন করা উচিত নয় 21? কীভাবে এফটিপি মডিউলগুলি কোনও সংযোগকে এফটিপি নিয়ন্ত্রণ হিসাবে স্বীকৃতি দেয়? এটি NAT এর আগে বা পরে 21 বন্দর ব্যবহার করে প্রতিটি সংযোগে প্রয়োগ করা হবে?
ক্যাস্পারড

কিছু ব্যাখ্যা চমৎকার হবে, সুতরাং আমরা জানি যে আপনি কেবল উত্তরটি সন্ধান করছেন কার্গো নন
টম ও’কনর

আপনি কোন উত্স বন্দরটি কোন গন্তব্য পোর্টটি ফরোয়ার্ড করবেন তা চয়ন করুন। এটি আপনার জন্য উপযুক্ত হতে পারে। আপনি যে পোর্টটি নির্দিষ্ট করেছেন 2121 সালে, আমাদের "নেতিবাচক" টেবিলে এটি নির্দিষ্ট করা পোর্টের সাথে এটি প্রয়োগ করা হবে। কিভাবে Netfilter FTP মডিউল কাজ করে তুমি এখানে পড়তে পারেন en.wikipedia.org/wiki/Netfilter#Connection_tracking_helpers
Yalok Iy
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.