ইথারনেট বন্দরের মাধ্যমে পাইয়ের ওয়াইফাই সংযোগটি ভাগ করা হচ্ছে


28

আমার কাছে পাই আছে যা রাস্পবিয়ানের সর্বশেষতম সংস্করণে চলছে এবং এটি একটি ওয়্যারলেস ইউএসবি ডংল ব্যবহার করে ইন্টারনেটে সংযুক্ত। আমি যা করতে চাই তা হ'ল পাই এর ওয়াইফাই সংযোগটি ভাগ করে নেওয়া যাতে ল্যান তারের সাহায্যে পাই এর সাথে সংযুক্ত যে কোনও কম্পিউটার ইন্টারনেট পেতে সক্ষম হয়। ইন্টারনেটের চারপাশে আমার নজর ছিল তবে আমি প্রাসঙ্গিকতার কোনও কিছুই খুঁজে পাচ্ছি না। আমি উইন্ডোজ এবং ম্যাক ওএস এক্সে এই প্রক্রিয়াটির সাথে পরিচিত, কিন্তু পাইতে এটি করার ফলে আমি কেবল স্তিমিত হয়ে পড়েছি।

সম্পাদনা: আমি জানি না এটি কারও সাহায্য করে কিনা তবে আমি আমার পাইতে wlan0 এর মাধ্যমে ইন্টারনেটের সাথে সংযুক্ত আছি, তবে আমি সেই ইন্টারনেট সংযোগটি এথ0 এর মাধ্যমে ভাগ করতে চাই।


পাইতে আপনার ওয়াইফাই এবং ইথারনেট সংযোগগুলি ব্রিজ করা এবং এটিকে রাউটারে প্লাগ করা সহজ হবে be এটি কি আপনার আবেদনের পক্ষে সম্ভব?
tlhIngan

@tlhIngan দুর্ভাগ্যক্রমে নয়, আপনি দেখতে পাচ্ছেন যে আমার কোনও ইথারনেট সকেটে অ্যাক্সেস নেই এবং আমার পিএক্সই থেকে আমার ল্যাপটপ বুট করতে হবে যা ইথারনেট দ্বারা সম্পন্ন করতে হবে। এছাড়াও আমি লিনাক্স সম্পর্কে আরও জানতে চাই এবং আমি ভেবেছিলাম যে এই প্রকল্পটি তৈরি করা আমাকে লিনাক্সের সাথে আরও কিছুটা আস্থা অর্জন করবে। আমি ভেবেছিলাম যে আমার রাউটারটি আমার বাড়ি জুড়েই এটি একটি সহজ সমাধান হবে: / যাইহোক, আপনার জবাবের জন্য ধন্যবাদ।

আপনার প্রয়োজন মতো এই টিউটোরিয়াল ভিডিওটি পেয়েছি: youtu.be/IAa4tI4JrgI রাস্পবেরি পিআই এটি ওয়াইফাই থেকে ইথারনেট বন্দরে যে ইন্টারনেট পায় তা ভাগ করে নেয়।
মিয়া 19

@tlhIngan - আপনি কি বিস্তারিত বলতে পারবেন? একটি ব্রিজ তৈরি করতেও রাউটারের দরকার পড়ে? আমি চাই আমার নেটওয়ার্ক অডিও রিসিভারটি আমার পিস ওয়াইফাইটি ইথারনেটের সাথে ভাগ করে নেবে এবং একই সাবনেট এবং ডিএইচসিপিতে আমার প্রধান রাউটার হিসাবে থাকবে।
স্কয়ার_ইয়েজ

উত্তর:


40

জন্য Raspbian জেসি

এই দস্তাবেজ থেকে :

আমরা dnsmasqএই উদ্দেশ্যে প্যাকেজটি ব্যবহার করব কারণ এটি ডিএইচসিপি এবং ডিএনএস সার্ভার এবং কনফিগার করা সহজ is

আপনি যদি আরও কিছু 'হেভিওয়েট' চান, তবে আপনি যথাক্রমে ডিএইচসিপি এবং ডিএনএসের জন্য isc-dhcp-serverএবং bind9প্যাকেজগুলি ব্যবহার করতে পারেন , তবে আমাদের উদ্দেশ্যে, dnsmasqঠিক কাজ করে।

sudo apt-get install dnsmasq

আমাদের ইন্টারফেস কনফিগার করতে হবে। আমরা একটি স্থির আইপি ঠিকানা বরাদ্দ করব eth0যা গেটওয়ে হিসাবে ব্যবহৃত হবে। ইন্টারফেস ফাইল খুলুন

sudo nano /etc/network/interfaces

eth0বিভাগটি এর মতো সম্পাদনা করুন :

allow-hotplug eth0  
iface eth0 inet static  
    address 192.168.2.1
    netmask 255.255.255.0
    network 192.168.2.0
    broadcast 192.168.2.255

পরবর্তী, আমরা কনফিগার করব dnsmasq। শিপড dnsmasqকনফিগারেশন ফাইলটিতে এটি কীভাবে ব্যবহার করা যায় সে সম্পর্কে প্রচুর তথ্য রয়েছে। সুতরাং, আমি এটিকে স্থানান্তরিত করতে এবং একটি নতুন তৈরি করার পরামর্শ দেব।

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig  
sudo nano /etc/dnsmasq.conf

নতুন ফাইলটিতে নিম্নলিখিতগুলি আটকে দিন

interface=eth0      # Use interface eth0  
listen-address=192.168.2.1 # listen on  
# Bind to the interface to make sure we aren't sending things 
# elsewhere  
bind-interfaces
server=8.8.8.8       # Forward DNS requests to Google DNS  
domain-needed        # Don't forward short names  
# Never forward addresses in the non-routed address spaces.
bogus-priv
# Assign IP addresses between 192.168.2.2 and 192.168.2.100 with a
# 12 hour lease time
dhcp-range=192.168.2.2,192.168.2.100,12h 

/etc/sysctl.confপ্যাকেট ফরওয়ার্ডিং সক্ষম করতে ফাইলটি সম্পাদনা করুন

sudo nano /etc/sysctl.conf

এতে #থাকা লাইনের শুরু থেকে এটি সরিয়ে ফেলুন এটি net.ipv4.ip_forward=1পরবর্তী রিবুটটিতে প্যাকেট ফরওয়ার্ডিং সক্ষম করবে। তবে আপনি যদি এখনই রিবুট ছাড়াই এটি চেষ্টা করতে চান তবে এটি করুন।

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

আমাদের ওয়াই-ফাইয়ের সাথে সংযুক্ত ডিভাইসের সাথে আরপি'র ইন্টারনেট সংযোগও ভাগ করে নেওয়া দরকার। আমরা এর মধ্যে একটি ন্যাট কনফিগার করবে eth0এবং wlan0:

sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE  
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT  
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT  

যাইহোক, প্রতিবারই আমরা পাই পুনরায় বুট করার সময় এই নিয়মগুলি প্রয়োগ করা দরকার, সুতরাং sudo sh -c "iptables-save > /etc/iptables.ipv4.nat" নিয়মে ফাইলটিতে সংরক্ষণ করার জন্য চালান /etc/iptables.ipv4.nat। এখন আমাদের প্রতিটি পুনরায় বুট করার পরে এটি চালানো দরকার, সুতরাং লাইনটি /etc/rc.localদিয়ে sudo nano /etc/rc.localএবং ঠিক ঠিক উপরে উপরে ফাইলটি খুলুন exit 0, নিম্নলিখিত লাইনটি যুক্ত করুন:

iptables-restore < /etc/iptables.ipv4.nat  

এবং যে সব! এখন কেবল আপনার আরপিআই পুনরায় বুট করুন এবং আপনি ইন্টারনেট অ্যাক্সেস করতে সক্ষম হবেন

sudo reboot

রাস্পবিয়ান স্ট্রেচের জন্য আপডেট করা

উপরে কনফিগারেশন রাস্পবিয়ান এর নতুন সংস্করণে কাজ করবে না। সুতরাং, আমি এর জন্য একটি স্ক্রিপ্ট তৈরি করেছি যা এটি কম ব্যথায় সম্ভব করে তোলে।

এই গাইডটি ব্যবহার করে ওয়াইফাই নেটওয়ার্কে সংযুক্ত করুন ।

এখান থেকে স্ক্রিপ্ট ডাউনলোড করুন । এটি রাখুন/home/pi/

/home/pi/.config/lxsession/LXDE-pi/autostartফাইল খুলুন

nano /home/pi/.config/lxsession/LXDE-pi/autostart

শেষ লাইন যুক্ত করুন:

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@point-rpi
sudo bash /home/pi/wifi-to-eth-route.sh

আপনি ফাইলটি পুরো পথ দিয়েছেন তা নিশ্চিত করুন। এবং তুমি করে ফেলেছ. পরিবর্তনগুলি দেখতে এখন পুনরায় বুট করুন

sudo reboot

1
আপনাকে অনেক ধন্যবাদ. এটি কেবল আমার পাইতে পরীক্ষা করে দেখলাম এবং সংযোগটি ভাল ছিল! আবার আপনার সময় জন্য ধন্যবাদ। আমি এটিকে সমর্থন করি.

1
এটি একটি ওয়্যারলেস ডিভাইসের সাথে ইন্টারনেট সংযোগ ভাগ করে নেওয়ার জন্য দুর্দান্ত। তবে আমি আমার নেটওয়ার্কের অন্য একটি ল্যাপটপ থেকে ডিভাইসটি অ্যাক্সেস করতে চাই এবং এটি কার্যকর হয় না। আমার ধারণা এটি কারণ তারা বিভিন্ন সাবনেট আছে? এটি কাছাকাছি পেতে কোন টিপস?
বিজোর অ্যান্ডারসন

1
এটি পুরোপুরি কাজ করেছে, যদিও রাস্পবিয়ান স্ট্রেচের অধীনে, আমাকে নিজেই ওয়াইফাই কনফিগারেশনটি / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেসের মধ্যে অন্তর্ভুক্ত করতে হয়েছিল
xfx

1
@ এক্সএফএক্স, আপনি কি ওয়াইফাই কনফিগারেশনের জন্য যুক্ত কোডটি প্রদর্শন করতে পারবেন?
karl71

1
আমি আপনার পোস্ট এবং লিঙ্কটি সাবধানে অনুসরণ করেছি। আমার পাই (সবেমাত্র একটি নতুন ওএস ইনস্টল করেছেন), যখনই আমি "স্ট্যাটিক" শব্দটি যুক্ত করি, এটি এমনকি ওয়াইফাইয়ের সাথে সংযোগ করতে সক্ষম হয় না ...
কার্ল 71

6

আপনার ল্যান ডিভাইসগুলিতে ইন্টারনেট অ্যাক্সেস সরবরাহ করা আপনার উদ্দেশ্য হওয়ায় ডাবল 'ন্যাট' ধরে নেওয়া কোনও বড় সমস্যা হবে না।
এই কনফিগারেশনের সাহায্যে আপনি ওয়াইফাইবিহীন ডিভাইসে ওয়্যারলেস অ্যাক্সেস সরবরাহ করবেন যা ইন্টারনেট অ্যাক্সেস থেকে উপকৃত হবে।
অঙ্কন

পূর্বশর্ত

আপনার Wi-Fi সঠিকভাবে কনফিগার করা এবং কাজ করছে তা নিশ্চিত করুন। যদি কিছু খারাপ হয়ে যায় তবে এর মাধ্যমে ডিভাইসে আপনার অ্যাক্সেস eth0সীমাবদ্ধ বা অস্তিত্বের মধ্যে থাকবে।

সেটআপ

শুরু করতে আমাদের বেশ কয়েকটি প্যাকেজ দরকার:

apt-get update
apt-get install network-manager isc-dhcp-server

ইন্টারফেস

/etc/network/interfacesনিম্নলিখিতটির সাথে মিলে যাওয়ার জন্য ফাইলটি সম্পাদনা করুন , এটি আপনার eth0 কে একটি ফিক্স আইপি ঠিকানা (10.10.10.1) সেট করবে এবং পুনরায় তৈরি করবে resolv.conf

auto lo
iface lo inet loopback

iface default inet dhcp

allow-hotplug eth0
iface eth0 inet static
  address 10.10.10.1
  network 10.10.10.0
  netmask 255.255.255.0
  broadcast 10.10.10.255
  gateway 10.10.10.1

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
  wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  up cat /etc/resolv.conf | sed 's/ver /ver 127.0.0.1,/g' > /etc/resolv_local.conf
  up cat /etc/resolv.conf | sed 's/ver /ver 127.0.0.1,/g' > /etc/resolv.conf

DHCP- র

dhcpএটি অনুমোদিত করার জন্য ডিফল্ট কনফিগারেশনটি সংশোধন করুন এবং ল্যান নেটওয়ার্ক যুক্ত করুন (10.10.10। *), ফাইল সম্পাদনা /etc/dhcp/dhcpd.confকরুন, নিম্নলিখিত সামগ্রী যুক্ত করুন:

# configuration for the bridge internal subnet.
subnet 10.10.10.0 netmask 255.255.255.0 {
  range 10.10.10.101 10.10.10.119;
  option domain-name-servers 8.8.8.8;
  option domain-name "domain.local";
  option routers 10.10.1.1;
  default-lease-time 600;
  max-lease-time 7200;
}

iptables

এখন প্রতিটি রিবুটে নেটওয়ার্ক সেটআপ করতে এবং শুরু করতে নিম্নলিখিত স্ক্রিপ্ট তৈরি করুন। স্ক্রিপ্টটি গতিশীলভাবে কয়েকটি 'আইপিটিবেলস' বিধি তৈরি করবে। নাম দিন /root/bridge.sh:

#!/bin/bash
LOCAL_IFACE=eth0
INET_IFACE=wlan0

# this is where the dhcp info comes in. We need the default gateway
# /var/lib/dhcp/dhclient.wlan0.leases
f=/var/lib/dhcp/dhclient.$INET_IFACE.leases
GATEWAY=$(cat $f| grep "option route" | tail -1 |awk '{print $3}'| sed 's/;//')

IPT=$(which iptables)
# get the wlan address
INET_ADDRESS=$(ifconfig $INET_IFACE |grep "inet addr" |awk '{print $2}' |awk -F$

# Flush the tables
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -t nat -F

$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT

# Allow forwarding packets:
$IPT -A FORWARD -p ALL -i $LOCAL_IFACE -j ACCEPT
$IPT -A FORWARD -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

# Packet masquerading
$IPT -t nat -A POSTROUTING -o $INET_IFACE  -j SNAT --to-source $INET_ADDRESS
$IPT -t nat -A POSTROUTING -o $LOCAL_IFACE -j MASQUERADE

# save the created tables 
iptables-save > /etc/network/iptables

#cat /proc/sys/net/ipv4/ip_forward
# make sure we are forwarding packets
echo "1" > /proc/sys/net/ipv4/ip_forward
sysctl --system > /dev/nul

#remove the default route, usually on eth0 interface
route del default
#ifdown $INET_IFACE  && ifup $INET_IFACE
#ensure is $INET_IFACE now...
route add default gw $GATEWAY $INET_IFACE
gw=$(route -n -A inet | grep '^0.0.0.0' |awk '{ print $2 }')
echo "default route is now " $gw

পরিশেষে

শেষ অবধি, আপনাকে প্রতিটি রিবুটে স্ক্রিপ্টটি চালাতে হবে, before exit 0/etc/rc.local 'ফাইলের আগে তৈরি হওয়া স্ক্রিপ্টটি চালানোর জন্য নিম্নলিখিত দুটি লাইন যুক্ত করুন ।

# will run the bridge on startup
sudo ./root/bridge.sh

এখন, কেবলমাত্র আপনার ডিভাইস পুনরায় চালু করুন এবং সেতুটি আপনার জন্য কাজ করবে।

পিডি: বংশবৃদ্ধির sudoজন্য বাদ দেওয়া হয়েছিল। sudo -iEহিসাবে একটি সেশন আছে ব্যবহার করুনroot


কি দারুন! এই ধরনের একটি উত্তরের জন্য আপনাকে অনেক ধন্যবাদ! আমি কখনই বুঝতে পারি নি যে এটি জটিল হবে, তবে আমি মনে করি এটি এটিকে মোকাবেলা করতে পারি। আবার ধন্যবাদ, আমি কয়েক ঘন্টা চেষ্টা করে দেখব এবং যদি এটি কাজ করে তবে আমি আপনাকে উত্তর হিসাবে চিহ্নিত করব। অনেক অনেক ধন্যবাদ

@ গ্রোলিংসোলিড এটি জটিল হওয়া উচিত নয়। উত্তরটি আপনার network-managerনেটওয়ার্কগুলি পরিচালনা করতে ব্যবহার করেছে , যা এর সাথে সামঞ্জস্যপূর্ণ নয় dhcpcd, যা রাস্পবিয়ানের জন্য ডিফল্ট। বিকল্প ম্যানেজার ব্যবহার করে কোনও ভুল নেই, তবে আপনার অক্ষম করা উচিত dhcpcd(উত্তরটি পরোক্ষভাবে এটি বন্ধ করে dhcpদেবে কারণ dhcpcd)। এটি জিইউআইতে ওয়াইফাই সমর্থনকে কাজ করতে বাধা দেবে।
মিলিওয়েজ

1
আমি নিজেকে জানিয়েছি এবং আপনার পরিবর্তে এই সঠিক লাইনে এসেছি: INET_ADDRESS=$(ifconfig $INET_IFACE |grep "inet addr" |awk '{print $2}' | awk -F ":" '/1/ {print $2}')আপনার "মিথ্যা" সংস্করণটি ছিল:INET_ADDRESS=$(ifconfig $INET_IFACE |grep "inet addr" |awk '{print $2}' |awk -F$
লুক_আর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.