LINUX.ORG.RU

Раздать и-нет по wi-fi с ноутбука

 ,


0

1

Возникло желание раздавать инет по wi-fi с ноутбука для устройств на андроиде. В интернете много haw-to по этому, но те что мне попадались писались либо для убунты, а значит для гнома, либо исключали использование network manager'a. У меня же нет ни гнома, да и стандартный NM меня в полне устраивает. Наткнулся на этот мануал написанный как раз для сюси, да и модель ноутбука почти такая же как и у меня. Дошел до пункта

Заходим в Yast -> Сетевые устройства выбираем свою WiFi карту и присваиваем ей адрес 10.15.15.1/255.255.255.0

и не осилил... У меня при входе в Yast -> Сетевые устройстванастройки выдает сообщение следующего содержания: http://storage8.static.itmages.ru/i/13/0427/h_1367087933_6918159_d41d8cd98f.png

После чего любая возможность изменения там чего-либо становится недоступной: http://storage1.static.itmages.ru/i/13/0427/h_1367088056_6785978_d41d8cd98f.png

В общем, нужен совет сюсеводов по решению данной проблемы.

Альтернативные, более простые способы раздачи wi-fi с ноутбука, тоже приветствуются.



Последнее исправление: cetjs2 (всего исправлений: 3)

Ответ на: комментарий от registrant

NM поднимает сеть позже чем запускаются скрипты из init.d. Но как это исправить для конкретного скрипта? Мне тут посоветовали написать конфигурационный unit-файл для systemd, связав тем самым скрипт с NM. Но я понятия не имею как это сделать.

Dnmt
() автор топика
Ответ на: комментарий от Dnmt

я в systemd не особо, делал только такую штуку:

http://forums.opensuse.org/blogs/jdmcdaniel3/systemd-using-after-local-script...

в принципе, подходит под твой случай, надо только в секцию Install добавить

After = NetworkManager
Requires = NetworkManager

если я правильно понял синтаксис: http://www.freedesktop.org/software/systemd/man/systemd.unit.html

ну, и в ConditionFileIsExecutable проставить путь к твоему скрипту. в остальном вроде все как по первой ссылке

registrant ★★★★★
()
Ответ на: комментарий от registrant

Не совсем понял что нужно сделать после этого пункта:

3. Finally, you need to edit the file /etc/init.d/after.local as root and add in the stuff you want to run as root when you startup openSUSE (Alt-F2):

Code:

kdesu kwrite /etc/init.d/after.local

То есть не понял что нужно вписать в файл /etc/init.d/after.local

Dnmt
() автор топика
Ответ на: комментарий от registrant

Создаю какталог '/usr/lib/systemd/system/' (по умолчанию его не было), в нем создаю файл after-local.service с содержимым:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

[Unit]
Description=/etc/init.d/after.local Compatibility
ConditionFileIsExecutable=/etc/init.d/hostapd-based_access_point

[Service]
Type=oneshot
ExecStart=/etc/init.d/after.local
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
After=NetworkManager
Requires=NetworkManager 
Затем выполняю команду:
sudo systemctl enable /usr/lib/systemd/system/after-local.service
И после этого ничего не меняется. После рестарта системы сеть андроидом обнаруживается, но интернета в ней нет, как и прежде.

Dnmt
() автор топика
Ответ на: комментарий от Dnmt

поправил юнит:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

[Unit]
Description=/etc/init.d/after.local Compatibility
ConditionFileIsExecutable=/etc/init.d/hostapd-based_access_point start

[Service]
Type=oneshot
ExecStart=/etc/init.d/hostapd-based_access_point start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
After=NetworkManager
Requires=NetworkManager 
положи его в /lib/systemd/system/

потом

sudo systemctl enable /lib/systemd/system/after-local.service

можешь добавить в скрипт hostapd-based_access_point строчку вида (можно в начале)

logger "bla-bla-bla"
. тогда при запуске скрипт будет срать в системный лог, пригодится для диагностики

registrant ★★★★★
()
Ответ на: комментарий от registrant

Все так и сделал.

~> sudo systemctl enable /lib/systemd/system/after-local.service
root's password:
rm '/etc/systemd/system/multi-user.target.wants/after-local.service'
ln -s '/lib/systemd/system/after-local.service' '/etc/systemd/system/multi-user.target.wants/after-local.service'
К сожалению это ничего не изменило. Лампочка wi-fi все так же загорается еще до запуска сессии KDE и на андроиде после этого нет интернета. Может стоит добавить что-то в скрипт '/etc/init.d/after.local'? По умолчанию там у меня все закомментировано.

Dnmt
() автор топика
Ответ на: комментарий от Dnmt

Может стоит добавить что-то в скрипт '/etc/init.d/after.local'?

какой еще after.local, д.б. только скрипт запуска. давай лезь в логи (/var/log/messages) и ищи сообщения от logger и NM. я не уверен, что правильно зависимости написал. да, службу не забыл убрать из /etc/init.d ?

registrant ★★★★★
()
Ответ на: комментарий от registrant

какой еще after.local

Тот который упоминается в этой строчке

[Unit]
Description=/etc/init.d/after.local Compatibility

давай лезь в логи (/var/log/messages)

Вот лог двухчасового простоя ноута после включения: http://paste.org.ru/?uhslm6

да, службу не забыл убрать из /etc/init.d

Какую службу?

Dnmt
() автор топика
Ответ на: комментарий от Dnmt

Тот который упоминается в этой строчке

я же выше заменил ее

Какую службу?

ты же insserv запускал? в /etc/init.d/rc5.d должен появиться симлинк. если есть, удали или

insserv -r path_to_script

registrant ★★★★★
()
Ответ на: комментарий от Dnmt

а, в description. наверное, там не важно

А зачем?

это каталог, в нем симлинки на службы текущего ранлевела. если ты делал insserv, то там есть симлинк на твой скрипт. я так понял, что он у тебя запускается, но слишком рано. вот его из инита убираем и отдаем на откуп системд. удаляем, естественно только тот симлинк, весь каталог не грохни

registrant ★★★★★
()
Последнее исправление: registrant (всего исправлений: 1)
Ответ на: комментарий от registrant

от его из инита убираем и отдаем на откуп системд.

Я что-то не понял. Удаляем симлинк на скрипт из каталога '/etc/init.d/rc5.d', а в каталоге '/etc/init.d' сам скрипт остается? Симлинк я удалил и это ничего не изменило.

Dnmt
() автор топика
Ответ на: комментарий от Dnmt

сам скрипт может где угодно лежать, порядок запуска определяется симлинками. после удаления службы надо перезагрузиться. и логи давай (ты logger добавил, да?), когда стартует служба. долго не жди, как NM поднимется - лезь в логи

registrant ★★★★★
()
Ответ на: комментарий от registrant

Куда именно в скрипте добавлять строчку logger и откуда потом читать результаты логирования?

Dnmt
() автор топика
Ответ на: комментарий от Dnmt

да везде можешь натыкать, где echo стоит. где echo «blablabla» увидишь, можешь добавить logger «blablabla». ну и в начале, после #!/bin/sh добавь что-нибудь типа logger «starting ap». логи искать в /var/log/messages

registrant ★★★★★
()
Последнее исправление: registrant (всего исправлений: 1)
Ответ на: комментарий от registrant

Сделал вот так:

#!/bin/sh
# logger "starting ap"
# Script to start/stop a hostapd-based access point
#
# Symbols for needed programs

IPTABLES=/usr/sbin/iptables
IFCONFIG=/sbin/ifconfig
DHCPD=/usr/sbin/dhcpd
HOSTAPD=/usr/sbin/hostapd

# Symbols for internal and external interfaces

NET_INT=wlan0
NET_EXT=eth0

# IP address for the AP

INT_ADDR=192.168.1.1

case "$1" in
start)
        echo "Starting AP mode for $NET_INT at address $INT_ADDR"
        logger "Starting AP mode for $NET_INT at address $INT_ADDR"
        # Disable packet forwarding
        echo 0 > /proc/sys/net/ipv4/ip_forward
        # Stop any existing hostapd and dhcpd daemons
        killproc hostapd
        killproc dhcpd
        #Set up forwarding
        $IPTABLES -t nat -A POSTROUTING -o $NET_EXT -j MASQUERADE
        $IPTABLES -A FORWARD -i $NET_EXT -o $NET_INT -m state \
        --state RELATED,ESTABLISHED -j ACCEPT
        $IPTABLES -A FORWARD -i $NET_INT -o $NET_EXT -j ACCEPT
        # Enable packet forwarding
        echo 1 > /proc/sys/net/ipv4/ip_forward
        # Get the internal interface in the right state
        $IFCONFIG $NET_INT down
        $IFCONFIG $NET_INT up
        $IFCONFIG $NET_INT $INT_ADDR
        # dhcpd needs to have a leases file available - create it if needed
        if [ ! -f /var/lib/dhcp/db/dhcpd.leases ]; then
                touch /var/lib/dhcp/db/dhcpd.leases
        fi
        # Bring up the DHCP server
        $DHCPD -cf /etc/dhcpd.conf $NET_INT
        # Bring up hostapd
        $HOSTAPD -B /etc/hostapd.conf
        ;;
stop)
        echo "Stopping AP mode on $NET_INT"
        logger "Stopping AP mode on $NET_INT"
        # Stop hostapd and dhcpd daemons
        killproc hostapd
        killproc dhcpd
        ;;
*)
        echo "Usage: $0 {start|stop}"
        logger "Usage: $0 {start|stop}"
        exit 1
        ;;
esac
А вот логи из '/var/log/messages' сразу после старта системы: http://paste.org.ru/?ii0hui

Dnmt
() автор топика
Ответ на: комментарий от Dnmt

а первый вызов logger зачем закомментировал? пока видно только, что скрипт запускается очень рано.

давай так, ты запускающий юнит запэкапь и поставь на его место заглушку:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

[Unit]
Description=/etc/init.d/after.local Compatibility
ConditionFileIsExecutable=/usr/bin/logger "ap unit start"

[Service]
Type=oneshot
ExecStart=/usr/bin/logger "ap unit start"
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
After=NetworkManager
Requires=NetworkManager 

и давай еще раз логи, только чтобы NM туда тоже попал. и немножко после него, чтобы увидеть «ap unit start»

registrant ★★★★★
()
Ответ на: комментарий от Dnmt

поставил 12.2 в виртуалке, вроде все получилось. вот исправленный юнит:

[Unit]
Description=Host AP setup
After=NetworkManager.service
Requires=NetworkManager.service

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'sleep 30; logger "AP unit start"; /etc/init.d/hostapd-based_access_point start'
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
обрати внимание на sleep, если его убрать (занулить), то скрипт стартует после NM, но до его завершения. тут я ничего более элегантного не придумал. можешь покрутить таймер, если надо побыстрее. ну, и службу из инита ты должен убрать.

registrant ★★★★★
()
Ответ на: комментарий от registrant

У меня изменился метод подключения. Теперь ppp0 вместо eth0.

# ifconfig
eth0      Link encap:Ethernet  HWaddr 88:AE:1D:DB:1C:E9  
          inet6 addr: fe80::8aae:1dff:fedb:1ce9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1166 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1259 errors:0 dropped:0 overruns:0 carrier:1
          collisions:0 txqueuelen:1000 
          RX bytes:525408 (513.0 Kb)  TX bytes:150313 (146.7 Kb)
          Interrupt:45 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:150 errors:0 dropped:0 overruns:0 frame:0
          TX packets:150 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:10231 (9.9 Kb)  TX bytes:10231 (9.9 Kb)

mon.wlan0 Link encap:UNSPEC  HWaddr 5C-AC-4C-8A-A0-FE-3A-30-00-00-00-00-00-00-00-00  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15628 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5236743 (4.9 Mb)  TX bytes:0 (0.0 b)

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:77.40.7.144  P-t-P:192.168.65.200  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:1084 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1150 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:496580 (484.9 Kb)  TX bytes:114519 (111.8 Kb)

wlan0     Link encap:Ethernet  HWaddr 5C:AC:4C:8A:A0:FE  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::5eac:4cff:fe8a:a0fe/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:77 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:17162 (16.7 Kb)
Скрипт hostapd-based_access_point поправил на новый метод подключения. Что нужно исправить в dhcpd.conf?

Dnmt
() автор топика
Ответ на: комментарий от registrant

С eth0 работает. Возможно ли продублировать настройки для одновременно для eth0 и ppp0 чтобы каждый раз не править конфиги?

Dnmt
() автор топика
Ответ на: комментарий от registrant

я вижу только один способ - задать NET_EXT=ppp0 (NET_EXT=eth0) вручную

Конечно же делал так. С ppp0 инета на андроиде нет, с eth0 есть.

Dnmt
() автор топика
Ответ на: комментарий от registrant
Ответ на: комментарий от Dnmt

а ты чем его создавал? яст вроде dsl* создает, он точно есть в списке фаервола. в любом случае, можешь попробовать залезть в /etc/sysconfig/SuSEfirewall2 и дописать ppp0 в FW_DEV_EXT. потом

rcSuSEfirewall2 restart

registrant ★★★★★
()
Ответ на: комментарий от registrant

а ты чем его создавал?

В NM создавал на вкладке DSL. Дело в том что у меня dsl-модем не работает в режиме роутера, поэтому раньше сессию приходилось каждый раз вручную запускать на станционарном компьютере, от которого питался ноут по витой паре (eth0), теперь сессию запускаю с ноута (ppp0).

можешь попробовать залезть в /etc/sysconfig/SuSEfirewall2 и дописать ppp0 в FW_DEV_EXT.

Не помогло. Андрорид также видит сеть но в интернет не заходит.

Dnmt
() автор топика
Ответ на: комментарий от Dnmt

попробуй после поднятия ppp0 сделать rcSuSEfirewall2 restart. что смущает, ARP-запросы не проходят по wlan0, а его вроде не трогали. hostapd точно _после_ ppp0 поднимается?

registrant ★★★★★
()
Последнее исправление: registrant (всего исправлений: 1)
Ответ на: комментарий от registrant

Да вроде бы да. Рестарт фаервола не помог.

# rcSuSEfirewall2 restart
redirecting to systemctl
# cd /etc/init.d
# ./hostapd-based_access_point stop
Stopping AP mode on wlan0
# ./hostapd-based_access_point start
Starting AP mode for wlan0 at address 192.168.1.1
WARNING: The state match is obsolete. Use conntrack instead.
Internet Systems Consortium DHCP Server 4.2.4-P2
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Wrote 1 leases to leases file.
Listening on LPF/wlan0/5c:ac:4c:8a:a0:fe/192.168.1.0/24
Sending on   LPF/wlan0/5c:ac:4c:8a:a0:fe/192.168.1.0/24
Sending on   Socket/fallback/fallback-net
Configuration file: /etc/hostapd.conf
Using interface wlan0 with hwaddr 5c:ac:4c:8a:a0:fe and ssid 'Wi-Fi'

Dnmt
() автор топика
26 апреля 2015 г.
Ответ на: чушики-чушики от anonymous

согласен)) я как то вообще далек от этого и половины не понимаю, мне будет понятно только если будет написано как в этой статье предельно просто и понятно, жалко только что не про линукс, и нам рядовым пользователям далеко))

Niellyear
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.