প্রশ্ন আমি কিভাবে iptables সঙ্গে পোর্ট করতে পারেন?


আমি পোর্ট 8001 পোর্ট 80001 পোর্ট 8080 এ eth0 উপর 192.168.1.200 রুট করার জন্য যোগাযোগ করতে চান।

আমি এই দুটি নিয়ম পেয়েছি

-A PREROUTING  -p tcp -m tcp --dport 8001 -j DNAT --to-destination 192.168.1.200:8080

-A FORWARD -m state -p tcp -d 192.168.1.200 --dport 8080 --state NEW,ESTABLISHED,RELATED -j ACCEPT

এবং এটা কাজ করে না। আমি কি অনুপস্থিত?


110
2017-12-05 21:06


উত্স


নাট হাটো - Paul Tomblin
আমি এন-পি-র ট্যাগের সাথে যেতে যাচ্ছি (যদিও এটি পারা প্রোগ্রামিং সংক্রান্ত, যদিও অবশ্যই খারাপভাবে phrased।) - Mihai Limbăşan
এটি সম্পর্কে: আমি একটি পরিবেশক সেট আপ করার চেষ্টা করছি একটি প্রোগ্রামার তাই আমি innernet থেকে বলা হয় গ্রহন মধ্যে আমার সার্ভার অ্যাপ্লিকেশন ডিবাগ করতে পারেন। খুব কাছাকাছি?
অবশ্যই, আমি "দুর্বল phrased" দ্বারা বোঝানো কি ... আপনি কি সেই অনুযায়ী প্রশ্ন সম্পাদনা করতে পারেন? - Mihai Limbăşan


উত্তর:


সর্বপ্রথম - আপনি যদি ফরোয়ার্ডটি সর্বদাই অনুমোদিত কিনা তা যাচাই করা উচিত:

cat /proc/sys/net/ipv4/conf/ppp0/forwarding 
cat /proc/sys/net/ipv4/conf/eth0/forwarding 

উভয় ফিরে যদি 1 ঠিক আছে. নিম্নলিখিত না হলে:

echo '1' | sudo tee /proc/sys/net/ipv4/conf/ppp0/forwarding
echo '1' | sudo tee /proc/sys/net/ipv4/conf/eth0/forwarding

দ্বিতীয় জিনিস - DNAT প্রয়োগ করা যেতে পারে nat টেবিল শুধুমাত্র। সুতরাং, আপনার নিয়ম টেবিল স্পেসিফিকেশন যোগ করে বর্ধিত করা উচিত (-t nat):

iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 8001 -j DNAT --to-destination 192.168.1.200:8080
iptables -A FORWARD -p tcp -d 192.168.1.200 --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

উভয় বিধিগুলি কেবলমাত্র টিসিপি ট্র্যাফিকে প্রয়োগ করা হয় (যদি আপনি UDP কেও পরিবর্তন করতে চান তবে আপনাকে একই নিয়মগুলি কিন্তু প্রদান করতে হবে -p udp অপশন সেট)।

শেষ, কিন্তু অন্তত রাউটিং কনফিগারেশন নয়। ধরন:

ip route

এবং যদি চেক করুন 192.168.1.0/24 ফিরে রুটিং এন্ট্রি মধ্যে হয়।


91
2018-03-24 11:24



আমি ব্যক্তিগতভাবে পছন্দ sysctl সিনট্যাক্স মত sysctl net.ipv4.conf.eth0.forwarding=1 - Doud
আমি ভুলভাবে প্রবেশ করানো নিয়মটি কিভাবে মুছে ফেলব? - Nickolai Leschov
দ্বিতীয় লাইন: "iptables -A ফরওয়ার্ড -পি tcp -d 192.168.1.200 - 8080 -m স্টেটমেন্ট - স্টেটেট নতুন, ইনস্টল করা, সম্পর্কিত -জে অ্যাক্সেপ্ট" আপনার ফায়ারওয়াল সীমাবদ্ধতা / সুরক্ষা না থাকলে প্রয়োজন হয় না হোম ল্যানগুলির বেশিরভাগ ক্ষেত্রেই, অন্যথায় সতর্ক থাকুন -A, এটি বিধিনিষেধ / নিরাপত্তা পরে যুক্ত করবে এবং এটি কাজ করবে না (তাই পরিবর্তে আই-চেক-আই, এটি আইপিটিবেলের নিয়মগুলির সাথে যুক্ত হয়) - THESorcerer
@ আওরনলোরিনক্জ, না। ইপ্লেবেবল নিয়মগুলি বুট এ স্পষ্টভাবে লোড না হওয়া পর্যন্ত অস্থির। - sherrellbc
@ নিকোলাই লেসচোভ, একই প্রতিস্থাপন লিখুন -A সঙ্গে -D - Alexei Martianov


আমি মনে করি আপনি কি চান:

iptables -A FORWARD -m state -p tcp -d 192.168.1.200 --dport 8080 --state 
    NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dport 8001 -j DNAT --to-destination
    192.168.1.200:8080

14
2017-12-05 21:43



ummm ... যে আমি ইতিমধ্যে আছে। আমি iptables-restore এর জন্য এটি লোড করতে তাই পুনঃস্থাপন করি যাতে প্রত্যেকে নিজের বিভাগে থাকে, কিন্তু উপরের যেটি আমি লিখেছি।
ঠিক আছে, সিনট্যাক্স মূল খারাপ লাগছিল। আপনি কি নিয়ম-ই পিপিপিএ-তে নিয়ম করেছিলেন? ঠিক কি সমস্যা? - Robert Gamble


আপনি পোস্টারিংয়ের উৎস ঠিকানা SNAT 'ing ভুলে গেছেন:

sysctl net.ipv4.ip_forward=1
yours_wan_ip=101.23.3.1
-A PREROUTING  -p tcp -m tcp -d $yours_wan_ip --dport 8001 -j DNAT --to-destination 192.168.1.200:8080

-A FORWARD -m state -p tcp -d 192.168.1.200 --dport 8080 --state NEW,ESTABLISHED,RELATED -j ACCEPT

-A POSTROUTING -t nat -p tcp -m tcp -s 192.168.1.200 --sport 8080 -j SNAT --to-source $yours_wan_ip

এবং 191.168.1.200 ঠিকানা সহ কম্পিউটারে ডিফল্ট গেটওয়ে হিসাবে আপনার লিনাক্স ফায়ারওয়াল সেট করতে ভুলবেন না।


12
2018-06-09 11:09



আপনি এটি পিছনে পেয়েছিলাম POSTROUNTING ধাপ। এই সময়ে কথোপকথন এখনও সম্পর্কে --destination বরং --source। - sherrellbc


আমি আমার লিনাক্স রাউটারে এটি করার জন্য নিম্নলিখিত bash স্ক্রিপ্ট তৈরি করেছি। এটি স্বয়ংক্রিয়ভাবে WAN আইপি সনাক্ত করে এবং এগিয়ে যাওয়ার আগে আপনার নির্বাচনগুলি নিশ্চিত করে।

#!/bin/bash

# decide which action to use
action="add"
if [[ "-r" == "$1" ]]; then
  action="remove"
  shift
fi

# break out components
dest_addr_lan="$1"
dest_port_wan="$2"
dest_port_lan="$3"

# figure out our WAN ip
wan_addr=`curl -4 -s icanhazip.com`

# auto fill our dest lan port if we need to
if [ -z $dest_port_lan ]; then
  dest_port_lan="$dest_port_wan"
fi

# print info for review
echo "Destination LAN Address: $dest_addr_lan"
echo "Destination Port WAN: $dest_port_wan"
echo "Destination Port LAN: $dest_port_lan"
echo "WAN Address: $wan_addr"

# confirm with user
read -p "Does everything look correct? " -n 1 -r
echo    # (optional) move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]; then
  if [[ "remove" == "$action" ]]; then
    iptables -t nat -D PREROUTING  -p tcp -m tcp -d $wan_addr --dport     $dest_port_wan -j DNAT --to-destination $dest_addr_lan:$dest_port_lan
    iptables -D FORWARD -m state -p tcp -d $dest_addr_lan --dport     $dest_port_lan --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -t nat -D POSTROUTING -p tcp -m tcp -s $dest_addr_lan --sport     $dest_port_lan -j SNAT --to-source $wan_addr
    echo "Forwarding rule removed"
  else
    iptables -t nat -A PREROUTING  -p tcp -m tcp -d $wan_addr --dport     $dest_port_wan -j DNAT --to-destination $dest_addr_lan:$dest_port_lan
    iptables -A FORWARD -m state -p tcp -d $dest_addr_lan --dport     $dest_port_lan --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -t nat -A POSTROUTING -p tcp -m tcp -s $dest_addr_lan --sport $dest_port_lan -j SNAT --to-source $wan_addr
    echo "Forwarding rule added"
  fi
else
  echo "Info not confirmed, exiting..."
fi

স্ক্রিপ্ট ব্যবহার সহজ এবং শুধু একটি কপি এবং তারপর এটি পেস্ট করুন।

# chmod +x port_forward.sh
# ./port_forward.sh 192.168.1.100 3000
... confirm details ... press y
# Forwarding rule added

একই নিয়ম অপসারণ করতে

# ./port_forward.sh -r 192.168.1.100 3000
... confirm details ... press y
# Forwarding rule removed

আমি এই তাদের নিজ রাউটার কেউ সময় বাঁচাতে পারে।


5
2017-12-14 22:02





চেষ্টা

echo "1" > /proc/sys/net/ipv4/conf/ppp0/forwarding
echo "1" > /proc/sys/net/ipv4/conf/eth0/forwarding

এই ফাইলগুলি কার্নেলকে ইন্টারফেসের মধ্যে প্যাকেট ফরওয়ার্ড করার অনুমতি দেয়।


1
2017-12-10 02:58





MACHINE_A কে এই পরিষেবাটি শারীরিকভাবে MACHINE_B এ চলছে বলে মনে করার জন্য আমার কাছে কাজ ছিল, কিন্তু স্বচ্ছভাবে MACHINE_C তে সমস্ত অনুরোধ পুনরায় চালু করা হয়েছে।

কৌশল MACQUERADE ব্যবহার করা হয়।

sysctl net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -p tcp -d MACHINE_B --dport 443 -j DNAT --to-destination MACHINE_C

iptables -t nat -A POSTROUTING -s MACHINE_A -o INTERFACE_NAME -j MASQUERADE

অনুগ্রহ করে মনে রাখবেন যে আপনি কমান্ডগুলি পরিবর্তন করতে চাইতে পারেন:

  1. শুধুমাত্র একটি নির্দিষ্ট ইন্টারফেসে প্যাকেট ফরওয়ার্ডিং অনুমতি দেয়। উদাহরণ স্বরূপ:

    sysctl net.ipv4.conf.eth0.forwarding=1
    
  2. পোর্ট ফরওয়ার্ডিং ব্যবহার করতে শুধুমাত্র MACHINE_A নয়, তবে অন্য সকলকে মঞ্জুরি দেওয়ার জন্য, অপসারণ করুন:

    -s MACHINE_A
    

1
2018-03-17 09:02





এই কমান্ড আমার জন্য কাজ করে না:

-A POSTROUTING -t nat -p tcp -m tcp -s 192.168.1.200 --sport 8080 -j SNAT --to-source $yours_wan_ip

আমি যখন লিখব তখন আমার 2 ল্যান ইন্টারফেস এবং ফরওয়ার্ড কাজ আছে:

iptables -t nat -A POSTROUTING -o $LAN_IF -p tcp -m tcp --dport $FW_PORT -j SNAT --to-source $LAN_IP
  • LAN_IF - LAN ইন্টারফেস (উদাহরণস্বরূপ eth1, br0 ...)
  • FW_PORD - ফরওয়ার্ড করা পোর্ট (ডিটেনশন হোস্টে)
  • LAN_IP - ল্যান ইন্টারফেসের উপর আইপি ঠিকানা (রাউটারে)

প্ররোচনা এবং ফরওয়ার্ড অবশ্যই অবশ্যই প্রয়োজন :)


0
2018-05-24 12:04