Difference between revisions of "Staging"
Jump to navigation
Jump to search
| Line 176: | Line 176: | ||
proxyarp | proxyarp | ||
</pre></li> | </pre></li> | ||
| + | <li>Create a device option file by editing <code>/etc/ppp/options.ttyUSB0</code><br /> | ||
| + | <pre>local | ||
| + | lock | ||
| + | nocrtscts | ||
| + | 192.168.32.1:192.168.32.105 | ||
| + | netmask 255.255.255.0 | ||
| + | #debug | ||
| + | noauth | ||
| + | proxyarp | ||
| + | lcp-echo-failure 60 | ||
| + | </pre> | ||
| + | </li> | ||
| + | <li>Create the user used for PAP authentication<br /><code>useradd -G dialout,dip,users -m -g users -s /usr/sbin/pppd dial</code></li> | ||
| + | <li>Change the password (I set it to dial)<br /><code>passwd dial</code></li> | ||
| + | <li>Edit <code>/etc/ppp/pap-secrets</code> and append the username and password (quotes included)<br /> <code>dial * "dial" *</code></li> | ||
| + | <li>Enable packet forwarding for IP4 by editing <code>/etc/sysctl.conf</code><br /><code>net.ipv4.ip_forward=1</code><li> | ||
</ol> | </ol> | ||
Revision as of 02:08, 7 February 2019
Contents
Becoming your own dial-up ISP in 2019
Required hardware:
- A hardware modem (not a software modem/winmodem, must be the real deal)
- A computer to install linux on to talk to the a modem (Can be anything that a modern linux distribution will run on. Raspberry Pi, Pi clone, x86 machine, etc)
- A client device (windows 9x PC for example) with a modem
- Some form of PSTN to connect the two modems
The exact hardware I’ve used
- Generic x86_64 PC running Debian 9.5 x86_64
- Matrix “MX Modem” (more on this later)
- USB to RS232 serial adapter (DE-9) to connect to the modem (Must support hardware flow control)
- DE-9 to DB-25 serial adapter
- Linksys PAP2T analog telephone adapter (ATA)
- x86 based Windows 95 PC with a US Robotics Sportster 28800 ISA modem
Software used
- Debian 9.5 x86_64
- PPP
- getty
- Asterisk
Preparing the dial-in-server
- Install Debian/Ubuntu/Raspbian per the usual methods (not covered here)
- Update to latest packages and reboot if required
- Connect USB to RS232 adaptor and confirm it shows up as /dev/ttyUSBXXX (
ls /dev/to check) In my case it presents as/dev/ttyUSB0
My serial adaptor is a "ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adaptor"
Full lsusb output:user@debian:~# sudo lsusb -v Bus 004 Device 003: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x1a86 QinHeng Electronics idProduct 0x7523 HL-340 USB-Serial adapter bcdDevice 2.54 iManufacturer 0 iProduct 2 USB2.0-Ser! iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 39 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 96mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 1 bInterfaceProtocol 2 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 1 Device Status: 0x0000 (Bus Powered) - Install ppp (and getty if your distro doesn’t have it by default)
sudo apt-get install ppp mgetty
- Many of the old guides were written when inittab was still around but its 2019 and systemd has taken over.
We need to create a systemd service for mgetty so edit/lib/systemd/system/mgetty.servicewith your text editor of choice with elevated privileges (sudo)[Unit] Description=External Modem Documentation=man:mgetty(8) Requires=systemd-udev-settle.service After=systemd-udev-settle.service [Service] Type=simple ExecStart=/sbin/mgetty -x8 /dev/ttyUSB0 Restart=always PIDFile=/var/run/mgetty.pid.ttyUSB0 [Install] WantedBy=multi-user.target
-
Configure mgetty by editing
/etc/mgetty/mgetty.configwith your text editor of choice with elevated privileges (sudo)
Comment out everything except the debug level and append the section for configuring the serial devicedebug 9 port ttyUSB0 port-owner root port-group dialout port-mode 0660 data-only yes ignore-carrier no toggle-dtr yes toggle-dtr-waittime 500 rings 2 #autobauding yes speed 9600
- Enable the mgetty service so it starts on boot
sudo systemctl enable mgetty.service
-
Start mgetty
sudo systemctl start mgetty.service - Configure ppp by editing
/etc/ppp/options
Like above comment out everything except these settings#define the DNS server for the client to use ms-dns 8.8.8.8 #async character map should be 0 asyncmap 0 #require authentication auth #Use hardware flow control crtscts #We want exclusive access to the modem device lock #show pap passwords in log files to help with debugging show-password #require the client to authenticate with pap +pap #if you are having trouble with auth enable debugging debug #heartbeat for control messages, used to determine if the client connection has dropped lcp-echo-interval 30 lcp-echo-failure 4 #cache the client mac address in the arp system table proxyarp
- Create a device option file by editing
/etc/ppp/options.ttyUSB0
local lock nocrtscts 192.168.32.1:192.168.32.105 netmask 255.255.255.0 #debug noauth proxyarp lcp-echo-failure 60
- Create the user used for PAP authentication
useradd -G dialout,dip,users -m -g users -s /usr/sbin/pppd dial - Change the password (I set it to dial)
passwd dial - Edit
/etc/ppp/pap-secretsand append the username and password (quotes included)
dial * "dial" * - Enable packet forwarding for IP4 by editing
/etc/sysctl.confnet.ipv4.ip_forward=1
sudo apt-get update sudo apt-get upgrade sudo reboot