저는 XUbuntu 17.10을 사용하고 있고 Wi-Fi 핫스팟을 만들었습니다. 문제는 삼바 및 인터넷 연결이 필요하지 않은 기타 작업에 핫스팟을 사용하고 싶다는 것입니다. Wi-Fi 핫스팟 만들려면 어떻게 해야 해?그렇지 않다내 인터넷 연결을 공유하시겠습니까? 이게 가능한 일인가요?
답변1
간단한 해결책은 다음과 같습니다.create_ap. 해당 사이트에서:
create_ap은 모든 채널에서 개방형 또는 암호화된 AP를 생성하고, SSID를 숨기고, 클라이언트 간 통신을 비활성화하고(클라이언트 격리), IEEE 802.11n 및 802.11ac 지원, 인터넷 공유 방법: NATed 또는 Bridged 또는 없음(없음)을 생성하는 데 도움이 되는 도구입니다. 인터넷 공유)
귀하의 경우 동글에서 클라이언트로 인터넷을 공유하지 않고 Linux PC로 AP를 생성하고 싶지만 파일 공유와 같은 다른 Lan 작업도 수행할 수 있습니다.
Wi-Fi 카드가 AP 생성을 지원해야 합니다.
일부 패키지를 설치하십시오.
sudo apt install util-linux bash procps hostapd iproute2 iw haveged net-tools dnsmasq iptables
패키지 를 받으세요
create_ap
. 터미널에서git clone https://github.com/oblique/create_ap cd create_ap sudo make install
ifconfig
설치 후 (더 이상 사용되지 않음) 또는 다음을 사용하여 모뎀 및 WiFi 카드의 이름을 확인하십시오 .iwconfig
일반적으로 Wi-Fi 카드는
wlan0
또는wlp2s0
이고 USB 모뎀은 입니다eth0
. 당신은 다를 수도 있습니다이제 인터넷 없이 Linux에서 핫스팟을 시작하세요.
sudo create_ap -n wlp2s0 MyAccessPoint
그런 다음 클라이언트를 연결할 수 있습니다. 인터넷은 공유되지 않지만 인터넷 없이도 삼바 및 기타 작업을 할 수 있습니다.
답변2
다음은 핫스팟을 생성하는 스크립트입니다.~ 아니다Ethernet
장치 와 인터넷을 공유합니다 WiFi
. 시스템에 따라 네트워크 인터페이스 이름을 변경해야 합니다.
ip link
찾으려면 입력하세요 . 또한 dnsmasq
및 가 설치되어 있는지 확인하십시오 hostapd
.
sudo apt-get install ifconfig dnsmasq hostapd
스크립트를 실행하기 전에 스크립트를 중지해야 합니다.네트워크 관리 도구제어하고 있는 것입니다 WiFi
.
eth-to-wifi-route.sh
#!/bin/bash
# Share Eth with WiFi Hotspot
#
# This script is created to work with Raspbian Stretch
# but it can be used with most of the distributions
# by making few changes.
#
# Make sure you have already installed `dnsmasq` and `hostapd`
# Please modify the variables according to your need
# Don't forget to change the name of network interface
# Check them with `ifconfig`
ip_address="192.168.2.1"
netmask="255.255.255.0"
dhcp_range_start="192.168.2.2"
dhcp_range_end="192.168.2.100"
dhcp_time="12h"
eth="eth0" # replace it with Huawei 3G Modem interface
wlan="wlan0"
ssid="Arpit-Raspberry"
psk="arpit1997"
sudo rfkill unblock wlan &> /dev/null
sleep 2
#sudo iptables -F
#sudo iptables -t nat -F
#sudo iptables -t nat -A POSTROUTING -o $eth -j MASQUERADE
#sudo iptables -A FORWARD -i $eth -o $wlan -m state --state RELATED,ESTABLISHED -j ACCEPT
#sudo iptables -A FORWARD -i $wlan -o $eth -j ACCEPT
#sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo ifconfig $wlan $ip_address netmask $netmask
sudo ip route del 0/0 dev $wlan &> /dev/null
a=`route | awk "/${eth}/"'{print $5+1;exit}'`
sudo route add -net default gw $ip_address netmask 0.0.0.0 dev $wlan metric $a
echo -e "interface=$wlan \n\
bind-interfaces \n\
server=8.8.8.8 \n\
domain-needed \n\
bogus-priv \n\
dhcp-range=$dhcp_range_start,$dhcp_range_end,$dhcp_time" > /etc/dnsmasq.conf
sudo systemctl restart dnsmasq
echo -e "interface=$wlan\n\
driver=nl80211\n\
ssid=$ssid\n\
hw_mode=g\n\
ieee80211n=1\n\
wmm_enabled=1\n\
macaddr_acl=0\n\
auth_algs=1\n\
ignore_broadcast_ssid=0\n\
wpa=2\n\
wpa_key_mgmt=WPA-PSK\n\
wpa_passphrase=$psk\n\
rsn_pairwise=CCMP" > /etc/hostapd/hostapd.conf
sudo systemctl restart hostapd
sudo systemctl status hostapd &> /dev/null
if [ "$?" != 0 ];then
echo "Some Network Management tool is running, which is stopping"
echo "hostapd to be configured."
echo "Please stop that and again run the script."
fi
나는 iptable
및 packet forwarding
명령에 주석을 달았습니다. 언제든지 장치에 인터넷을 제공해야 하는 경우 주석 처리를 제거하면 됩니다.
스크립트 실행
sudo bash eth-to-wifi-route.sh