&8qme&&94`wftE%2EvC$y%^K#Gx_`NML**DuD^4s{wj|1R$N413q(s56DGU`;o
z1<)$*-=q3Oi6q^Y`v55_XL?_EysI
ziKt-h)||*0CuCvOyS$P1nP`7&js#JTXND@$5#YQ)$&as>>|l5-BY$JqMLscx~4zG29NJa8V%k$mKi``!!rzMgqbghPDtWLYTf^^RLo`
z+quXE-PFYd6QtwMVQELWqZ9nmtP_i+4IB+u&%XYc3(HDabZVJWRKd=!V1j@KsW~XG
z#4LGPXSr=xV}MZN9jC<_yapV-r!B8=W3=~U{blGtnmDWq7H!vc)HZ@9wqaO>QEvv3
z;tC|+Z9?WNI<=@HdCkVXv+C(b
zJJkf=V+ET5l8nAK1Z*Nn(*a3i=6I&`~I1FaPVPKfW^C
zzIq7AHUlj8@)vuv(Be3xlSPfK>bYKJf_H!74ujolzzl%{gVS6P~nuFIAWe`5QD@q13a5(u7d&QDlg%195
zJ=WTUn3}!c$f9nHB$m~pTSO;*&o1f36_*3{jB{i|oh)Y26kfE$Rwj1r`}glOA&1XA
zbQIbc2Z29yN>Uji=~&P_V&V>u#T=f4;qdmzi4yGMqQwaS9|tW*r>-&kugi%
z7xU5hD#8h!0tSDA^3|1@!uEI`h~ubqr731l{@#|;_20grvoPz!Yblo7vxqv#be--e
z=wx+Z#NmMd+&A}u!iVKI_l5|BGJID`H0i~m5UgSEY`dmMjHU1_@U*`fbsv8M=ym8Mi*xAU+lmX)#~$LvbWogDjWp5>0Iy|TSeUG2!;P>W~LJjl2tPNxeVq({a%
zP;(n`Ht*J%j(up0Q}Vd@vXe2VU(S+JR>PpXTTMqkGnC+-v+gf+CNsSoOW+IUuVb40*hDA0*y4?6tw5GX=tS2vq<^(-4-iPQ-iIR
zJsawslNMCx2!b6E|F~KHWKzLqe9tDBaG2fFY~JSIzqi2;0rOX;foC3)^x*EiPqX~w3FAS#zc}M`z{HNr&N$5I
zg(01YwbgN2wLjQ*-n)%V>;b05^hUvMTF#1BC#~66ROMZUUmGL&%j%n>jX(eX`8hAU
zBYDsyjyk@xNGuMo0i}LqI`$d8N7&fOrBQ67Ksj)hL4EQaZ72S&T5>k5mQ
zm|5VnC3~E$=#4x67lqm>h;F8hWlEdVH_YF1XnWq{tD@BL@c4vVdLtK-nv3c^`D_V2
zT9Uu(l*GIQ|B~;%{vAp_cmA&!W3ll$53m2w5tl7~AEbfWCTlM6XHv`x*p-qr<8+?!
zty$J=P}wK;@UrF7a5-M_1a^$~l@LOgu;pE8a#VG#h
zyc11RCh=+X?fW{fJaf$3k1O4pn|D&mG%S|iOwA2e$PwFdt@T%H70O<19gaULse3K`
zK_Uq2l~T~~=0*m19z1MRJUBS`dZ0~mZQ{i6V57UBUDP0k->J@V$S1DSG2B+$p%rsz
zkM^oHRGYwE9foO>de?@ga6Et?qmvPQ_F=$zR-m%*F
zY%I7GKW4$KFT1Y-*d=T#ReYy!YjmnV$gn0S`TIb+q&l$sxc4O%oH^b-$VuPb`d0cH
zTw@#FB30d)7q6M4Fd6a!94n+*XV;}Dwv8utUo7c5ex}WDyx4p;BG}F1n~`n?Z7`dD
zK|Ad~)KBVHUaV9#;Wej$yCK2dVv{EY0GHhfGn*K;V~5HIxSgi#^z?uAHX%NvRg>`0
zTavnEQ=8w4M4_hpZKq2g=I?5xNw}t^3-JBD&3`z%NRS8~Pj4WcIXVUTRDQTsvvRCw
zYCcYInir`kui$=B##KwT?rql5S)H`uHlJwyUwW
zqj5Byo}$%KMz@?C27QsZdF$*#yR;-0x(h`bu~Bvue{ps&BHgpnLmrrfUWLb-Ot&w7
z7j#QM-uzbP9sfQllf`J&`}>bhCI^^Y<8Qyr2zIHtPoC*uyk~@;Z
zx^7F3dIqI5Ee6Y2%S5%GwCy!FBU!{yd*#QWp;P9M&~(rAtFP`HHX>O)esRd*%9fg^
zS>fmICqQEVNC7%ppeg5|E->_&bU@-WnUqsK$Ag&IR3AF9w-hp#Z;~S3_ttb3V2l16
zdeYR`BvqCYW2rHy1y3b3f#ucCcAA2J-Zct*rHRXqV5)wSUHLO~ewX0D
z;Ir)fMYTPLGjw!akDLb$8&L}SbK
zW5P?Z%lG+`g(8fzkIkUoJUHMWN`
z@Tiovb$Hder0;fFQH6U6&=Y5nu$-<3ecGnyU0i4a+pa)-wz+AwG5^sbE}<{bv|DGv
zz{2=Kd-CCNTfLxbP+JxD`Sf+4MHZkjQ{iQ<4z?TqUP6`-cFJfV=!C1bc$88dBu&m6pq
z%j?v~FANOCOC{vhkYE3hy}DeKeLl!?cq9iDpd5VX4rt!-mH{Zm3wqh3po;rL_IZ%k
zSlB!{Up}d`9Oi6$u_F$#*(Ut?!r5!0E!}E~48(hrn%BZjtqSCV9~I$!=Z6SRBQ98}co>2tF4x<8xHdh$9^R>FMwdG@M1XYOe=H}h@X15vCt
ztM~Q{#tr#l7qNuyV82$#cs(jyXYlc>yvTT3U2mzg&KcKI@)G}Q@?ml47Q)u+xe}mv(>o2ZLNKr?gi;$;eGQS=tyj-{)dm+M7RRNpm$Qr+yL++ea9?qrK*}
z$Aw1RTxD0G=n%nRC-j5BhZB{J1dzP9%PA@Y!~M;I3B+HjI%CQ<}tPfIp8}*!cyn6clIHmV$TobPOiGB;OXMkTfe)^_Av6E)0%tv
z$DUN`dfuqeOFnZ-xUXEgj=h8fRMp1LiF}oe)R>Ylx)B}+BVb;PR9yJHnm}^Hs1ek+
zM2YE@hOQ5>SA*jvR)=HR<3(8x1^HyQklTyvF024+2nJw1&lKb(r}T^I>ND@d;RgFj
zmKxef=C`~B9sTO9>?*lk+LdBuU*JLB@JOY%Wwh?krbHbhOljYijf9v`Itr1Oe`kkL
zr+pMi>!4INI_l6-WBJ>hHncz!MqyaK^yM#6a0*?T8yOwfm6cjS4bXQT6*L{}%A>uH
zT|TVnP*}Xp(;(MdBJ<<44w*?32WE?1d3fuwOFEIZQW^P=#zCaX5orgBs&^YrJnml>
zI(WK5%HtkZK_jBLqtWlrNk&Xpec6c@<$!!@@Ok{|mgKK%`K>(e_lw#4j>^M%6EpkYH0N?mBI$E{xL!7Jkd0{hb-b|T
zA<|4{&WN<>|7gbm?V4Zbi`jp)>E2hrxnRSB9h3$#x9Ym6!yrYn%U|vgRfi-$VtM?Y
znTqb8C@!xemBgMbxIg}vw7Q10Mv5br8g0~khwv}Gj{f8?7b?2;`u{eb3q*Q+A!XXH
zMrCWYg2eePTk9`*%Zc&7^|#)P7ya|?{rBJBu7VV&O3=B6eyBsO)c;;{gviql5#M(N
qN&VM1{{NHrAOBz8zTC~*xFGE+({gmU&S6T_PE%D+rAqnvoBstHz`wTu
literal 0
HcmV?d00001
--
2.45.2
From e152ea354058517e9d659637fb0de6c855dd24c4 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 14:00:27 -0600
Subject: [PATCH 09/31] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f98e9ca..90ad4fa 100644
--- a/README.md
+++ b/README.md
@@ -198,7 +198,7 @@ The netgraph system provides a uniform and modular system for the implementation
Your netgraph should look something like this:
-
+
In this setup, the `ue0` interface is my `$RG_IF` and the `bce0` interface is my `$ONT_IF`. You can generate your own graphviz via `ngctl dot`. Copy the output and paste it at [webgraphviz.com](http://www.webgraphviz.com/).
--
2.45.2
From 66783e9c43d019af62df8d5558b7e8d115f8adca Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 14:12:19 -0600
Subject: [PATCH 10/31] Update README.md
---
README.md | 59 +++++--------------------------------------------------
1 file changed, 5 insertions(+), 54 deletions(-)
diff --git a/README.md b/README.md
index 90ad4fa..ca8bdaa 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,6 @@
# About
-This repository includes my notes on enabling a true bridge mode setup with AT&T U-Verse and pfSense. This method utilizes [netgraph](https://www.freebsd.org/cgi/man.cgi?netgraph(4)) which is a graph based kernel networking subsystem of FreeBSD. This low-level solution was required to account for the unique issues surrounding bridging 802.1X traffic and tagging a VLAN with an id of 0. I've tested and confirmed this setup works with AT&T U-Verse Internet on the ARRIS NVG589, NVG599 and BGW210-700 residential gateways (probably others too). For Pace 5268AC see special details below.
-
-There are a few other methods to accomplish true bridge mode, so be sure to see what easiest for you. True Bridge Mode is also possible in a Linux via ebtables or using hardware with a VLAN swap trick. For me, I was not using a Linux-based router and the VLAN swap did not seem to work for me.
+This repository allows bypassing the AT&T U-Verse fiber gateway using pfSense. This method utilizes [netgraph](https://www.freebsd.org/cgi/man.cgi?netgraph) which is a graph-based kernel networking subsystem of FreeBSD. This low-level solution was required to account for the unique issues surrounding bridging 802.1X traffic and tagging a VLAN with an id of 0. I've tested and confirmed this setup works with AT&T U-Verse Internet on the BGW210-700 residential gateway. It probably works with others too.
The netgraph method will allow you to fully utilize your own router and fully bypass your residential gateway. It survives reboots, re-authentications, IPv6, and new DHCP leases.
@@ -15,7 +13,7 @@ Before continuing to the setup, it's important to understand how this method wor
First, let's talk about what happens in the standard setup (without any bypass). At a high level, the following process happens when the gateway boots up:
1. All traffic on the ONT is protected with [802.1/X](https://en.wikipedia.org/wiki/IEEE_802.1X). So in order to talk to anything, the Router Gateway must first perform the [authentication procedure](https://en.wikipedia.org/wiki/IEEE_802.1X#Typical_authentication_progression). This process uses a unique certificate that is hardcoded on your residential gateway.
-2. Once the authentication completes, you'll be able to properly "talk" to the outside. However, all of your traffic will need to be tagged with VLAN ID 0 (a.k.a. VLAN Priority Tagging[[1]](https://wikipedia.org/wiki/IEEE_802.1Q#Frame_format)[[2]](https://www.cisco.com/c/en/us/td/docs/switches/connectedgrid/cg-switch-sw-master/software/configuration/guide/vlan0/b_vlan_0.html)) before the IP gateway will respond.
+2. Once the authentication completes, you'll be able to properly "talk" to the outside. However, all of your traffic will need to be tagged with VLAN ID 0 (a.k.a. VLAN Priority Tagging[[1]](https://wikipedia.org/wiki/IEEE_802.1Q#Frame_format)[[2]](https://www.cisco.com/c/en/us/td/docs/switches/connectedgrid/cg-switch-sw-master/software/configuration/guide/vlan0/b_vlan_0.html)) before the IP gateway will respond.
3. Once traffic is tagged with VLAN0, your residential gateway needs to request a public IPv4 address via DHCP. The MAC address in the DHCP request needs to match that of the MAC address that's assigned to your AT&T account. Other than that, there's nothing special about the DCHPv4 handshake.
4. After the DHCP lease is issued, the WAN setup is complete. Your LAN traffic is then NAT'd and routed to the outside.
@@ -254,58 +252,11 @@ $ ngctl show ue0:
In some circumstances, pfSense may alter your netgraph. This is especially true if pfSense manages either your `$RG_IF` or `$ONT_IF`. If you make some interface changes and your connection breaks, check to see if your netgraph was changed.
-# Virtualization Notes
-
-This setup has been tested on physical servers and virtual machines. Virtualization adds another layer of complexity for this setup, and will take extra consideration.
-
-## QEMU / KVM / Proxmox
-
-Proxmox uses a bridged networking model, and thus utilizes Linux's native bridge capability. To use this netgraph method, you do a PCI passthrough for the `$RG_IF` and `$ONT_IF` NICs. The bypass procedure should then be the same.
-
-You can also solve the EAP/802.1X and VLAN0/802.1Q problem by setting the `group_fwd_mask` and creating a vlan0 interface to bridge to your VM. See *Other Methods* below.
-
-## ESXi
-
-I haven't tried to do this with ESXi. Feel free to submit a PR with notes on your experience. PCI passthrough is probably the best approach here though.
-
-# Other Methods
-
-## Linux
-
-If you're looking how to do this on a Linux-based router, please refer to [this method](http://blog.0xpebbles.org/Bypassing-At-t-U-verse-hardware-NAT-table-limits) which utilizes ebtables and some kernel features. The method is well-documented there and I won't try to duplicate it. This method is generally more straight forward than doing this on BSD. However, please submit a PR for any additional notes for running on Linux routers.
-
-## VLAN Swap
-
-There is a whole thread on this at [DSLreports](http://www.dslreports.com/forum/r29903721-AT-T-Residential-Gateway-Bypass-True-bridge-mode). The gist of this method is that you connect your ONT, RG and WAN to a switch. Create two VLANs. Assign the ONT and RG to VLAN1 and the WAN to VLAN2. Let the RG authenticate, then change the ONT VLAN to VLAN2. The WAN the DHCPs and your in business.
-
-However, I don't think this works for everyone. I had to explicitly tag my WAN traffic to VLAN0 which wasn't supported on my switch.
-
-## OPNSense / FreeBSD
-For OPNSense 20.1:
-follow the pfSense instructions, EXCEPT:
-1) use file opnatt.sh
-2) do *NOT* install the ng_etf.ko, as OPNSense already has this module installed.
-3) put the opnatt.sh script into `/usr/local/etc/rc.syshook.d/early` as `99-opnatt.sh`
-4) do *NOT* modify config.xml, nor do any of the duid stuff
-5) note: You *CAN* use IPv6 Prefix id 0, as OPNSense does *NOT* assign a routeable IPv6 address to ngeth0
-
-I haven't tried this with native FreeBSD, but I imagine the process is ultimately the same with netgraph. Feel free to submit a PR with notes on your experience.
-
# References
-- http://blog.0xpebbles.org/Bypassing-At-t-U-verse-hardware-NAT-table-limits
-- https://forum.netgate.com/topic/99190/att-uverse-rg-bypass-0-2-btc/
-- http://www.dslreports.com/forum/r29903721-AT-T-Residential-Gateway-Bypass-True-bridge-mode
-- https://www.dslreports.com/forum/r32127305-True-Bridge-mode-on-pfSense-with-netgraph
-- https://www.dslreports.com/forum/r32116977-AT-T-Fiber-RG-Bypass-pfSense-IPv6
-- http://www.netbsd.org/gallery/presentations/ast/2012_AsiaBSDCon/Tutorial_NETGRAPH.pdf
+- [MonkWho](https://github.com/MonkWho/pfatt) - Many references on his page
# Credits
-This took a lot of testing and a lot of hours to figure out. A unique solution was required for this to work in pfSense. If this helped you out, please buy us a coffee.
-
-- [rajl](https://forum.netgate.com/user/rajl) - for the netgraph idea - 1H8CaLNXembfzYGDNq1NykWU3gaKAjm8K5
-- [pyrodex](https://www.dslreports.com/profile/1717952) - for IPv6 - ?
-- [aus](https://github.com/aus) - 31m9ujhbsRRZs4S64njEkw8ksFSTTDcsRU
-- [/u/MisterBazz](https://www.reddit.com/user/MisterBazz/) - [for the initial setup guide on U-verse TV documentation](https://www.reddit.com/r/PFSENSE/comments/ag43rb/att_bgw210_true_independent_bridge_mode_uverse/) that formed the basis for [U-VERSE_TV.md](U-VERSE_TV.md)
-- [0xC0ncord](https://github.com/0xC0ncord) - for the [U-Verse TV Documentation](U-VERSE_TV.md)
+- [MonkWho](https://github.com/MonkWho/pfatt) - For the code that was forked. Other credits on his page
+- [aus](https://github.com/aus) - 31m9ujhbsRRZs4S64njEkw8ksFSTTDcsRU - For the original work
--
2.45.2
From a2acf2825abe5e7f979403c7e4108716c84470ca Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 15:45:08 -0600
Subject: [PATCH 11/31] Update README.md
---
README.md | 25 ++++++++++---------------
1 file changed, 10 insertions(+), 15 deletions(-)
diff --git a/README.md b/README.md
index ca8bdaa..36f5c33 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
This repository allows bypassing the AT&T U-Verse fiber gateway using pfSense. This method utilizes [netgraph](https://www.freebsd.org/cgi/man.cgi?netgraph) which is a graph-based kernel networking subsystem of FreeBSD. This low-level solution was required to account for the unique issues surrounding bridging 802.1X traffic and tagging a VLAN with an id of 0. I've tested and confirmed this setup works with AT&T U-Verse Internet on the BGW210-700 residential gateway. It probably works with others too.
-The netgraph method will allow you to fully utilize your own router and fully bypass your residential gateway. It survives reboots, re-authentications, IPv6, and new DHCP leases.
+The netgraph method will allow you to fully utilize your own router and fully bypass your residential gateway. It survives reboots, re-authentications, IPv6 and new DHCP leases.
# How it Works
@@ -17,35 +17,31 @@ First, let's talk about what happens in the standard setup (without any bypass).
3. Once traffic is tagged with VLAN0, your residential gateway needs to request a public IPv4 address via DHCP. The MAC address in the DHCP request needs to match that of the MAC address that's assigned to your AT&T account. Other than that, there's nothing special about the DCHPv4 handshake.
4. After the DHCP lease is issued, the WAN setup is complete. Your LAN traffic is then NAT'd and routed to the outside.
-## Bypass Procedure
+## Bypass Procedure: Supplicant Method
+
+### Notes
-### Supplicant Method
If you have valid certs that have been extracted from an authorized residential gateway device, you can utilize the native wpa_supplicant client in pfSense to perform 802.1X EAP-TLS authentication.
-I will also note that EAP-TLS authentication authorizes the device, not the subscriber. Meaning, any authorized device (NVG589, NVG599, 5268AC, BGW210, etc) can be used to authorize the link. It does not have to match the RG assigned to your account. For example, an NVG589 purchased of eBay can authorize the link. The subscriber's service is authorized separately (probably by the DHCP MAC and/or ONT serial number).
+Note that EAP-TLS authentication authorizes the device, not the subscriber. Meaning, any authorized device (BGW210) can be used to authorize the link. It does not have to match the residential gateway assigned to your account. For example, a BGW210 purchased of eBay can authorize the link. The subscriber's service is authorized separately (probably by the DHCP MAC and/or ONT serial number).
-In supplicant mode, the residential gateway can be permanently disconnected. We will still use netgraph to tag our traffic with VLAN0. Our cabling then looks pretty simple:
+In supplicant mode, the residential gateway can be permanently disconnected. We will use netgraph to tag our traffic with VLAN0 and spoof the MAC address from the residential gateway.
- ```
- Outside[ONT]---[nic0]pfsense
- ```
-With netgraph, the procedure also looks a little simpler:
+### Bypass Procedure
-netgraph has created an interface for us called ngeth0. This interface is connected to ng_vlan which is configured to tag all traffic as VLAN0 before sending it on to the ONT interface.
+Netgraph creates an interface for us called ngeth0. This interface is connected to vlan0 which is configured to tag all traffic as VLAN0 before sending it on to the ONT interface.
wpa_supplicant binds to ngeth0 and initiates 802.1X EAP-TLS authentication
pfSense can then be configured to use ngeth0 as the WAN interface.
Next, we spoof the MAC address of the residential gateway and request a DHCP lease on ngeth0. The packets get tagged as VLAN0 and exit to the ONT.
Now the DHCP handshake should complete and we should be on our way!
-Hopefully, that now gives you an idea of what we are trying to accomplish. See the comments and commands bin/pfatt.sh for details about the netgraph setup.
-
-But enough talk. Now for the fun part!
+See the comments and commands bin/pfatt.sh for details about the netgraph setup.
## Prerequisites
* Local or console access to pfSense
* pfSense 2.4.5 running on amd64 architecture
* Two physical network interfaces on your pfSense server
-* The MAC address of your EAP-TLS Identity (which is the same as your residential gateway if you are using its certificates)
+* The MAC address of your EAP-TLS Identity (from residential gateway used for certificates)
* Valid certificates to perform EAP-TLS authentication (see Extracting Certificates)
## Install
@@ -53,7 +49,6 @@ But enough talk. Now for the fun part!
1. Edit the following configuration variables in `bin/pfatt.sh` as noted below. `$RG_ETHER_ADDR` should match the MAC address of your Residential Gateway. AT&T will only grant a DHCP lease to the MAC they assigned your device. In my environment, it's:
```shell
ONT_IF='xx0' # NIC -> ONT / Outside
- RG_IF='xx1' # NIC -> Residential Gateway's ONT port
RG_ETHER_ADDR='xx:xx:xx:xx:xx:xx' # MAC address of Residential Gateway
```
--
2.45.2
From 8a057af98eafebfe9cd5380b448a9d287e1540b5 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 15:46:45 -0600
Subject: [PATCH 12/31] Update README.md
---
README.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 36f5c33..77476e4 100644
--- a/README.md
+++ b/README.md
@@ -29,11 +29,12 @@ In supplicant mode, the residential gateway can be permanently disconnected. We
### Bypass Procedure
-Netgraph creates an interface for us called ngeth0. This interface is connected to vlan0 which is configured to tag all traffic as VLAN0 before sending it on to the ONT interface.
-wpa_supplicant binds to ngeth0 and initiates 802.1X EAP-TLS authentication
-pfSense can then be configured to use ngeth0 as the WAN interface.
-Next, we spoof the MAC address of the residential gateway and request a DHCP lease on ngeth0. The packets get tagged as VLAN0 and exit to the ONT.
-Now the DHCP handshake should complete and we should be on our way!
+1. Netgraph creates an interface for us called ngeth0. This interface is connected to vlan0 which is configured to tag all traffic as VLAN0 before sending it on to the ONT interface.
+2. wpa_supplicant binds to ngeth0 and initiates 802.1X EAP-TLS authentication
+3. pfSense can then be configured to use ngeth0 as the WAN interface.
+4. Spoof the MAC address of the residential gateway and request a DHCP lease on ngeth0. The packets get tagged as VLAN0 and exit to the ONT.
+5. Now the DHCP handshake should complete and we should be on our way!
+
See the comments and commands bin/pfatt.sh for details about the netgraph setup.
## Prerequisites
--
2.45.2
From 5baec46e103e9711f7cf38b2a1c3212137ae57d7 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 16:01:14 -0600
Subject: [PATCH 13/31] Update README.md
---
README.md | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 77476e4..d0ad451 100644
--- a/README.md
+++ b/README.md
@@ -47,13 +47,13 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
## Install
-1. Edit the following configuration variables in `bin/pfatt.sh` as noted below. `$RG_ETHER_ADDR` should match the MAC address of your Residential Gateway. AT&T will only grant a DHCP lease to the MAC they assigned your device. In my environment, it's:
+1. Edit the following configuration variables in `bin/pfatt.sh` as noted below. `$RG_ETHER_ADDR` should match the MAC address of your Residential Gateway. AT&T will only grant a DHCP lease to the MAC they assigned your device.
```shell
ONT_IF='xx0' # NIC -> ONT / Outside
RG_ETHER_ADDR='xx:xx:xx:xx:xx:xx' # MAC address of Residential Gateway
```
-2. Copy `bin/pfatt.sh` to `/root/bin` (or any directory):
+2. Copy `bin/pfatt.sh` to `/root/bin` (or any directory) and make executable:
```
ssh root@pfsense mkdir /root/bin
scp bin/pfatt.sh root@pfsense:/root/bin/
@@ -92,6 +92,15 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
If everything is setup correctly, netgraph should be bridging EAP traffic between the ONT and RG, tagging the WAN traffic with VLAN0, and your WAN interface configured with an IPv4 address via DHCP.
+## Extracting Certificates
+Certificates can be extracted by the exploitation of the residential gateway to get a root shell. Here is a good way to do it using windows: https://github.com/iwleonards/extract-mfg
+
+References
+
+https://www.devicelocksmith.com/2018/12/eap-tls-credentials-decoder-for-nvg-and.html
+https://www.nomotion.net/blog/sharknatto/
+https://github.com/MakiseKurisu/NVG589/wiki
+
# IPv6 Setup
Once your netgraph setup is in place and working, there aren't any netgraph changes required to the setup to get IPv6 working. These instructions can also be followed with a different bypass method other than the netgraph method. Big thanks to @pyrodex1980's [post](http://www.dslreports.com/forum/r32118263-) on DSLReports for sharing your notes.
--
2.45.2
From 861248554b7a70a86571d9fc6aa37ebf2d26ca62 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 16:11:50 -0600
Subject: [PATCH 14/31] Update README.md
---
README.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index d0ad451..e25bc55 100644
--- a/README.md
+++ b/README.md
@@ -93,13 +93,13 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
If everything is setup correctly, netgraph should be bridging EAP traffic between the ONT and RG, tagging the WAN traffic with VLAN0, and your WAN interface configured with an IPv4 address via DHCP.
## Extracting Certificates
-Certificates can be extracted by the exploitation of the residential gateway to get a root shell. Here is a good way to do it using windows: https://github.com/iwleonards/extract-mfg
+Certificates can be extracted by the exploitation of the residential gateway to get a root shell. Here are instructions to do so with windows by [iwleonards](https://github.com/iwleonards/extract-mfg).
-References
+Be careful, you have sole responsibility for not bricking your residential gateway.
-https://www.devicelocksmith.com/2018/12/eap-tls-credentials-decoder-for-nvg-and.html
-https://www.nomotion.net/blog/sharknatto/
-https://github.com/MakiseKurisu/NVG589/wiki
+In case they are needed, here are firmware archives:
+[1.0.29 Firmware](https://mega.nz/file/35lBkbzC#MTrKdt57SEuz81Tn3MBKm-o_s1zv643MLmxyKILjsk8)
+[Firmware archive](https://drive.google.com/file/d/1AcP3gbjpZOsnGTFApQOlalLzpjidUDj4/view?usp=drivesdk)
# IPv6 Setup
@@ -265,3 +265,4 @@ In some circumstances, pfSense may alter your netgraph. This is especially true
- [MonkWho](https://github.com/MonkWho/pfatt) - For the code that was forked. Other credits on his page
- [aus](https://github.com/aus) - 31m9ujhbsRRZs4S64njEkw8ksFSTTDcsRU - For the original work
+- [iwleonards](https://github.com/iwleonards/extract-mfg) - Residential gateway certificate extraction
--
2.45.2
From 3e164750e8379f8d554c4d60218a2185aeb34278 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 16:17:51 -0600
Subject: [PATCH 15/31] Update README.md
---
README.md | 30 ++++--------------------------
1 file changed, 4 insertions(+), 26 deletions(-)
diff --git a/README.md b/README.md
index e25bc55..0205366 100644
--- a/README.md
+++ b/README.md
@@ -193,7 +193,7 @@ If you don't see traffic being bridged between `ngeth0` and `$ONT_IF`, then netg
## Promiscuous Mode
-`pfatt.sh` will put `$RG_IF` in promiscuous mode via `/sbin/ifconfig $RG_IF promisc`. Otherwise, the EAP packets would not bridge. I think this is necessary for everyone but I'm not sure. Turn it off if it's causing issues.
+`pfatt.sh` will put `$ONT_IF` in promiscuous mode via `/sbin/ifconfig $ONT_IF promisc`. I think this is necessary for everyone but I'm not sure. Turn it off if it's causing issues.
## netgraph
@@ -203,8 +203,6 @@ Your netgraph should look something like this:

-In this setup, the `ue0` interface is my `$RG_IF` and the `bce0` interface is my `$ONT_IF`. You can generate your own graphviz via `ngctl dot`. Copy the output and paste it at [webgraphviz.com](http://www.webgraphviz.com/).
-
Try these commands to inspect whether netgraph is configured properly.
1. Confirm kernel modules are loaded with `kldstat -v`. The following modules are required:
@@ -218,48 +216,28 @@ Try these commands to inspect whether netgraph is configured properly.
2. Issue `ngctl list` to list netgraph nodes. Inspect `pfatt.sh` to verify the netgraph output matches the configuration in the script. It should look similar to this:
```
$ ngctl list
-There are 9 total nodes:
- Name: o2m Type: one2many ID: 000000a0 Num hooks: 3
+There are 5 total nodes:
Name: vlan0 Type: vlan ID: 000000a3 Num hooks: 2
Name: ngeth0 Type: eiface ID: 000000a6 Num hooks: 1
Name: Type: socket ID: 00000006 Num hooks: 0
Name: ngctl28740 Type: socket ID: 000000ca Num hooks: 0
- Name: waneapfilter Type: etf ID: 000000aa Num hooks: 2
- Name: laneapfilter Type: etf ID: 000000ae Num hooks: 3
Name: bce0 Type: ether ID: 0000006e Num hooks: 1
- Name: ue0 Type: ether ID: 00000016 Num hooks: 2
-```
-3. Inspect the various nodes and hooks. Example for `ue0`:
-```
-$ ngctl show ue0:
- Name: ue0 Type: ether ID: 00000016 Num hooks: 2
- Local hook Peer name Peer type Peer ID Peer hook
- ---------- --------- --------- ------- ---------
- upper laneapfilter etf 000000ae nomatch
- lower laneapfilter etf 000000ae downstream
```
+3. Inspect the various nodes and hooks.
### Reset netgraph
`pfatt.sh` expects a clean netgraph before it can be ran. To reset a broken netgraph state, try this:
```shell
-/usr/sbin/ngctl shutdown waneapfilter:
-/usr/sbin/ngctl shutdown laneapfilter:
/usr/sbin/ngctl shutdown $ONT_IF:
-/usr/sbin/ngctl shutdown $RG_IF:
-/usr/sbin/ngctl shutdown o2m:
/usr/sbin/ngctl shutdown vlan0:
/usr/sbin/ngctl shutdown ngeth0:
```
## pfSense
-In some circumstances, pfSense may alter your netgraph. This is especially true if pfSense manages either your `$RG_IF` or `$ONT_IF`. If you make some interface changes and your connection breaks, check to see if your netgraph was changed.
-
-# References
-
-- [MonkWho](https://github.com/MonkWho/pfatt) - Many references on his page
+In some circumstances, pfSense may alter your netgraph. This is especially true if pfSense manages either your `$ONT_IF`. If you make some interface changes and your connection breaks, check to see if your netgraph was changed.
# Credits
--
2.45.2
From f6fe73ea8add4d0d9cd5ee4adad1ae1c9ab489ef Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 16:21:28 -0600
Subject: [PATCH 16/31] Update README.md
---
README.md | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/README.md b/README.md
index 0205366..686fc3b 100644
--- a/README.md
+++ b/README.md
@@ -59,8 +59,17 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
scp bin/pfatt.sh root@pfsense:/root/bin/
ssh root@pfsense chmod +x /root/bin/pfatt.sh
```
-
-3. Upload your extracted certs (see Extracting Certificates) to /conf/pfatt/wpa. You should have three files in the wpa directory as such. You may also need to match the permissions.
+
+3. Extracting Certificates:
+Certificates can be extracted by the exploitation of the residential gateway to get a root shell. Here are instructions to do so with windows by [iwleonards](https://github.com/iwleonards/extract-mfg).
+
+Be careful, you have sole responsibility for not bricking your residential gateway.
+
+In case they are needed, here are firmware archives:
+* [1.0.29 Firmware](https://mega.nz/file/35lBkbzC#MTrKdt57SEuz81Tn3MBKm-o_s1zv643MLmxyKILjsk8)
+* [Firmware archive](https://drive.google.com/file/d/1AcP3gbjpZOsnGTFApQOlalLzpjidUDj4/view?usp=drivesdk)
+
+4. Upload your extracted certs (see Extracting Certificates) to /conf/pfatt/wpa. You should have three files in the wpa directory as such. You may also need to match the permissions.
```
[2.4.4-RELEASE][root@pfsense.knox.lan]/conf/pfatt/wpa: ls -al
total 19
@@ -71,7 +80,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
-rw------- 1 root wheel 887 Jan 10 16:32 private.pem
```
-4. To start pfatt.sh script at the beginning of the boot process pfSense team recomments you use a package called shellcmd. Use pfSense package installer to find and install it. Once you have shellcmd package installed you can find it in Services > Shellcmd. Now add a new command and fill it up accordingly (make sure to select earlyshellcmd from a dropdown):
+5. To start pfatt.sh script at the beginning of the boot process pfSense team recomments you use a package called shellcmd. Use pfSense package installer to find and install it. Once you have shellcmd package installed you can find it in Services > Shellcmd. Now add a new command and fill it up accordingly (make sure to select earlyshellcmd from a dropdown):
```
Command: /root/bin/pfatt.sh
Shellcmd Type: earlyshellcmd
@@ -81,26 +90,17 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
This can also be acomplished by manually editing your pfSense /conf/config.xml file. Add /root/bin/pfatt.sh above . This method is not recommended and is frowned upon by pfSense team.
-5. Connect cables:
+6. Connect cables:
- `$ONT_IF` to ONT (outside)
- `LAN NIC` to local switch (as normal)
-6. Prepare for console access.
-7. Reboot.
-8. pfSense will detect new interfaces on bootup. Follow the prompts on the console to configure `ngeth0` as your pfSense WAN. Your LAN interface should not normally change. However, if you moved or re-purposed your LAN interface for this setup, you'll need to re-apply any existing configuration (like your VLANs) to your new LAN interface. pfSense does not need to manage `$RG_IF` or `$ONT_IF`. I would advise not enabling those interfaces in pfSense as it can cause problems with the netgraph.
-9. In the webConfigurator, configure the WAN interface (`ngeth0`) to DHCP using the MAC address of your Residential Gateway.
+7. Prepare for console access.
+8. Reboot.
+9. pfSense will detect new interfaces on bootup. Follow the prompts on the console to configure `ngeth0` as your pfSense WAN. Your LAN interface should not normally change. However, if you moved or re-purposed your LAN interface for this setup, you'll need to re-apply any existing configuration (like your VLANs) to your new LAN interface. pfSense does not need to manage `$RG_IF` or `$ONT_IF`. I would advise not enabling those interfaces in pfSense as it can cause problems with the netgraph.
+10. In the webConfigurator, configure the WAN interface (`ngeth0`) to DHCP using the MAC address of your Residential Gateway.
If everything is setup correctly, netgraph should be bridging EAP traffic between the ONT and RG, tagging the WAN traffic with VLAN0, and your WAN interface configured with an IPv4 address via DHCP.
-## Extracting Certificates
-Certificates can be extracted by the exploitation of the residential gateway to get a root shell. Here are instructions to do so with windows by [iwleonards](https://github.com/iwleonards/extract-mfg).
-
-Be careful, you have sole responsibility for not bricking your residential gateway.
-
-In case they are needed, here are firmware archives:
-[1.0.29 Firmware](https://mega.nz/file/35lBkbzC#MTrKdt57SEuz81Tn3MBKm-o_s1zv643MLmxyKILjsk8)
-[Firmware archive](https://drive.google.com/file/d/1AcP3gbjpZOsnGTFApQOlalLzpjidUDj4/view?usp=drivesdk)
-
# IPv6 Setup
Once your netgraph setup is in place and working, there aren't any netgraph changes required to the setup to get IPv6 working. These instructions can also be followed with a different bypass method other than the netgraph method. Big thanks to @pyrodex1980's [post](http://www.dslreports.com/forum/r32118263-) on DSLReports for sharing your notes.
--
2.45.2
From db2ffe6a1051d36f5ea78d6fa76540a63caf6d69 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 16:22:55 -0600
Subject: [PATCH 17/31] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 686fc3b..3a77d7c 100644
--- a/README.md
+++ b/README.md
@@ -60,7 +60,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
ssh root@pfsense chmod +x /root/bin/pfatt.sh
```
-3. Extracting Certificates:
+3. Extracting Certificates:
Certificates can be extracted by the exploitation of the residential gateway to get a root shell. Here are instructions to do so with windows by [iwleonards](https://github.com/iwleonards/extract-mfg).
Be careful, you have sole responsibility for not bricking your residential gateway.
--
2.45.2
From cf0555f07e1a89c3e9ab3cf1af54abdf92e21c4d Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 16:24:19 -0600
Subject: [PATCH 18/31] Update README.md
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 3a77d7c..8c9bd93 100644
--- a/README.md
+++ b/README.md
@@ -61,13 +61,13 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
```
3. Extracting Certificates:
-Certificates can be extracted by the exploitation of the residential gateway to get a root shell. Here are instructions to do so with windows by [iwleonards](https://github.com/iwleonards/extract-mfg).
+ Certificates can be extracted by the exploitation of the residential gateway to get a root shell. Here are instructions to do so with windows by [iwleonards](https://github.com/iwleonards/extract-mfg).
-Be careful, you have sole responsibility for not bricking your residential gateway.
+ Be careful, you have sole responsibility for not bricking your residential gateway.
-In case they are needed, here are firmware archives:
-* [1.0.29 Firmware](https://mega.nz/file/35lBkbzC#MTrKdt57SEuz81Tn3MBKm-o_s1zv643MLmxyKILjsk8)
-* [Firmware archive](https://drive.google.com/file/d/1AcP3gbjpZOsnGTFApQOlalLzpjidUDj4/view?usp=drivesdk)
+ In case they are needed, here are firmware archives:
+ * [1.0.29 Firmware](https://mega.nz/file/35lBkbzC#MTrKdt57SEuz81Tn3MBKm-o_s1zv643MLmxyKILjsk8)
+ * [Firmware archive](https://drive.google.com/file/d/1AcP3gbjpZOsnGTFApQOlalLzpjidUDj4/view?usp=drivesdk)
4. Upload your extracted certs (see Extracting Certificates) to /conf/pfatt/wpa. You should have three files in the wpa directory as such. You may also need to match the permissions.
```
--
2.45.2
From 0c5a3da28f2308922b068cd74dbbf25bfbeba379 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 16:25:57 -0600
Subject: [PATCH 19/31] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 8c9bd93..8bd29e6 100644
--- a/README.md
+++ b/README.md
@@ -88,7 +88,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
It should look like this:

- This can also be acomplished by manually editing your pfSense /conf/config.xml file. Add /root/bin/pfatt.sh above . This method is not recommended and is frowned upon by pfSense team.
+ This can also be accomplished by manually editing your pfSense /conf/config.xml file. Add /root/bin/pfatt.sh above . This method is not recommended and is frowned upon by pfSense team.
6. Connect cables:
- `$ONT_IF` to ONT (outside)
--
2.45.2
From 95266a258d2e225a7b87ddf337cc93010ef7b12a Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 16:31:06 -0600
Subject: [PATCH 20/31] Update README.md
---
README.md | 17 +++--------------
1 file changed, 3 insertions(+), 14 deletions(-)
diff --git a/README.md b/README.md
index 8bd29e6..7276dbf 100644
--- a/README.md
+++ b/README.md
@@ -96,7 +96,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
7. Prepare for console access.
8. Reboot.
-9. pfSense will detect new interfaces on bootup. Follow the prompts on the console to configure `ngeth0` as your pfSense WAN. Your LAN interface should not normally change. However, if you moved or re-purposed your LAN interface for this setup, you'll need to re-apply any existing configuration (like your VLANs) to your new LAN interface. pfSense does not need to manage `$RG_IF` or `$ONT_IF`. I would advise not enabling those interfaces in pfSense as it can cause problems with the netgraph.
+9. pfSense will detect new interfaces on bootup. Follow the prompts on the console to configure `ngeth0` as your pfSense WAN. Your LAN interface should not normally change. However, if you moved or re-purposed your LAN interface for this setup, you'll need to re-apply any existing configuration (like your VLANs) to your new LAN interface. pfSense does not need to manage `$ONT_IF`. I would advise not enabling those interfaces in pfSense as it can cause problems with the netgraph.
10. In the webConfigurator, configure the WAN interface (`ngeth0`) to DHCP using the MAC address of your Residential Gateway.
If everything is setup correctly, netgraph should be bridging EAP traffic between the ONT and RG, tagging the WAN traffic with VLAN0, and your WAN interface configured with an IPv4 address via DHCP.
@@ -160,22 +160,11 @@ Output from `pfatt.sh` and `pfatt-5268AC.sh` can be found in `/var/log/pfatt.log
## tcpdump
-Use tcpdump to watch the authentication, vlan and dhcp bypass process (see above). Run tcpdumps on the `$ONT_IF` interface and the `$RG_IF` interface:
+Use tcpdump to watch the authentication, vlan and dhcp bypass process (see above). Run tcpdumps on the `$ONT_IF` interface:
```
tcpdump -ei $ONT_IF
-tcpdump -ei $RG_IF
```
-
-Restart your Residential Gateway. From the `$RG_IF` interface, you should see some EAPOL starts like this:
-```
-MAC (oui Unknown) > MAC (oui Unknown), ethertype EAPOL (0x888e), length 60: POL start
-```
-
-If you don't see these, make sure you're connected to the ONT port.
-
-These packets come every so often. I think the RG does some backoff / delay if doesn't immediately auth correctly. You can always reboot your RG to initiate the authentication again.
-
-If your netgraph is setup correctly, the EAP start packet from the `$RG_IF` will be bridged onto your `$ONT_IF` interface. Then you should see some more EAP packets from the `$ONT_IF` interface and `$RG_IF` interface as they negotiate 802.1/X EAP authentication.
+You should see some more EAP packets from the `$ONT_IF` interface as it negotiates 802.1/X EAP authentication.
Once that completes, watch `$ONT_IF` and `ngeth0` for DHCP traffic.
```
--
2.45.2
From 91e50a2403c817c8cb5483d88b6c89eda15618b8 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 17:28:14 -0600
Subject: [PATCH 21/31] Update README.md
---
README.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/README.md b/README.md
index 7276dbf..626a7e2 100644
--- a/README.md
+++ b/README.md
@@ -51,6 +51,9 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
```shell
ONT_IF='xx0' # NIC -> ONT / Outside
RG_ETHER_ADDR='xx:xx:xx:xx:xx:xx' # MAC address of Residential Gateway
+ CA_PEM='insert filename.pem' # File name of gateway certificate
+ CLIENT_PEM='insert filename.pem' # File name of gateway certificate
+ PRIVATE_PEM='insert filename.pem' # File name of gateway certificate
```
2. Copy `bin/pfatt.sh` to `/root/bin` (or any directory) and make executable:
--
2.45.2
From 1e8fd51835982c591e316c8ec9c296dcd5f6a27f Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 17:59:00 -0600
Subject: [PATCH 22/31] Update pfatt.sh
---
bin/pfatt.sh | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 90 insertions(+)
diff --git a/bin/pfatt.sh b/bin/pfatt.sh
index f08bfb0..e2c4fd9 100755
--- a/bin/pfatt.sh
+++ b/bin/pfatt.sh
@@ -3,6 +3,10 @@ set -e
ONT_IF='xx0'
RG_ETHER_ADDR='xx:xx:xx:xx:xx:xx'
+CA_PEM='insert filename.pem'
+CLIENT_PEM='insert filename.pem'
+PRIVATE_PEM='insert filename.pem'
+
LOG=/var/log/pfatt.log
getTimestamp(){
@@ -37,7 +41,93 @@ getTimestamp(){
echo -n "$(getTimestamp) enabling promiscuous mode on $ONT_IF... "
/sbin/ifconfig $ONT_IF promisc
echo "OK!"
+
+ # Enable this if Need to map physical port to RG MAC address:
+ # echo -n "$(getTimestamp) mapping physical port to RG MAC address... "
+ # /sbin/ifconfig $ONT_IF ether $RG_ETHER_ADDR
+ # echo "OK!"
echo "$(getTimestamp) ngeth0 should now be available to configure as your pfSense WAN"
echo "$(getTimestamp) done!"
} >> $LOG
+
+
+## Added code
+
+ echo "$(getTimestamp) starting wpa_supplicant..."
+
+ WPA_PARAMS="\
+ set eapol_version 1,\
+ set fast_reauth 1,\
+ ap_scan 0,\
+ add_network,\
+ set_network 0 ca_cert \\\"/conf/pfatt/wpa/$CA_PEM\\\",\
+ set_network 0 client_cert \\\"/conf/pfatt/wpa/$CLIENT_PEM\\\",\
+ set_network 0 eap TLS,\
+ set_network 0 eapol_flags 0,\
+ set_network 0 identity \\\"$RG_ETHER_ADDR\\\",\
+ set_network 0 key_mgmt IEEE8021X,\
+ set_network 0 phase1 \\\"allow_canned_success=1\\\",\
+ set_network 0 private_key \\\"/conf/pfatt/wpa/$PRIVATE_PEM\\\",\
+ enable_network 0\
+ "
+
+ WPA_DAEMON_CMD="/usr/sbin/wpa_supplicant -Dwired -ingeth0 -B -C /var/run/wpa_supplicant"
+ # if the above doesn't work try: WPA_DAEMON_CMD="/usr/sbin/wpa_supplicant -Dwired -i$ONT_IF -B -C /var/run/wpa_supplicant"
+
+ # kill any existing wpa_supplicant process
+ PID=$(pgrep -f "wpa_supplicant.*ngeth0")
+ if [ ${PID} > 0 ];
+ then
+ echo "$(getTimestamp) pfatt terminating existing wpa_supplicant on PID ${PID}..."
+ RES=$(kill ${PID})
+ fi
+
+ # start wpa_supplicant daemon
+ RES=$(${WPA_DAEMON_CMD})
+ PID=$(pgrep -f "wpa_supplicant.*ngeth0")
+ echo "$(getTimestamp) pfatt wpa_supplicant running on PID ${PID}..."
+
+ # Set WPA configuration parameters.
+ echo "$(getTimestamp) pfatt setting wpa_supplicant network configuration..."
+ IFS=","
+ for STR in ${WPA_PARAMS};
+ do
+ STR="$(echo -e "${STR}" | sed -e 's/^[[:space:]]*//')"
+ RES=$(eval wpa_cli ${STR})
+ done
+
+ # wait until wpa_cli has authenticated.
+ WPA_STATUS_CMD="wpa_cli status | grep 'suppPortStatus' | cut -d= -f2"
+ IP_STATUS_CMD="ifconfig ngeth0 | grep 'inet\ ' | cut -d' ' -f2"
+
+ echo "$(getTimestamp) pfatt waiting EAP for authorization..."
+
+ # TODO: blocking for bootup
+ while true;
+ do
+ WPA_STATUS=$(eval ${WPA_STATUS_CMD})
+ if [ X${WPA_STATUS} = X"Authorized" ];
+ then
+ echo "$(getTimestamp) pfatt EAP authorization completed..."
+
+ IP_STATUS=$(eval ${IP_STATUS_CMD})
+
+ if [ -z ${IP_STATUS} ] || [ ${IP_STATUS} = "0.0.0.0" ];
+ then
+ echo "$(getTimestamp) pfatt no IP address assigned, force restarting DHCP..."
+ RES=$(eval /etc/rc.d/dhclient forcerestart ngeth0)
+ IP_STATUS=$(eval ${IP_STATUS_CMD})
+ fi
+ echo "$(getTimestamp) pfatt IP address is ${IP_STATUS}..."
+ break
+ else
+ sleep 1
+ fi
+ done
+ echo "$(getTimestamp) pfatt ngeth0 should now be available to configure as your WAN..."
+ echo "$(getTimestamp) pfatt done!"
+ else
+ echo "$(getTimestamp) pfatt error: unknown EAP_MODE. '$EAP_MODE' is not valid. exiting..."
+ exit 1
+ fi
--
2.45.2
From a5c103fd5ce0458685636e53d7f58a24c818f324 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 18:12:13 -0600
Subject: [PATCH 23/31] Update pfatt.sh
---
bin/pfatt.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/bin/pfatt.sh b/bin/pfatt.sh
index e2c4fd9..0fd63c3 100755
--- a/bin/pfatt.sh
+++ b/bin/pfatt.sh
@@ -54,6 +54,7 @@ getTimestamp(){
## Added code
+{
echo "$(getTimestamp) starting wpa_supplicant..."
WPA_PARAMS="\
@@ -131,3 +132,4 @@ getTimestamp(){
echo "$(getTimestamp) pfatt error: unknown EAP_MODE. '$EAP_MODE' is not valid. exiting..."
exit 1
fi
+} >> $LOG
--
2.45.2
From 3a73f7c43feb72777dde28b96cd70dce480b7f12 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 18:16:29 -0600
Subject: [PATCH 24/31] Update pfatt.sh
---
bin/pfatt.sh | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/bin/pfatt.sh b/bin/pfatt.sh
index 0fd63c3..0927b8c 100755
--- a/bin/pfatt.sh
+++ b/bin/pfatt.sh
@@ -127,9 +127,5 @@ getTimestamp(){
fi
done
echo "$(getTimestamp) pfatt ngeth0 should now be available to configure as your WAN..."
- echo "$(getTimestamp) pfatt done!"
- else
- echo "$(getTimestamp) pfatt error: unknown EAP_MODE. '$EAP_MODE' is not valid. exiting..."
- exit 1
- fi
+ echo "$(getTimestamp) pfatt done!"
} >> $LOG
--
2.45.2
From 302477544d87a9ee46756f41d558df9ba7f17d49 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 19:25:54 -0600
Subject: [PATCH 25/31] Update pfatt.sh
---
bin/pfatt.sh | 27 +++++++++++++--------------
1 file changed, 13 insertions(+), 14 deletions(-)
diff --git a/bin/pfatt.sh b/bin/pfatt.sh
index 0927b8c..34cb2cb 100755
--- a/bin/pfatt.sh
+++ b/bin/pfatt.sh
@@ -28,8 +28,7 @@ getTimestamp(){
echo -n "$(getTimestamp) creating vlan node and interface... "
/usr/sbin/ngctl mkpeer $ONT_IF: vlan lower downstream
/usr/sbin/ngctl name $ONT_IF:lower vlan0
- /usr/sbin/ngctl mkpeer vlan0: eiface vlan0 ether
-
+ /usr/sbin/ngctl mkpeer vlan0: eiface vlan0 ether
/usr/sbin/ngctl msg vlan0: 'addfilter { vlan=0 hook="vlan0" }'
/usr/sbin/ngctl msg ngeth0: set $RG_ETHER_ADDR
echo "OK!"
@@ -47,14 +46,8 @@ getTimestamp(){
# /sbin/ifconfig $ONT_IF ether $RG_ETHER_ADDR
# echo "OK!"
- echo "$(getTimestamp) ngeth0 should now be available to configure as your pfSense WAN"
- echo "$(getTimestamp) done!"
-} >> $LOG
-
-
## Added code
-{
echo "$(getTimestamp) starting wpa_supplicant..."
WPA_PARAMS="\
@@ -77,34 +70,39 @@ getTimestamp(){
# if the above doesn't work try: WPA_DAEMON_CMD="/usr/sbin/wpa_supplicant -Dwired -i$ONT_IF -B -C /var/run/wpa_supplicant"
# kill any existing wpa_supplicant process
+ echo -n "$(getTimestamp) killing any existing wpa_supplicant process... "
PID=$(pgrep -f "wpa_supplicant.*ngeth0")
if [ ${PID} > 0 ];
then
echo "$(getTimestamp) pfatt terminating existing wpa_supplicant on PID ${PID}..."
RES=$(kill ${PID})
fi
+ echo "OK!"
# start wpa_supplicant daemon
+ echo -n "$(getTimestamp) starting wpa_supplicant daemon... "
RES=$(${WPA_DAEMON_CMD})
PID=$(pgrep -f "wpa_supplicant.*ngeth0")
echo "$(getTimestamp) pfatt wpa_supplicant running on PID ${PID}..."
# Set WPA configuration parameters.
- echo "$(getTimestamp) pfatt setting wpa_supplicant network configuration..."
+ echo -n "$(getTimestamp) pfatt setting wpa_supplicant network configuration..."
IFS=","
for STR in ${WPA_PARAMS};
do
STR="$(echo -e "${STR}" | sed -e 's/^[[:space:]]*//')"
RES=$(eval wpa_cli ${STR})
done
+ echo "OK!"
# wait until wpa_cli has authenticated.
+ echo -n "$(getTimestamp) waiting until wpa_cli has authenticated..."
WPA_STATUS_CMD="wpa_cli status | grep 'suppPortStatus' | cut -d= -f2"
IP_STATUS_CMD="ifconfig ngeth0 | grep 'inet\ ' | cut -d' ' -f2"
+ echo "OK!"
- echo "$(getTimestamp) pfatt waiting EAP for authorization..."
-
- # TODO: blocking for bootup
+ # Get authorization
+ echo "$(getTimestamp) pfatt waiting EAP for authorization..."
while true;
do
WPA_STATUS=$(eval ${WPA_STATUS_CMD})
@@ -126,6 +124,7 @@ getTimestamp(){
sleep 1
fi
done
- echo "$(getTimestamp) pfatt ngeth0 should now be available to configure as your WAN..."
- echo "$(getTimestamp) pfatt done!"
+
+ echo "$(getTimestamp) All done... ngeth0 should now be available to configure as your pfSense WAN"
+
} >> $LOG
--
2.45.2
From cc192dcf7f0f73984f17c1c37565919ce6cb5a74 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Wed, 30 Dec 2020 22:51:00 -0600
Subject: [PATCH 26/31] Update README.md
---
README.md | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 626a7e2..eccf809 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@ First, let's talk about what happens in the standard setup (without any bypass).
If you have valid certs that have been extracted from an authorized residential gateway device, you can utilize the native wpa_supplicant client in pfSense to perform 802.1X EAP-TLS authentication.
-Note that EAP-TLS authentication authorizes the device, not the subscriber. Meaning, any authorized device (BGW210) can be used to authorize the link. It does not have to match the residential gateway assigned to your account. For example, a BGW210 purchased of eBay can authorize the link. The subscriber's service is authorized separately (probably by the DHCP MAC and/or ONT serial number).
+Note that EAP-TLS authentication authorizes the device, not the subscriber. Meaning, any authorized device (e.g., BGW210) can be used to authorize the link. It does not have to match the residential gateway assigned to your account. For example, a BGW210 purchased of eBay can authorize the link. The subscriber's service is authorized separately (probably by the DHCP MAC and/or ONT serial number).
In supplicant mode, the residential gateway can be permanently disconnected. We will use netgraph to tag our traffic with VLAN0 and spoof the MAC address from the residential gateway.
@@ -51,9 +51,9 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
```shell
ONT_IF='xx0' # NIC -> ONT / Outside
RG_ETHER_ADDR='xx:xx:xx:xx:xx:xx' # MAC address of Residential Gateway
- CA_PEM='insert filename.pem' # File name of gateway certificate
- CLIENT_PEM='insert filename.pem' # File name of gateway certificate
- PRIVATE_PEM='insert filename.pem' # File name of gateway certificate
+ CA_PEM='xxx.pem' # Replace xxx with file name of gateway certificate
+ CLIENT_PEM='xxx.pem' # Replace xxx with file name of gateway certificate
+ PRIVATE_PEM='xxx.pem' # Replace xxx with file name of gateway certificate
```
2. Copy `bin/pfatt.sh` to `/root/bin` (or any directory) and make executable:
@@ -64,7 +64,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
```
3. Extracting Certificates:
- Certificates can be extracted by the exploitation of the residential gateway to get a root shell. Here are instructions to do so with windows by [iwleonards](https://github.com/iwleonards/extract-mfg).
+ Certificates can be extracted by the exploitation of the residential gateway to get a root shell. Here are instructions to do so in windows by [iwleonards](https://github.com/iwleonards/extract-mfg).
Be careful, you have sole responsibility for not bricking your residential gateway.
@@ -72,7 +72,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
* [1.0.29 Firmware](https://mega.nz/file/35lBkbzC#MTrKdt57SEuz81Tn3MBKm-o_s1zv643MLmxyKILjsk8)
* [Firmware archive](https://drive.google.com/file/d/1AcP3gbjpZOsnGTFApQOlalLzpjidUDj4/view?usp=drivesdk)
-4. Upload your extracted certs (see Extracting Certificates) to /conf/pfatt/wpa. You should have three files in the wpa directory as such. You may also need to match the permissions.
+4. Upload your extracted certs (see Extracting Certificates) to /conf/pfatt/wpa. You should have three files in the wpa directory as such. You may also need to match the permissions. Do this with `sudo chmod -R 0600 /conf/pfatt/wpa`
```
[2.4.4-RELEASE][root@pfsense.knox.lan]/conf/pfatt/wpa: ls -al
total 19
@@ -98,8 +98,11 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
- `LAN NIC` to local switch (as normal)
7. Prepare for console access.
+
8. Reboot.
+
9. pfSense will detect new interfaces on bootup. Follow the prompts on the console to configure `ngeth0` as your pfSense WAN. Your LAN interface should not normally change. However, if you moved or re-purposed your LAN interface for this setup, you'll need to re-apply any existing configuration (like your VLANs) to your new LAN interface. pfSense does not need to manage `$ONT_IF`. I would advise not enabling those interfaces in pfSense as it can cause problems with the netgraph.
+
10. In the webConfigurator, configure the WAN interface (`ngeth0`) to DHCP using the MAC address of your Residential Gateway.
If everything is setup correctly, netgraph should be bridging EAP traffic between the ONT and RG, tagging the WAN traffic with VLAN0, and your WAN interface configured with an IPv4 address via DHCP.
--
2.45.2
From d1e36a8f6f5cd3240d52735edcc8f3145d1d61e3 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Fri, 1 Jan 2021 05:03:59 -0600
Subject: [PATCH 27/31] Update pfatt.sh
---
bin/pfatt.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/bin/pfatt.sh b/bin/pfatt.sh
index 34cb2cb..ff42696 100755
--- a/bin/pfatt.sh
+++ b/bin/pfatt.sh
@@ -1,7 +1,7 @@
#!/bin/sh
set -e
-ONT_IF='xx0'
+ONT_IF='igb0'
RG_ETHER_ADDR='xx:xx:xx:xx:xx:xx'
CA_PEM='insert filename.pem'
CLIENT_PEM='insert filename.pem'
--
2.45.2
From 5e74390abb2472c05bc6f0cb98343fe4176cf5e6 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Fri, 8 Jan 2021 17:00:03 -0600
Subject: [PATCH 28/31] Update pfatt.sh
---
bin/pfatt.sh | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/bin/pfatt.sh b/bin/pfatt.sh
index ff42696..19c2f77 100755
--- a/bin/pfatt.sh
+++ b/bin/pfatt.sh
@@ -1,11 +1,11 @@
#!/bin/sh
set -e
-ONT_IF='igb0'
+ONT_IF='xxx0'
RG_ETHER_ADDR='xx:xx:xx:xx:xx:xx'
-CA_PEM='insert filename.pem'
-CLIENT_PEM='insert filename.pem'
-PRIVATE_PEM='insert filename.pem'
+CA_PEM='xxx.pem'
+CLIENT_PEM='xxx.pem'
+PRIVATE_PEM='xxx.pem'
LOG=/var/log/pfatt.log
--
2.45.2
From 490191aca1b01f02bd4faa3d586544bde1c166c3 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Sun, 16 May 2021 00:49:44 -0500
Subject: [PATCH 29/31] Updated readme
---
README.md | 46 +++++++++++++++++-----------------------------
1 file changed, 17 insertions(+), 29 deletions(-)
diff --git a/README.md b/README.md
index eccf809..8df8ab2 100644
--- a/README.md
+++ b/README.md
@@ -4,22 +4,17 @@ This repository allows bypassing the AT&T U-Verse fiber gateway using pfSense. T
The netgraph method will allow you to fully utilize your own router and fully bypass your residential gateway. It survives reboots, re-authentications, IPv6 and new DHCP leases.
-# How it Works
+# Bypass Procedure
-Before continuing to the setup, it's important to understand how this method works. This will make configuration and troubleshooting much easier.
+## Prerequisites
-## Standard Procedure
+* Local or console access to pfSense
+* pfSense 2.5.1+ running on amd64 architecture
+* Two physical network interfaces on your pfSense server
+* The MAC address of your EAP-TLS Identity (from residential gateway used for certificates)
+* Valid certificates to perform EAP-TLS authentication (see Extracting Certificates)
-First, let's talk about what happens in the standard setup (without any bypass). At a high level, the following process happens when the gateway boots up:
-
-1. All traffic on the ONT is protected with [802.1/X](https://en.wikipedia.org/wiki/IEEE_802.1X). So in order to talk to anything, the Router Gateway must first perform the [authentication procedure](https://en.wikipedia.org/wiki/IEEE_802.1X#Typical_authentication_progression). This process uses a unique certificate that is hardcoded on your residential gateway.
-2. Once the authentication completes, you'll be able to properly "talk" to the outside. However, all of your traffic will need to be tagged with VLAN ID 0 (a.k.a. VLAN Priority Tagging[[1]](https://wikipedia.org/wiki/IEEE_802.1Q#Frame_format)[[2]](https://www.cisco.com/c/en/us/td/docs/switches/connectedgrid/cg-switch-sw-master/software/configuration/guide/vlan0/b_vlan_0.html)) before the IP gateway will respond.
-3. Once traffic is tagged with VLAN0, your residential gateway needs to request a public IPv4 address via DHCP. The MAC address in the DHCP request needs to match that of the MAC address that's assigned to your AT&T account. Other than that, there's nothing special about the DCHPv4 handshake.
-4. After the DHCP lease is issued, the WAN setup is complete. Your LAN traffic is then NAT'd and routed to the outside.
-
-## Bypass Procedure: Supplicant Method
-
-### Notes
+## Notes
If you have valid certs that have been extracted from an authorized residential gateway device, you can utilize the native wpa_supplicant client in pfSense to perform 802.1X EAP-TLS authentication.
@@ -27,7 +22,9 @@ Note that EAP-TLS authentication authorizes the device, not the subscriber. Mean
In supplicant mode, the residential gateway can be permanently disconnected. We will use netgraph to tag our traffic with VLAN0 and spoof the MAC address from the residential gateway.
-### Bypass Procedure
+## High Level Steps
+
+Before continuing to the setup, it's important to understand how this method works. This will make configuration and troubleshooting much easier.
1. Netgraph creates an interface for us called ngeth0. This interface is connected to vlan0 which is configured to tag all traffic as VLAN0 before sending it on to the ONT interface.
2. wpa_supplicant binds to ngeth0 and initiates 802.1X EAP-TLS authentication
@@ -37,15 +34,7 @@ In supplicant mode, the residential gateway can be permanently disconnected. We
See the comments and commands bin/pfatt.sh for details about the netgraph setup.
-## Prerequisites
-
-* Local or console access to pfSense
-* pfSense 2.4.5 running on amd64 architecture
-* Two physical network interfaces on your pfSense server
-* The MAC address of your EAP-TLS Identity (from residential gateway used for certificates)
-* Valid certificates to perform EAP-TLS authentication (see Extracting Certificates)
-
-## Install
+## Detailed Steps
1. Edit the following configuration variables in `bin/pfatt.sh` as noted below. `$RG_ETHER_ADDR` should match the MAC address of your Residential Gateway. AT&T will only grant a DHCP lease to the MAC they assigned your device.
```shell
@@ -74,7 +63,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
4. Upload your extracted certs (see Extracting Certificates) to /conf/pfatt/wpa. You should have three files in the wpa directory as such. You may also need to match the permissions. Do this with `sudo chmod -R 0600 /conf/pfatt/wpa`
```
- [2.4.4-RELEASE][root@pfsense.knox.lan]/conf/pfatt/wpa: ls -al
+ [2.5.1-RELEASE][root@pfsense.knox.lan]/conf/pfatt/wpa: ls -al
total 19
drwxr-xr-x 2 root wheel 5 Jan 10 16:32 .
drwxr-xr-x 4 root wheel 5 Jan 10 16:33 ..
@@ -83,7 +72,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
-rw------- 1 root wheel 887 Jan 10 16:32 private.pem
```
-5. To start pfatt.sh script at the beginning of the boot process pfSense team recomments you use a package called shellcmd. Use pfSense package installer to find and install it. Once you have shellcmd package installed you can find it in Services > Shellcmd. Now add a new command and fill it up accordingly (make sure to select earlyshellcmd from a dropdown):
+5. To start pfatt.sh script at the beginning of the boot process pfSense team recommends you use a package called shellcmd. Use pfSense package installer to find and install it. Once you have shellcmd package installed you can find it in Services > Shellcmd. Now add a new command and fill it up accordingly (make sure to select earlyshellcmd from a dropdown):
```
Command: /root/bin/pfatt.sh
Shellcmd Type: earlyshellcmd
@@ -91,7 +80,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
It should look like this:

- This can also be accomplished by manually editing your pfSense /conf/config.xml file. Add /root/bin/pfatt.sh above . This method is not recommended and is frowned upon by pfSense team.
+ This can also be accomplished by manually editing your pfSense /conf/config.xml file. Add /root/bin/pfatt.sh above. This method is not recommended and is frowned upon by pfSense team.
6. Connect cables:
- `$ONT_IF` to ONT (outside)
@@ -111,7 +100,7 @@ If everything is setup correctly, netgraph should be bridging EAP traffic betwee
Once your netgraph setup is in place and working, there aren't any netgraph changes required to the setup to get IPv6 working. These instructions can also be followed with a different bypass method other than the netgraph method. Big thanks to @pyrodex1980's [post](http://www.dslreports.com/forum/r32118263-) on DSLReports for sharing your notes.
-This setup assumes you have a fairly recent version of pfSense. I'm using 2.4.5.
+This setup assumes you have a fairly recent version of pfSense. I'm using 2.5.1.
**DUID Setup**
@@ -220,7 +209,7 @@ There are 5 total nodes:
```
3. Inspect the various nodes and hooks.
-### Reset netgraph
+## Reset netgraph
`pfatt.sh` expects a clean netgraph before it can be ran. To reset a broken netgraph state, try this:
@@ -236,6 +225,5 @@ In some circumstances, pfSense may alter your netgraph. This is especially true
# Credits
-- [MonkWho](https://github.com/MonkWho/pfatt) - For the code that was forked. Other credits on his page
- [aus](https://github.com/aus) - 31m9ujhbsRRZs4S64njEkw8ksFSTTDcsRU - For the original work
- [iwleonards](https://github.com/iwleonards/extract-mfg) - Residential gateway certificate extraction
--
2.45.2
From 204abbe605e5c2813311b7be8df69164c9be58ef Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Sun, 20 Feb 2022 10:51:11 -0600
Subject: [PATCH 30/31] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 8df8ab2..267db10 100644
--- a/README.md
+++ b/README.md
@@ -58,7 +58,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
Be careful, you have sole responsibility for not bricking your residential gateway.
In case they are needed, here are firmware archives:
- * [1.0.29 Firmware](https://mega.nz/file/35lBkbzC#MTrKdt57SEuz81Tn3MBKm-o_s1zv643MLmxyKILjsk8)
+ * [1.0.29 Firmware](https://drive.google.com/file/d/1VYxpTu9m3cLIv8vCTzs_ccFAblJjH8c0/view?usp=sharing)
* [Firmware archive](https://drive.google.com/file/d/1AcP3gbjpZOsnGTFApQOlalLzpjidUDj4/view?usp=drivesdk)
4. Upload your extracted certs (see Extracting Certificates) to /conf/pfatt/wpa. You should have three files in the wpa directory as such. You may also need to match the permissions. Do this with `sudo chmod -R 0600 /conf/pfatt/wpa`
--
2.45.2
From afb48421c818710214aac655f4a38e09d5e5b360 Mon Sep 17 00:00:00 2001
From: Greg Revelle <31642433+grevelle@users.noreply.github.com>
Date: Sun, 20 Feb 2022 11:02:58 -0600
Subject: [PATCH 31/31] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 267db10..bd15927 100644
--- a/README.md
+++ b/README.md
@@ -63,7 +63,7 @@ See the comments and commands bin/pfatt.sh for details about the netgraph setup.
4. Upload your extracted certs (see Extracting Certificates) to /conf/pfatt/wpa. You should have three files in the wpa directory as such. You may also need to match the permissions. Do this with `sudo chmod -R 0600 /conf/pfatt/wpa`
```
- [2.5.1-RELEASE][root@pfsense.knox.lan]/conf/pfatt/wpa: ls -al
+ [2.5.2-RELEASE][root@pfsense.knox.lan]/conf/pfatt/wpa: ls -al
total 19
drwxr-xr-x 2 root wheel 5 Jan 10 16:32 .
drwxr-xr-x 4 root wheel 5 Jan 10 16:33 ..
@@ -100,7 +100,7 @@ If everything is setup correctly, netgraph should be bridging EAP traffic betwee
Once your netgraph setup is in place and working, there aren't any netgraph changes required to the setup to get IPv6 working. These instructions can also be followed with a different bypass method other than the netgraph method. Big thanks to @pyrodex1980's [post](http://www.dslreports.com/forum/r32118263-) on DSLReports for sharing your notes.
-This setup assumes you have a fairly recent version of pfSense. I'm using 2.5.1.
+This setup assumes you have a fairly recent version of pfSense. I'm using 2.5.2.
**DUID Setup**
--
2.45.2