Merge branch 'master' of git://git.tails.boum.org/tails
[tails-test.git] / wiki / src / blueprint / Add_Gnome_PPP_for_Dial-Up_Users.mdwn
blob136ff75c1cabdd52c7c129bb7db81ee346c95879
1 [[!toc levels=2]]
3 # Rationale
5 Tails should be usable by those stuck with dial-up Internet access. Recent
6 events have shown that in some cases, dial-up might be the last option to
7 reach the Internet when broadband operators have been shut down.
9 This was [[discussed on the forum|forum/GNOME_PPP_for_Dial-Up__63__]].
11 # Roadmap
13 **Next thing to do**: make up our mind wrt. towards which one of the
14 possible solutions we want to go: [[todo/choose_direction_for_PPP_support]].
16 Possible solutions:
18  * fix [[!debbug 258064]], but GNOME PPP looks dead upstream, so
19    it might be an option to create a custom package handling resolvconf the way
20    we want.
21  * find alternative ways to use WvDial or PPP.
23 Ideal solution: [[todo/NetworkManager:_PSTN_dial-up]]
25 # Research
27 NetworkManager (and ModemManager) have full support for **mobile** modems. But
28 nothing for old school dial-up modems at the moment: see [b.g.o #348330 -
29 Tracker: Integrated PPP support](https://bugzilla.gnome.org/show_bug.cgi?id=348330)
31 Fallback option: provide GNOME PPP, a GUI front-end to old but trusty WvDial.
33 # Dial-up emulation
35 Here is a method to test dial-up PPP connections without resorting to a real modem
36 and a real Internet provider available on the Plain Old Telephony System. It needs
37 a system running Tails and another one (the *gateway*) running standard Debian.
38 So this requires either two computers in the same LAN or runing Tails using
39 virtualization.
41 1. Prepare the networking stack on the *gateway*:
43         # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
44         # sysctl -w net.ipv4.ip_forward=1
46 2. In Tails, create `.wvdial.conf`:
48         [Dialer Defaults]
49         Baud = 115200
50         Init = ATZ
51         Init2 = AT%R1
52         Phone = 192.168.1.2:6789
53         Username = test
54         Password = test
55         Carrier Check = off
57    Replace the IP address in `Phone` with the IP address of the other system.
59 3. In Tails, install the `modemu` package.
61 4. In Tails, remove the default route to let room for the one provided by PPP:
63         # ip route del default
65 5. On the *gateway* run:
67         # pppd noauth local lock nodefaultroute persist debug nodetach 10.1.2.3:10.4.5.6 pty "nc -l 6789"
69 6. And fairly quickly (before `pppd` times out), run on Tails:
71         $ sudo modemu -c 'ln -nsf %s /dev/modem ; wvdial -C .wvdial.conf'
73 Repeat the last two steps if the connection is broken at some point.
75 # PPPoE emulation
77 To ensure that PPPoE (broadband DSL) support is not broken by tweaks
78 to PPP configuration files, here is a test procedure. This needs
79 a standard Debian system (the *gateway*), and either a spare wired network card
80 or using virtualization.
82 This reciepe uses `kvm`, but could be easily adapted to other setups:
84 1. On the *gateway*, install the `pppoe` package.
85 2. On the *gateway*, create `/etc/ppp/pppoe-server-options`:
87         debug
88         noauth
89         lcp-echo-interval 10
90         lcp-echo-failure 2
91         ms-dns 8.8.8.8
92         defaultroute
93         noipdefault
95 3. Start KVM, adding those arguments: `-net nic,model=virtio -net tap,ifname=tails`.
96 4. On the *gateway*, *up* this interface:
98         # ip link set tails up
100 5. On the *gateway*, start the PPPoE server:
102         # sudo pppoe-server -I tails -F -S test -m 1412
104 6. On Tails, you can now right-click the NetworkManager icon, and select
105    *Edit connections...*. In the *DSL* tab, click *Add*. *Service name*
106    should be set to `test`. Other settings should not matter.
108 7. On Tails, left-click the NetworkManager icon and selection the newly
109    created connection.
111 To debug, use `tcpdump`, and look at `/var/log/syslog`.
113 # Implementation
115 ## GNOME PPP
117 As WvDial (and thus GNOME PPP) is not integrated with NetworkManager in any
118 way, the hooks in `/etc/NetworkManager/dispatcher.d` are not normally run upon
119 connection.
121 They will be after adding the following script as
122 `/etc/ppp/ip-up.d/010call-nm-hooks`:
124     #!/bin/sh
126     run-parts --regex='^[a-z0-9-]+(\.sh)?$' /etc/NetworkManager/dispatcher.d --arg="$1" --arg="up"
128 But this will probably has the undesired effect of calling NetworkManager
129 hooks twice when using PPPoE. This does not look like a real issue, but Tor
130 is still restarted twice which is not nice.
132 Answer to this problem is fairly simple: when using WvDial with a good ol'
133 modem, a `SPEED` environment variable is defined when `01call-nm-hooks`
134 runs. Let's simply use this to determine if we should run NetworkManager hooks
135 manually.
137 Remaining issues:
139 * `gnome-ppp` conflicts with `resolvconf`, see [[!debbug 258064]].
140 * Clarify what groups must the user be part of to run wvdial /
141   gnome-ppp? We've been told [[on the
142   forum|forum/GNOME_PPP_for_Dial-Up__63__#comment-9b26e5014164c5ff0ebd3cc3223f6301]]
143   the answer was `dialout` (which is already the case) and `dip`
144   (which is not).