55a12776ebadf184ad151ff068b7aa4c1a86f916
Home.md
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | ## tech |
| 4 | 4 | ### everyday tools |
| 5 | 5 | * [vim](/software/vim) |
| 6 | -* [git](/software/git) |
|
| 6 | +* [git](/vcs/git) |
|
| 7 | 7 | * [tmux](/software/tmux) |
| 8 | 8 | * [more...](/tech-index#everyday-tools) |
| 9 | 9 |
networking/envoy.md
| ... | ... | @@ -0,0 +1,36 @@ |
| 1 | +# envoy |
|
| 2 | + |
|
| 3 | +https://envoyproxy.io |
|
| 4 | + |
|
| 5 | +## envoy architecture |
|
| 6 | +[1][] |
|
| 7 | + |
|
| 8 | +### inbound |
|
| 9 | + |
|
| 10 | + [ listener ] |
|
| 11 | + └─┐ |
|
| 12 | + ↓ |
|
| 13 | + [ filter chains ] |
|
| 14 | + └─┐ |
|
| 15 | + ↓ |
|
| 16 | + [ filter ] |
|
| 17 | + ├ tcp proxy |
|
| 18 | + └ http connection manager |
|
| 19 | + |
|
| 20 | +### outbound |
|
| 21 | + |
|
| 22 | + [ clusters ] |
|
| 23 | + └─┐ |
|
| 24 | + ↓ |
|
| 25 | + [ endpoints] |
|
| 26 | + ├ static cluster (load assignment) |
|
| 27 | + └ dynamic cluster (eds_assignment) |
|
| 28 | + |
|
| 29 | +## protocol specific routing |
|
| 30 | + |
|
| 31 | + [ envoy ] |
|
| 32 | + │ |
|
| 33 | + ┌──────┴──────┐ |
|
| 34 | + ↓ ↓ |
|
| 35 | + / /api |
|
| 36 | + [ front end ] [ api ] |
networking/firewall-cmd.md
| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | +# firewall-cmd |
|
| 2 | + |
|
| 3 | +## add / remove port |
|
| 4 | +``` |
|
| 5 | +firewall-cmd --permanent --add-port=<port_num>/<protocol> |
|
| 6 | +firewall-cmd --permanent --remove-port=<port_num>/<protocol> |
|
| 7 | + |
|
| 8 | +firewall-cmd --permanent --add-port=22/tcp |
|
| 9 | +firewall-cmd --permanent --remove-port=22/tcp |
|
| 10 | +``` |
|
| 11 | + |
|
| 12 | +## open port on specific ip |
|
| 13 | +[serverfault answer][] |
|
| 14 | + |
|
| 15 | +[serverfault answer]: https://serverfault.com/questions/684602/how-to-open-port-for-a-specific-ip-address-with-firewall-cmd-on-centos#684603 |
networking/firewalls.md
| ... | ... | @@ -0,0 +1,5 @@ |
| 1 | +# firewalls |
|
| 2 | + |
|
| 3 | +## linux |
|
| 4 | +- [iptables](iptables) |
|
| 5 | +- [firewall cmd](firewall-cmd) |
networking/haproxy.md
| ... | ... | @@ -0,0 +1,5 @@ |
| 1 | +# haproxy |
|
| 2 | + |
|
| 3 | +[config_guide][] |
|
| 4 | + |
|
| 5 | +[config_guide]: http://cbonte.github.io/haproxy-dconv/2.4/configuration.html |
networking/mosh.md
| ... | ... | @@ -0,0 +1,27 @@ |
| 1 | +# mosh |
|
| 2 | + |
|
| 3 | +_mosh must be installed on client and server_ |
|
| 4 | + |
|
| 5 | +## install |
|
| 6 | +``` |
|
| 7 | +yum install mosh |
|
| 8 | + |
|
| 9 | +apt-get install mosh |
|
| 10 | +``` |
|
| 11 | + |
|
| 12 | +## usage |
|
| 13 | +on server allow port through firewall |
|
| 14 | +``` |
|
| 15 | +firewall-cmd --permanent --add-port=60001/udp |
|
| 16 | +firewall-cmd --reload |
|
| 17 | +``` |
|
| 18 | + |
|
| 19 | +on client |
|
| 20 | +``` |
|
| 21 | +mosh user@host |
|
| 22 | +``` |
|
| 23 | + |
|
| 24 | +if ssh is listening on different port |
|
| 25 | +``` |
|
| 26 | +mosh --ssh="ssh -p 22666" user@host |
|
| 27 | +``` |
networking/openvpn.md
| ... | ... | @@ -0,0 +1,31 @@ |
| 1 | +# openvpn |
|
| 2 | + |
|
| 3 | +## setup server |
|
| 4 | +``` |
|
| 5 | +sudo apt-get update && sudo apt-get upgrade |
|
| 6 | +sudo apt-get install openvpn easy-rsa |
|
| 7 | +``` |
|
| 8 | +... all same until /etc/openvpn/easy-rsa/keys |
|
| 9 | +``` |
|
| 10 | +cd /etc/openvpn/easy-rsa/ |
|
| 11 | +cp vars.example vars |
|
| 12 | +vi vars |
|
| 13 | +``` |
|
| 14 | +- uncomment and modify following lines |
|
| 15 | +``` |
|
| 16 | +#set_var EASYRSA_REQ_COUNTRY "US" |
|
| 17 | +#set_var EASYRSA_REQ_PROVINCE "California" |
|
| 18 | +#set_var EASYRSA_REQ_CITY "San Francisco" |
|
| 19 | +#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co" |
|
| 20 | +#set_var EASYRSA_REQ_EMAIL "me@example.net" |
|
| 21 | +#set_var EASYRSA_REQ_OU "My Organizational Unit" |
|
| 22 | +``` |
|
| 23 | +- save and close |
|
| 24 | +``` |
|
| 25 | +./easyrsa init-pki |
|
| 26 | +``` |
|
| 27 | + |
|
| 28 | +when service starts and waits for password in the background use this to enter password |
|
| 29 | +``` |
|
| 30 | +sudo systemd-tty-ask-password-agent --query |
|
| 31 | +``` |
networking/subnet_cheatsheet.md
| ... | ... | @@ -0,0 +1,263 @@ |
| 1 | +# subnet cheatsheet |
|
| 2 | + |
|
| 3 | +https://oav.net/mirrors/cidr.html |
|
| 4 | + |
|
| 5 | +``` |
|
| 6 | +Netmask Netmask (binary) CIDR Notes |
|
| 7 | +_____________________________________________________________________________ |
|
| 8 | +255.255.255.255 11111111.11111111.11111111.11111111 /32 Host (single addr) |
|
| 9 | +255.255.255.254 11111111.11111111.11111111.11111110 /31 Unuseable |
|
| 10 | +255.255.255.252 11111111.11111111.11111111.11111100 /30 2 useable |
|
| 11 | +255.255.255.248 11111111.11111111.11111111.11111000 /29 6 useable |
|
| 12 | +255.255.255.240 11111111.11111111.11111111.11110000 /28 14 useable |
|
| 13 | +255.255.255.224 11111111.11111111.11111111.11100000 /27 30 useable |
|
| 14 | +255.255.255.192 11111111.11111111.11111111.11000000 /26 62 useable |
|
| 15 | +255.255.255.128 11111111.11111111.11111111.10000000 /25 126 useable |
|
| 16 | +255.255.255.0 11111111.11111111.11111111.00000000 /24 "Class C" 254 useable |
|
| 17 | + |
|
| 18 | +255.255.254.0 11111111.11111111.11111110.00000000 /23 2 Class C's |
|
| 19 | +255.255.252.0 11111111.11111111.11111100.00000000 /22 4 Class C's |
|
| 20 | +255.255.248.0 11111111.11111111.11111000.00000000 /21 8 Class C's |
|
| 21 | +255.255.240.0 11111111.11111111.11110000.00000000 /20 16 Class C's |
|
| 22 | +255.255.224.0 11111111.11111111.11100000.00000000 /19 32 Class C's |
|
| 23 | +255.255.192.0 11111111.11111111.11000000.00000000 /18 64 Class C's |
|
| 24 | +255.255.128.0 11111111.11111111.10000000.00000000 /17 128 Class C's |
|
| 25 | +255.255.0.0 11111111.11111111.00000000.00000000 /16 "Class B" |
|
| 26 | + |
|
| 27 | +255.254.0.0 11111111.11111110.00000000.00000000 /15 2 Class B's |
|
| 28 | +255.252.0.0 11111111.11111100.00000000.00000000 /14 4 Class B's |
|
| 29 | +255.248.0.0 11111111.11111000.00000000.00000000 /13 8 Class B's |
|
| 30 | +255.240.0.0 11111111.11110000.00000000.00000000 /12 16 Class B's |
|
| 31 | +255.224.0.0 11111111.11100000.00000000.00000000 /11 32 Class B's |
|
| 32 | +255.192.0.0 11111111.11000000.00000000.00000000 /10 64 Class B's |
|
| 33 | +255.128.0.0 11111111.10000000.00000000.00000000 /9 128 Class B's |
|
| 34 | +255.0.0.0 11111111.00000000.00000000.00000000 /8 "Class A" |
|
| 35 | + |
|
| 36 | +254.0.0.0 11111110.00000000.00000000.00000000 /7 |
|
| 37 | +252.0.0.0 11111100.00000000.00000000.00000000 /6 |
|
| 38 | +248.0.0.0 11111000.00000000.00000000.00000000 /5 |
|
| 39 | +240.0.0.0 11110000.00000000.00000000.00000000 /4 |
|
| 40 | +224.0.0.0 11100000.00000000.00000000.00000000 /3 |
|
| 41 | +192.0.0.0 11000000.00000000.00000000.00000000 /2 |
|
| 42 | +128.0.0.0 10000000.00000000.00000000.00000000 /1 |
|
| 43 | +0.0.0.0 00000000.00000000.00000000.00000000 /0 IP space |
|
| 44 | +``` |
|
| 45 | + |
|
| 46 | +``` |
|
| 47 | + Net Host Total |
|
| 48 | +Net Addr Addr Addr Number |
|
| 49 | +Class Range NetMask Bits Bits of hosts |
|
| 50 | +---------------------------------------------------------- |
|
| 51 | +A 0-127 255.0.0.0 8 24 16777216 (i.e. 114.0.0.0) |
|
| 52 | +B 128-191 255.255.0.0 16 16 65536 (i.e. 150.0.0.0) |
|
| 53 | +C 192-254 255.255.255.0 24 8 256 (i.e. 199.0.0.0) |
|
| 54 | +D 224-239 (multicast) |
|
| 55 | +E 240-255 (reserved) |
|
| 56 | +F 208-215 255.255.255.240 28 4 16 |
|
| 57 | +G 216/8 ARIN - North America |
|
| 58 | +G 217/8 RIPE NCC - Europe |
|
| 59 | +G 218-219/8 APNIC |
|
| 60 | +H 220-221 255.255.255.248 29 3 8 (reserved) |
|
| 61 | +K 222-223 255.255.255.254 31 1 2 (reserved) |
|
| 62 | +(ref: RFC1375 & http://www.iana.org/assignments/ipv4-address-space ) |
|
| 63 | +( http://www.iana.org/numbers.htm ) |
|
| 64 | +---------------------------------------------------------- |
|
| 65 | +``` |
|
| 66 | + |
|
| 67 | +The current list of special use prefixes: |
|
| 68 | +``` |
|
| 69 | + 0.0.0.0/8 |
|
| 70 | + 127.0.0.0/8 |
|
| 71 | + 192.0.2.0/24 |
|
| 72 | + 10.0.0.0/8 |
|
| 73 | + 172.16.0.0/12 |
|
| 74 | + 192.168.0.0/16 |
|
| 75 | + 169.254.0.0/16 |
|
| 76 | + all D/E space |
|
| 77 | +``` |
|
| 78 | +- (ref: RFC1918 http://www.rfc-editor.org/rfc/rfc1918.txt ) |
|
| 79 | +- ( or ftp://ftp.isi.edu/in-notes/rfc1918.txt ) |
|
| 80 | +- (rfc search: http://www.rfc-editor.org/rfcsearch.html ) |
|
| 81 | +- ( http://www.ietf.org/ietf/1id-abstracts.txt ) |
|
| 82 | +- ( http://www.ietf.org/shadow.html ) |
|
| 83 | + |
|
| 84 | + |
|
| 85 | +Martians: (updates at: www.iana.org/assignments/ipv4-address-space ) |
|
| 86 | +``` |
|
| 87 | + no ip source-route |
|
| 88 | + access-list 100 deny ip host 0.0.0.0 any |
|
| 89 | + deny ip 0.0.0.0 0.255.255.255 any log ! antispoof |
|
| 90 | + deny ip 0.0.0.0 0.255.255.255 0.0.0.0 255.255.255.255 ! antispoof |
|
| 91 | + deny ip any 255.255.255.128 0.0.0.127 ! antispoof |
|
| 92 | + deny ip host 0.0.0.0 any log ! antispoof |
|
| 93 | + deny ip host [router intf] [router intf] ! antispoof |
|
| 94 | + deny ip xxx.xxx.xxx.0 0.0.0.255 any log ! lan area |
|
| 95 | + deny ip 0/8 0.255.255.255 any log ! IANA - Reserved |
|
| 96 | + deny ip 1/8 0.255.255.255 any log ! IANA - Reserved |
|
| 97 | + deny ip 2/8 0.255.255.255 any log ! IANA - Reserved |
|
| 98 | + deny ip 5/8 0.255.255.255 any log ! IANA - Reserved |
|
| 99 | + deny ip 7/8 0.255.255.255 any log ! IANA - Reserved |
|
| 100 | + deny ip 10.0.0.0 0.255.255.255 any log ! IANA - Private Use |
|
| 101 | + deny ip 23/8 0.255.255.255 any log ! IANA - Reserved |
|
| 102 | + deny ip 27/8 0.255.255.255 any log ! IANA - Reserved |
|
| 103 | + deny ip 31/8 0.255.255.255 any log ! IANA - Reserved |
|
| 104 | + deny ip 36-37/8 0.255.255.255 any log ! IANA - Reserved |
|
| 105 | + deny ip 39/8 0.255.255.255 any log ! IANA - Reserved |
|
| 106 | + deny ip 41-42/8 0.255.255.255 any log ! IANA - Reserved |
|
| 107 | + deny ip 50/8 0.255.255.255 any log ! IANA - Reserved |
|
| 108 | + deny ip 58-60/8 0.255.255.255 any log ! IANA - Reserved |
|
| 109 | + deny ip 69-79/8 0.255.255.255 any log ! IANA - Reserved |
|
| 110 | + deny ip 82-95/8 0.255.255.255 any log ! IANA - Reserved |
|
| 111 | + deny ip 96-126/8 0.255.255.255 any log ! IANA - Reserved |
|
| 112 | + deny ip 127/8 0.255.255.255 any log ! IANA - Reserved |
|
| 113 | + deny ip 169.254.0.0 0.0.255.255 any log ! link-local network |
|
| 114 | + deny ip 172.16.0.0 0.15.255.255 any log ! reserved |
|
| 115 | + deny ip 192.168.0.0 0.0.255.255 any log ! reserved |
|
| 116 | + deny ip 192.0.2.0 0.0.0.255 any log ! test network |
|
| 117 | + deny ip 197/8 0.255.255.255 any log ! IANA - Reserved |
|
| 118 | + deny ip 220/8 0.255.255.255 any log ! IANA - Reserved |
|
| 119 | + deny ip 222-223/8 0.255.255.255 any log ! IANA - Reserved |
|
| 120 | + deny ip 224.0.0.0 31.255.255.255 any log ! multicast |
|
| 121 | + deny ip 224.0.0.0 15.255.255.255 any log ! unless MBGP-learned routes |
|
| 122 | + deny ip 224-239/8 0.255.255.255 any log ! IANA - Multicast |
|
| 123 | + deny ip 240-255/8 0.255.255.255 any log ! IANA - Reserved |
|
| 124 | +``` |
|
| 125 | + |
|
| 126 | +``` |
|
| 127 | +filtered source addresses |
|
| 128 | + 0/8 ! broadcast |
|
| 129 | + 10/8 ! RFC 1918 private |
|
| 130 | + 127/8 ! loopback |
|
| 131 | + 169.254.0/16 ! link local |
|
| 132 | + 172.16.0.0/12 ! RFC 1918 private |
|
| 133 | + 192.0.2.0/24 ! TEST-NET |
|
| 134 | + 192.168.0/16 ! RFC 1918 private |
|
| 135 | + 224.0.0.0/4 ! class D multicast |
|
| 136 | + 240.0.0.0/5 ! class E reserved |
|
| 137 | + 248.0.0.0/5 ! reserved |
|
| 138 | + 255.255.255.255/32 ! broadcast |
|
| 139 | +``` |
|
| 140 | + |
|
| 141 | +ARIN administrated blocks: (http://www.arin.net/regserv/IPStats.html) |
|
| 142 | +``` |
|
| 143 | + 24.0.0.0/8 (portions of) |
|
| 144 | + 63.0.0.0/8 |
|
| 145 | + 64.0.0.0/8 |
|
| 146 | + 65.0.0.0/8 |
|
| 147 | + 66.0.0.0/8 |
|
| 148 | + 196.0.0.0/8 |
|
| 149 | + 198.0.0.0/8 |
|
| 150 | + 199.0.0.0/8 |
|
| 151 | + 200.0.0.0/8 |
|
| 152 | + 204.0.0.0/8 |
|
| 153 | + 205.0.0.0/8 |
|
| 154 | + 206.0.0.0/8 |
|
| 155 | + 207.0.0.0/8 |
|
| 156 | + 208.0.0.0/8 |
|
| 157 | + 209.0.0.0/8 |
|
| 158 | + 216.0.0.0/8 |
|
| 159 | +``` |
|
| 160 | +---------------------------------------------------------- |
|
| 161 | + |
|
| 162 | +well known ports: (rfc1700.txt) |
|
| 163 | + - www.iana.org/assignments/port-numbers |
|
| 164 | + |
|
| 165 | +protocol numbers: |
|
| 166 | + - www.iana.org/assignments/protocol-numbers |
|
| 167 | + - www.iana.org/numbers.htm |
|
| 168 | + |
|
| 169 | +ICMP(Types/Codes) |
|
| 170 | +``` |
|
| 171 | + Testing Destination Reachability & Status |
|
| 172 | + (0/0) Echo-Reply |
|
| 173 | + (8/0) Echo |
|
| 174 | + Unreachable Destinations |
|
| 175 | + (3/0) Network Unreachable |
|
| 176 | + (3/1) Host Unreachable |
|
| 177 | + (3/2) Protocol Unreachable |
|
| 178 | + (3/3) Port Unreachable |
|
| 179 | + (3/4) Fragmentaion Needed and DF set (Pkt too big) |
|
| 180 | + (3/5) Source Route Failed |
|
| 181 | + (3/6) Network Unknown |
|
| 182 | + (3/7) Host Unknown |
|
| 183 | + (3/9) DOD Net Prohibited |
|
| 184 | + (3/10) DOD Host Prohibited |
|
| 185 | + (3/11) Net TOS Unreachable |
|
| 186 | + (3/12) Host TOS Unreachable |
|
| 187 | + (3/13) Administratively Prohibited |
|
| 188 | + (3/14) Host Precedence Unreachable |
|
| 189 | + (3/15) Precedence Unreachable |
|
| 190 | + Flow Control |
|
| 191 | + (4/0) Source-Quench [RFC 1016] |
|
| 192 | + Route Change Requests from Gateways |
|
| 193 | + (5/0) Redirect Datagrams for the Net |
|
| 194 | + (5/1) Redirect Datagrams for the Host |
|
| 195 | + (5/2) Redirect Datagrams for the TOS and Net |
|
| 196 | + (5/3) Redirect Datagrams for the TOS and Host |
|
| 197 | + Router |
|
| 198 | + (6/-) Alternate-Address |
|
| 199 | + (9/0) Router-Advertisement |
|
| 200 | + (10/0) Router-Solicitation |
|
| 201 | + Detecting Circular or Excessively Long Routes |
|
| 202 | + (11/0) Time to Live Count Exceeded |
|
| 203 | + (11/1) Fragment Reassembly Time Exceeded |
|
| 204 | + Reporting Incorrect Datagram Headers |
|
| 205 | + (12/0) Parameter-Problem |
|
| 206 | + (12/1) Option Missing |
|
| 207 | + (12/2) No Room for Option |
|
| 208 | + Clock Synchronization and Transit Time Estimation |
|
| 209 | + (13/0) Timestamp-Request |
|
| 210 | + (14/0) Timestamp-Reply |
|
| 211 | + Obtaining a Network Address (RARP Alternative) |
|
| 212 | + (15/0) Information-Request |
|
| 213 | + (16/0) Information-Reply |
|
| 214 | + Obtaining a Subnet Mask [RFC 950] |
|
| 215 | + (17/0) Address Mask-Request |
|
| 216 | + (18/0) Address Mask-Reply |
|
| 217 | + Other |
|
| 218 | + (30/0) Traceroute |
|
| 219 | + (31/0) Conversion-Error |
|
| 220 | + (32/0) Mobile-Redirect |
|
| 221 | +``` |
|
| 222 | + |
|
| 223 | +Ref: [RFC 792] [RFC 896] [RFC 950] [RFC 1016] |
|
| 224 | + www.cisco.com/univercd/cc/td/doc/product/lan/cat6000/sw_5_3/cofigide/qos.htm#19774 |
|
| 225 | + |
|
| 226 | + |
|
| 227 | + |
|
| 228 | +``` |
|
| 229 | +Decimal system Prefix's |
|
| 230 | + Factor Exponent Prefix |
|
| 231 | +--------------------------------------------------- |
|
| 232 | + 1 000 000 000 000 000 000 000 000...10^24....yotta |
|
| 233 | + 1 000 000 000 000 000 000 000...10^21....zetta |
|
| 234 | + 1 000 000 000 000 000 000...10^18....exa |
|
| 235 | + 1 000 000 000 000 000...10^15....peta |
|
| 236 | + 1 000 000 000 000...10^12....tera |
|
| 237 | + 1 000 000 000...10^9.....giga |
|
| 238 | + 1 000 000...10^6.....mega |
|
| 239 | + 1 000...10^3.....kilo |
|
| 240 | + 100...10^2.....hecto |
|
| 241 | + 10...10^1.....deka |
|
| 242 | + 0.1...10^-1....deci |
|
| 243 | + 0.01...10^-2....centi |
|
| 244 | + 0.001...10^-3....milli |
|
| 245 | + 0.000 001...10^-6....micro |
|
| 246 | + 0.000 000 001...10^-9....nano |
|
| 247 | + 0.000 000 000 001...10^-12...pico |
|
| 248 | + 0.000 000 000 000 001...10^-15...femto |
|
| 249 | + 0.000 000 000 000 000 001...10^-18...atto |
|
| 250 | + 0.000 000 000 000 000 000 001...10^-21...zepto |
|
| 251 | + 0.000 000 000 000 000 000 000 001...10^-24...yocto |
|
| 252 | +--------------------------------------------------- |
|
| 253 | + |
|
| 254 | +``` |
|
| 255 | +- Convert Fahrenheit <> Celsius: |
|
| 256 | + - Celsius = (Fahrenheit - 32) / 1.8 |
|
| 257 | + - Fahrenheit = (Celsius * 1.8) + 32 |
|
| 258 | + |
|
| 259 | + |
|
| 260 | +last updated: 4jul02 |
|
| 261 | + |
|
| 262 | + |
|
| 263 | + |
networking/wifi_connect.md
| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | + |
|
| 2 | +``` |
|
| 3 | +ip link show wlp2s0 |
|
| 4 | +ip link set wlp2s0 up |
|
| 5 | +iw wlp2s0 link |
|
| 6 | +sudo iw wlp2s0 scan | grep -i ssid |
|
| 7 | +ps -ef | grep wpa_supplicant |
|
| 8 | +sudo kill -9 <pid> |
|
| 9 | +connect lib/doc/wifi/home ; sudo dhclient wlp2s0 |
|
| 10 | +``` |
software/docker.md
| ... | ... | @@ -1,17 +0,0 @@ |
| 1 | -# docker |
|
| 2 | - |
|
| 3 | -## pull files from inside container |
|
| 4 | -``` |
|
| 5 | -docker cp <container_id>:/path/to/file /path/to/save |
|
| 6 | -``` |
|
| 7 | - |
|
| 8 | -## clean up old images |
|
| 9 | -``` |
|
| 10 | -docker rmi -f $(docker images --filter "dangling=true" -q) |
|
| 11 | -docker image prune |
|
| 12 | -``` |
|
| 13 | - |
|
| 14 | - |
|
| 15 | -## ref |
|
| 16 | -- :1: https://stackoverflow.com/questions/44027873/how-to-create-a-new-docker-image-from-a-running-container-on-amazon |
|
| 17 | -- :2: https://stackoverflow.com/questions/43699368/configure-docker-daemon-port-to-enable-docker-apis/43713435#43713435 |
software/envoy.md
| ... | ... | @@ -1,36 +0,0 @@ |
| 1 | -# envoy |
|
| 2 | - |
|
| 3 | -https://envoyproxy.io |
|
| 4 | - |
|
| 5 | -## envoy architecture |
|
| 6 | -[1][] |
|
| 7 | - |
|
| 8 | -### inbound |
|
| 9 | - |
|
| 10 | - [ listener ] |
|
| 11 | - └─┐ |
|
| 12 | - ↓ |
|
| 13 | - [ filter chains ] |
|
| 14 | - └─┐ |
|
| 15 | - ↓ |
|
| 16 | - [ filter ] |
|
| 17 | - ├ tcp proxy |
|
| 18 | - └ http connection manager |
|
| 19 | - |
|
| 20 | -### outbound |
|
| 21 | - |
|
| 22 | - [ clusters ] |
|
| 23 | - └─┐ |
|
| 24 | - ↓ |
|
| 25 | - [ endpoints] |
|
| 26 | - ├ static cluster (load assignment) |
|
| 27 | - └ dynamic cluster (eds_assignment) |
|
| 28 | - |
|
| 29 | -## protocol specific routing |
|
| 30 | - |
|
| 31 | - [ envoy ] |
|
| 32 | - │ |
|
| 33 | - ┌──────┴──────┐ |
|
| 34 | - ↓ ↓ |
|
| 35 | - / /api |
|
| 36 | - [ front end ] [ api ] |
software/firewall-cmd.md
| ... | ... | @@ -1,15 +0,0 @@ |
| 1 | -# firewall-cmd |
|
| 2 | - |
|
| 3 | -## add / remove port |
|
| 4 | -``` |
|
| 5 | -firewall-cmd --permanent --add-port=<port_num>/<protocol> |
|
| 6 | -firewall-cmd --permanent --remove-port=<port_num>/<protocol> |
|
| 7 | - |
|
| 8 | -firewall-cmd --permanent --add-port=22/tcp |
|
| 9 | -firewall-cmd --permanent --remove-port=22/tcp |
|
| 10 | -``` |
|
| 11 | - |
|
| 12 | -## open port on specific ip |
|
| 13 | -[serverfault answer][] |
|
| 14 | - |
|
| 15 | -[serverfault answer]: https://serverfault.com/questions/684602/how-to-open-port-for-a-specific-ip-address-with-firewall-cmd-on-centos#684603 |
software/firewalls.md
| ... | ... | @@ -1,5 +0,0 @@ |
| 1 | -# firewalls |
|
| 2 | - |
|
| 3 | -## linux |
|
| 4 | -- [iptables](iptables) |
|
| 5 | -- [firewall cmd](firewall-cmd) |
software/git.md
| ... | ... | @@ -1,105 +0,0 @@ |
| 1 | -# git |
|
| 2 | - |
|
| 3 | -undo merge that hasn't been pushed |
|
| 4 | -```zsh |
|
| 5 | -git reset --merge HEAD~1 |
|
| 6 | -``` |
|
| 7 | - |
|
| 8 | -roll back hard |
|
| 9 | -``` |
|
| 10 | -git reset --hard <commit/tag> |
|
| 11 | -``` |
|
| 12 | - |
|
| 13 | -force push of a previous commit |
|
| 14 | -``` |
|
| 15 | -git push -f origin <commit_id>:<branch> |
|
| 16 | -``` |
|
| 17 | - |
|
| 18 | -delete remote branch |
|
| 19 | -``` |
|
| 20 | -git push --delete origin <branch> |
|
| 21 | -``` |
|
| 22 | - |
|
| 23 | -reset local branch after a forced-update (above) |
|
| 24 | -``` |
|
| 25 | -git fetch |
|
| 26 | -git reset origin/<branch> --hard |
|
| 27 | -``` |
|
| 28 | - |
|
| 29 | -renaming branch and updating remote |
|
| 30 | -``` |
|
| 31 | -git branch -m old-name new-name |
|
| 32 | -git push origin --set-upstream new-name |
|
| 33 | -git push origin :old-name |
|
| 34 | -``` |
|
| 35 | - |
|
| 36 | -set username for [single repo][] |
|
| 37 | -``` |
|
| 38 | -git config user.username 'name' |
|
| 39 | -``` |
|
| 40 | - |
|
| 41 | -set signing key for local repo |
|
| 42 | -``` |
|
| 43 | -git config user.signingkey <id> |
|
| 44 | -``` |
|
| 45 | - |
|
| 46 | -[signing][] commits |
|
| 47 | -``` |
|
| 48 | -git commit -S -m 'msg' |
|
| 49 | -``` |
|
| 50 | - |
|
| 51 | -compare diff between two commits |
|
| 52 | -``` |
|
| 53 | -git diff <commit>...<commit> |
|
| 54 | -``` |
|
| 55 | - |
|
| 56 | -stash |
|
| 57 | -``` |
|
| 58 | -git stash |
|
| 59 | -git stash show |
|
| 60 | -``` |
|
| 61 | - |
|
| 62 | -unstash |
|
| 63 | -``` |
|
| 64 | -git stash pop |
|
| 65 | -``` |
|
| 66 | - |
|
| 67 | -add remote origin |
|
| 68 | -``` |
|
| 69 | -git remote add origin git@gitserver/path/to/repo |
|
| 70 | -``` |
|
| 71 | - |
|
| 72 | -add multiple push repos |
|
| 73 | -``` |
|
| 74 | -git remote set-url --add --push origin git@gitserver/original/repo |
|
| 75 | -git remote set-url --add --push origin https://gitserver/another/repo |
|
| 76 | -``` |
|
| 77 | - |
|
| 78 | -archive branch |
|
| 79 | -``` |
|
| 80 | -git archive --format zip --outpu /path/to/output.zip <branch> |
|
| 81 | -``` |
|
| 82 | - |
|
| 83 | -## using `hub` |
|
| 84 | -### pull requests |
|
| 85 | -``` |
|
| 86 | -hub pr list |
|
| 87 | -hub pr checkout <num> |
|
| 88 | -``` |
|
| 89 | - |
|
| 90 | -## helpful links |
|
| 91 | - |
|
| 92 | -[making a pull request][] |
|
| 93 | - |
|
| 94 | -[branching and rebasing][] |
|
| 95 | - |
|
| 96 | -[branching model][] |
|
| 97 | - |
|
| 98 | -[merging and rebasing][] |
|
| 99 | - |
|
| 100 | -[making a pull request]: https://www.atlassian.com/git/tutorials/making-a-pull-request |
|
| 101 | -[branching and rebasing]: https://git-scm.com/book/en/v2/Git-Branching-Rebasing |
|
| 102 | -[branching model]: https://nvie.com/posts/a-successful-git-branching-model/ |
|
| 103 | -[single repo]: https://help.github.com/articles/setting-your-username-in-git/ |
|
| 104 | -[merging and rebasing]: https://www.atlassian.com/git/tutorials/merging-vs-rebasing |
|
| 105 | -[signing]: https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work |
software/haproxy.md
| ... | ... | @@ -1,5 +0,0 @@ |
| 1 | -# haproxy |
|
| 2 | - |
|
| 3 | -[config_guide][] |
|
| 4 | - |
|
| 5 | -[config_guide]: http://cbonte.github.io/haproxy-dconv/2.4/configuration.html |
software/kubernetes.md
| ... | ... | @@ -1,11 +0,0 @@ |
| 1 | -# kubernetes |
|
| 2 | - |
|
| 3 | -- list pods for all namespaces |
|
| 4 | -``` |
|
| 5 | -kubectl get pods --all-namespaces |
|
| 6 | -``` |
|
| 7 | - |
|
| 8 | -- get list of containers in pod |
|
| 9 | -``` |
|
| 10 | -kubectl -n <namespace> get pods <pod_name> -o jsonpath='{.spec.containers[*].name}' |
|
| 11 | -``` |
software/lxc.md
| ... | ... | @@ -1,292 +0,0 @@ |
| 1 | -# lxc |
|
| 2 | - |
|
| 3 | -## set up |
|
| 4 | -### arch |
|
| 5 | -[archwiki_setup][] |
|
| 6 | -[redhat_guide][] |
|
| 7 | -[linux_containers_guide][] |
|
| 8 | - |
|
| 9 | -* install `lxc` |
|
| 10 | -``` |
|
| 11 | -pacman -S lxc dnsmasq |
|
| 12 | -``` |
|
| 13 | -* or on debian |
|
| 14 | -``` |
|
| 15 | -apt-get install lxc dnsmasq-base uidmap acl libpam-cgfs |
|
| 16 | -echo "kernel.unprivileged_userns_clone=1" >> /etc/sysctl.conf |
|
| 17 | -reboot |
|
| 18 | -``` |
|
| 19 | -* add the following line to '/etc/pam.d/system-login' |
|
| 20 | -* (debian '/etc/pam.d/login') |
|
| 21 | -``` |
|
| 22 | -session optional pam_cgfs.so -c freezer,memory,name=systemd,unified |
|
| 23 | -``` |
|
| 24 | -* create '/etc/default/lxc-net' config |
|
| 25 | -``` |
|
| 26 | -# Leave USE_LXC_BRIDGE as "true" if you want to use lxcbr0 for your |
|
| 27 | -# containers. Set to "false" if you'll use virbr0 or another existing |
|
| 28 | -# bridge, or mavlan to your host's NIC. |
|
| 29 | -USE_LXC_BRIDGE="true" |
|
| 30 | - |
|
| 31 | -# If you change the LXC_BRIDGE to something other than lxcbr0, then |
|
| 32 | -# you will also need to update your /etc/lxc/default.conf as well as the |
|
| 33 | -# configuration (/var/lib/lxc/<container>/config) for any containers |
|
| 34 | -# already created using the default config to reflect the new bridge |
|
| 35 | -# name. |
|
| 36 | -# If you have the dnsmasq daemon installed, you'll also have to update |
|
| 37 | -# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon. |
|
| 38 | -LXC_BRIDGE="lxcbr0" |
|
| 39 | -LXC_ADDR="10.0.3.1" |
|
| 40 | -LXC_NETMASK="255.255.255.0" |
|
| 41 | -LXC_NETWORK="10.0.3.0/24" |
|
| 42 | -LXC_DHCP_RANGE="10.0.3.2,10.0.3.254" |
|
| 43 | -LXC_DHCP_MAX="253" |
|
| 44 | -# Uncomment the next line if you'd like to use a conf-file for the lxcbr0 |
|
| 45 | -# dnsmasq. For instance, you can use 'dhcp-host=mail1,10.0.3.100' to have |
|
| 46 | -# container 'mail1' always get ip address 10.0.3.100. |
|
| 47 | -#LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf |
|
| 48 | - |
|
| 49 | -# Uncomment the next line if you want lxcbr0's dnsmasq to resolve the .lxc |
|
| 50 | -# domain. You can then add "server=/lxc/10.0.3.1' (or your actual $LXC_ADDR) |
|
| 51 | -# to your system dnsmasq configuration file (normally /etc/dnsmasq.conf, |
|
| 52 | -# or /etc/NetworkManager/dnsmasq.d/lxc.conf on systems that use NetworkManager). |
|
| 53 | -# Once these changes are made, restart the lxc-net and network-manager services. |
|
| 54 | -# 'container1.lxc' will then resolve on your host. |
|
| 55 | -#LXC_DOMAIN="lxc" |
|
| 56 | -``` |
|
| 57 | -* add the following lines to '/etc/lxc/default.conf' |
|
| 58 | -``` |
|
| 59 | -lxc.net.0.type = veth |
|
| 60 | -lxc.net.0.link = lxcbr0 |
|
| 61 | -lxc.net.0.flags = up |
|
| 62 | -lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx |
|
| 63 | -lxc.idmap = u 0 100000 65536 |
|
| 64 | -lxc.idmap = g 0 100000 65536 |
|
| 65 | -``` |
|
| 66 | -* start `lxc-net` |
|
| 67 | -``` |
|
| 68 | -systemctl restart lxc-net |
|
| 69 | -``` |
|
| 70 | -* check that `lxcbr0` bridge has been created |
|
| 71 | -``` |
|
| 72 | -ip a s lxcbr0 |
|
| 73 | -``` |
|
| 74 | -* create '/etc/subuid' |
|
| 75 | -``` |
|
| 76 | -pyratebeard:100000:65536 |
|
| 77 | -``` |
|
| 78 | -* create '/etc/subgid' |
|
| 79 | -``` |
|
| 80 | -pyratebeard:100000:65536 |
|
| 81 | -``` |
|
| 82 | -* create '/etc/lxc/lxc-usernet' for allowing user to create network devices |
|
| 83 | -``` |
|
| 84 | -pyratebeard veth lxcbr0 10 |
|
| 85 | -``` |
|
| 86 | - - `veth` - virtual ethernet |
|
| 87 | - - `lxcbr0` - network bridge |
|
| 88 | - - `10` - number of devices allowed |
|
| 89 | -* create local dirs |
|
| 90 | -``` |
|
| 91 | -mkdir ~/.{config,cache}/lxc |
|
| 92 | -mkdir ~/.local/share |
|
| 93 | -``` |
|
| 94 | -* create '~/.config/lxc/default.conf' |
|
| 95 | -``` |
|
| 96 | -lxc.net.0.type = veth |
|
| 97 | -lxc.net.0.link = lxcbr0 |
|
| 98 | -lxc.net.0.flags = up |
|
| 99 | -lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx |
|
| 100 | -lxc.idmap = u 0 100000 65536 |
|
| 101 | -lxc.idmap = g 0 100000 65536 |
|
| 102 | -``` |
|
| 103 | -* make '~/.local/share' executable and set acls |
|
| 104 | -``` |
|
| 105 | -chmod +x ~/.local/share |
|
| 106 | -setfacl -m u:100000:x /home/pyratebeard |
|
| 107 | -setfacl -m u:100000:x /home/pyratebeard/.local |
|
| 108 | -``` |
|
| 109 | - |
|
| 110 | -## create container |
|
| 111 | -``` |
|
| 112 | -lxc-create -t download -n <name> |
|
| 113 | -# or |
|
| 114 | -lxc-create -n <name> -t download -- --dist alpine --release 3.13 --arch amd64 |
|
| 115 | -lxc-start -d -n <name> |
|
| 116 | -lxc-attach -n <name> |
|
| 117 | -``` |
|
| 118 | -or |
|
| 119 | -``` |
|
| 120 | -vi ~/.local/share/lxc/powerzone/rootfs/etc/shadow |
|
| 121 | - # remove `!` from root user |
|
| 122 | -lxc-start -n powerzone |
|
| 123 | -lxc-console -n powerzone |
|
| 124 | -``` |
|
| 125 | - |
|
| 126 | -* python module for script api [5][] |
|
| 127 | - |
|
| 128 | -## alpine linux config |
|
| 129 | -``` |
|
| 130 | -apk update |
|
| 131 | -apk upgrade |
|
| 132 | -passwd |
|
| 133 | -adduser pyratebeard |
|
| 134 | -adduser pyratebeard wheel |
|
| 135 | -apk add doas vim openssh |
|
| 136 | -vim /etc/doas.conf |
|
| 137 | - permit nopass pyratebeard |
|
| 138 | -rc-update add sshd |
|
| 139 | -rc-service sshd start |
|
| 140 | -rc-status |
|
| 141 | -``` |
|
| 142 | -logout (`ctrl-a q` to exit console) |
|
| 143 | - |
|
| 144 | -## debian config |
|
| 145 | -``` |
|
| 146 | -passwd |
|
| 147 | -apt-get install openssh-server python3 |
|
| 148 | -vi /etc/ssh/sshd_config |
|
| 149 | - PermitRootLogin yes |
|
| 150 | -systemctl reload sshd |
|
| 151 | -``` |
|
| 152 | - |
|
| 153 | -### alpine services |
|
| 154 | -add files to /etc/init.d/ |
|
| 155 | -``` |
|
| 156 | -#!/sbin/openrc-run |
|
| 157 | -name="test" |
|
| 158 | -command="echo hello" |
|
| 159 | -``` |
|
| 160 | - |
|
| 161 | -## known errors |
|
| 162 | -* systemd containers fail to start |
|
| 163 | -``` |
|
| 164 | -Failed to mount cgroup at /sys/fs/cgroup/systemd: Operation not permitted |
|
| 165 | -[!!!!!!] Failed to mount API filesystems, freezing. |
|
| 166 | -Freezing execution. |
|
| 167 | -``` |
|
| 168 | - * '/sys/fs/cgroup/systemd' dir doesn't exist |
|
| 169 | - * to fix, create dir, mount cgroup, set permissions [lxc-users group post][] |
|
| 170 | -``` |
|
| 171 | -sudo mkdir /sys/fs/cgroup/systemd |
|
| 172 | -sudo mount -t cgroup -o none,name=systemd systemd /sys/fs/cgroup/systemd |
|
| 173 | -sudo chown pyratebeard:users /sys/fs/cgroup/systemd |
|
| 174 | -``` |
|
| 175 | -* keyserver not found on `lxc-create` |
|
| 176 | - * to fix add `DOWNLOAD_KEYSERVER="hkp://keyserver.ubuntu.com:80"` before `lxc-create` cmd |
|
| 177 | - * https://github.com/lxc/lxc/issues/3874 |
|
| 178 | - * https://github.com/lxc/lxc/commit/f2a5d95d00a55bed27ef9920d67617cc75fecad8 |
|
| 179 | -``` |
|
| 180 | -Setting up the GPG keyring |
|
| 181 | -ERROR: Unable to fetch GPG key from keyserver |
|
| 182 | -``` |
|
| 183 | -* wait_ondaemonized_startL 833 no such file or directory |
|
| 184 | - * `lxc-start` in foreground gives segmentation fault |
|
| 185 | -``` |
|
| 186 | -lxc-start -n test /bin/sh |
|
| 187 | -``` |
|
| 188 | - |
|
| 189 | -## moving containers |
|
| 190 | -[so answer] |
|
| 191 | -``` |
|
| 192 | -lxc-stop -n $NAME |
|
| 193 | -cd ~/.local/share/lxc/$NAME |
|
| 194 | -sudo tar --numeric-owner -czvf ../$NAME.tgz ./* |
|
| 195 | -chown pyratebeard: ../$NAME.tgz |
|
| 196 | -rsync -avh $NAME.tgz user@hostname:.local/share/lxc/ |
|
| 197 | -ssh user@hostname |
|
| 198 | -mkdir ~/.local/share/lxc/$NAME |
|
| 199 | -cd ~/.local/share/lxc/$NAME |
|
| 200 | -sudo tar --numeric-owner -xzvf ../$NAME.tgz . |
|
| 201 | -``` |
|
| 202 | -* tried this between wht-rht-obj and fka |
|
| 203 | - * container runs (after adding user gid to /etc/subgid) |
|
| 204 | - * no ip address though. veth is created but ip4 not given |
|
| 205 | -* check dir/file permissions |
|
| 206 | - * .local/share/lxc/$NAME = 755 100000:100000 |
|
| 207 | - * .local/share/lxc/$NAME/rootfs/* = 100000:100000 |
|
| 208 | - * .local/share/lxc/$NAME/config = pyratebeard:users |
|
| 209 | - |
|
| 210 | -## example |
|
| 211 | -### setting up multiple websites behind haproxy |
|
| 212 | -* install openzfs |
|
| 213 | -* start lx daemon |
|
| 214 | -``` |
|
| 215 | -sudo apt install zfsutils-linux |
|
| 216 | -sudo lxd init |
|
| 217 | -``` |
|
| 218 | -* answer questions |
|
| 219 | -* launch containers |
|
| 220 | -``` |
|
| 221 | -lxc launch ubuntu:18.04 subdomain1 |
|
| 222 | -lxc launch ubuntu:18.04 subdomain2 |
|
| 223 | -lxc launch ubuntu:18.04 haproxy |
|
| 224 | -lxc list |
|
| 225 | -``` |
|
| 226 | - |
|
| 227 | -[archwiki_setup]: https://wiki.archlinux.org/title/Linux_Containers#Setup |
|
| 228 | -[redhat_guide]: https://www.redhat.com/sysadmin/exploring-containers-lxc |
|
| 229 | -[linux_containers_guide]: https://linuxcontainers.org/lxc/getting-started/ |
|
| 230 | -[lxc-users group post]: https://groups.google.com/a/lists.linuxcontainers.org/g/lxc-users/c/r_8Eww6i9tA |
|
| 231 | -[so answer]: https://stackoverflow.com/questions/23427129/how-do-i-backup-move-lxc-containers#34194341 |
|
| 232 | -[5]: https://github.com/lxc/python3-lxc |
|
| 233 | - |
|
| 234 | -gollum haproxy log pastebin radicale site stagit znc ftp |
|
| 235 | - |
|
| 236 | -## debian test |
|
| 237 | -* debian 10 (aws instance) |
|
| 238 | - * 'admin' user |
|
| 239 | -* `apt-get install lxc dnsmasq-base uidmap` |
|
| 240 | -* follow setup (see own wiki) |
|
| 241 | -* building debian containers works well |
|
| 242 | -* ansible playbook runs using proxyjump in ssh config |
|
| 243 | -* attempting to run haproxy in container |
|
| 244 | -* iptables rules for prerouting |
|
| 245 | - * `sudo iptables -t nat -I PREROUTING -i eth0 -p TCP -d <public_ip>/24 --dport 80 -j DNAT --to-destination <haproxy_ip>:80` |
|
| 246 | - * `sudo iptables -t nat -I PREROUTING -i eth0 -p TCP -d <public_ip>/24 --dport 443 -j DNAT --to-destination <haproxy_ip>:443` |
|
| 247 | - * `sudo iptables -L -n -t nat` |
|
| 248 | - * `sudo apt-get install iptables-persistent` |
|
| 249 | -* haproxy container |
|
| 250 | - * `apt-get install haproxy` |
|
| 251 | - * add the following to the 'global' section |
|
| 252 | - ``` |
|
| 253 | - ... |
|
| 254 | - maxconn 2048 |
|
| 255 | - ... |
|
| 256 | - tune.ssl.default-dh-param 2048 |
|
| 257 | - ``` |
|
| 258 | - * add the following to the 'defaults' section |
|
| 259 | - ``` |
|
| 260 | - ... |
|
| 261 | - option forwardfor |
|
| 262 | - option http-server-close |
|
| 263 | - ... |
|
| 264 | - ``` |
|
| 265 | - * create frontend |
|
| 266 | - ``` |
|
| 267 | - frontend http_frontend |
|
| 268 | - bind *:80 |
|
| 269 | - acl infratuxture hdr(host) -i penguin.renre.com |
|
| 270 | - #acl anotherlxc hdr(host) -i anotherdomain.renre.com |
|
| 271 | - use_backend penguin if infratuxture |
|
| 272 | - #use_backend anotherdomain if anotherlxc |
|
| 273 | - ``` |
|
| 274 | - * create backend |
|
| 275 | - ``` |
|
| 276 | - backend penguin |
|
| 277 | - balance leastconn |
|
| 278 | - http-request set-header X-Client-IP %[src] |
|
| 279 | - server penguin 10.0.3.162:80 check |
|
| 280 | - |
|
| 281 | - #backend anotherdomain |
|
| 282 | - # balance leastconn |
|
| 283 | - # http-request set-header X-Client-IP %[src] |
|
| 284 | - # server anotherdomain an.oth.er.ip:80 check |
|
| 285 | - ``` |
|
| 286 | -* infratuxture container |
|
| 287 | - * `apt-get install git lighttpd` |
|
| 288 | - * pull git repo in html dir |
|
| 289 | - ``` |
|
| 290 | - cd /var/www/html |
|
| 291 | - git clone https://git.renre.com/infrastructure/linux-patching.github.io.git . |
|
| 292 | - ``` |
software/mosh.md
| ... | ... | @@ -1,27 +0,0 @@ |
| 1 | -# mosh |
|
| 2 | - |
|
| 3 | -_mosh must be installed on client and server_ |
|
| 4 | - |
|
| 5 | -## install |
|
| 6 | -``` |
|
| 7 | -yum install mosh |
|
| 8 | - |
|
| 9 | -apt-get install mosh |
|
| 10 | -``` |
|
| 11 | - |
|
| 12 | -## usage |
|
| 13 | -on server allow port through firewall |
|
| 14 | -``` |
|
| 15 | -firewall-cmd --permanent --add-port=60001/udp |
|
| 16 | -firewall-cmd --reload |
|
| 17 | -``` |
|
| 18 | - |
|
| 19 | -on client |
|
| 20 | -``` |
|
| 21 | -mosh user@host |
|
| 22 | -``` |
|
| 23 | - |
|
| 24 | -if ssh is listening on different port |
|
| 25 | -``` |
|
| 26 | -mosh --ssh="ssh -p 22666" user@host |
|
| 27 | -``` |
software/openvpn.md
| ... | ... | @@ -1,31 +0,0 @@ |
| 1 | -# openvpn |
|
| 2 | - |
|
| 3 | -## setup server |
|
| 4 | -``` |
|
| 5 | -sudo apt-get update && sudo apt-get upgrade |
|
| 6 | -sudo apt-get install openvpn easy-rsa |
|
| 7 | -``` |
|
| 8 | -... all same until /etc/openvpn/easy-rsa/keys |
|
| 9 | -``` |
|
| 10 | -cd /etc/openvpn/easy-rsa/ |
|
| 11 | -cp vars.example vars |
|
| 12 | -vi vars |
|
| 13 | -``` |
|
| 14 | -- uncomment and modify following lines |
|
| 15 | -``` |
|
| 16 | -#set_var EASYRSA_REQ_COUNTRY "US" |
|
| 17 | -#set_var EASYRSA_REQ_PROVINCE "California" |
|
| 18 | -#set_var EASYRSA_REQ_CITY "San Francisco" |
|
| 19 | -#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co" |
|
| 20 | -#set_var EASYRSA_REQ_EMAIL "me@example.net" |
|
| 21 | -#set_var EASYRSA_REQ_OU "My Organizational Unit" |
|
| 22 | -``` |
|
| 23 | -- save and close |
|
| 24 | -``` |
|
| 25 | -./easyrsa init-pki |
|
| 26 | -``` |
|
| 27 | - |
|
| 28 | -when service starts and waits for password in the background use this to enter password |
|
| 29 | -``` |
|
| 30 | -sudo systemd-tty-ask-password-agent --query |
|
| 31 | -``` |
software/qemu.md
| ... | ... | @@ -1,18 +0,0 @@ |
| 1 | -# qemu |
|
| 2 | - |
|
| 3 | -## create vm |
|
| 4 | -``` |
|
| 5 | -qemu-img create -f qcow2 <filename> 4g |
|
| 6 | -``` |
|
| 7 | -- `create [-f FMT] filename [size]` |
|
| 8 | - - size is disk image size in bytes |
|
| 9 | - |
|
| 10 | -## install system |
|
| 11 | -``` |
|
| 12 | -qemu-system-x86_64 -m 1g -cdrom /path/to/iso -boot order=d -drive file=<filename>,format=qcow2 |
|
| 13 | -``` |
|
| 14 | - |
|
| 15 | -## start system |
|
| 16 | -``` |
|
| 17 | -qemu-system-x86_64 <filename> |
|
| 18 | -``` |
software/subnet_cheatsheet.md
| ... | ... | @@ -1,263 +0,0 @@ |
| 1 | -# subnet cheatsheet |
|
| 2 | - |
|
| 3 | -https://oav.net/mirrors/cidr.html |
|
| 4 | - |
|
| 5 | -``` |
|
| 6 | -Netmask Netmask (binary) CIDR Notes |
|
| 7 | -_____________________________________________________________________________ |
|
| 8 | -255.255.255.255 11111111.11111111.11111111.11111111 /32 Host (single addr) |
|
| 9 | -255.255.255.254 11111111.11111111.11111111.11111110 /31 Unuseable |
|
| 10 | -255.255.255.252 11111111.11111111.11111111.11111100 /30 2 useable |
|
| 11 | -255.255.255.248 11111111.11111111.11111111.11111000 /29 6 useable |
|
| 12 | -255.255.255.240 11111111.11111111.11111111.11110000 /28 14 useable |
|
| 13 | -255.255.255.224 11111111.11111111.11111111.11100000 /27 30 useable |
|
| 14 | -255.255.255.192 11111111.11111111.11111111.11000000 /26 62 useable |
|
| 15 | -255.255.255.128 11111111.11111111.11111111.10000000 /25 126 useable |
|
| 16 | -255.255.255.0 11111111.11111111.11111111.00000000 /24 "Class C" 254 useable |
|
| 17 | - |
|
| 18 | -255.255.254.0 11111111.11111111.11111110.00000000 /23 2 Class C's |
|
| 19 | -255.255.252.0 11111111.11111111.11111100.00000000 /22 4 Class C's |
|
| 20 | -255.255.248.0 11111111.11111111.11111000.00000000 /21 8 Class C's |
|
| 21 | -255.255.240.0 11111111.11111111.11110000.00000000 /20 16 Class C's |
|
| 22 | -255.255.224.0 11111111.11111111.11100000.00000000 /19 32 Class C's |
|
| 23 | -255.255.192.0 11111111.11111111.11000000.00000000 /18 64 Class C's |
|
| 24 | -255.255.128.0 11111111.11111111.10000000.00000000 /17 128 Class C's |
|
| 25 | -255.255.0.0 11111111.11111111.00000000.00000000 /16 "Class B" |
|
| 26 | - |
|
| 27 | -255.254.0.0 11111111.11111110.00000000.00000000 /15 2 Class B's |
|
| 28 | -255.252.0.0 11111111.11111100.00000000.00000000 /14 4 Class B's |
|
| 29 | -255.248.0.0 11111111.11111000.00000000.00000000 /13 8 Class B's |
|
| 30 | -255.240.0.0 11111111.11110000.00000000.00000000 /12 16 Class B's |
|
| 31 | -255.224.0.0 11111111.11100000.00000000.00000000 /11 32 Class B's |
|
| 32 | -255.192.0.0 11111111.11000000.00000000.00000000 /10 64 Class B's |
|
| 33 | -255.128.0.0 11111111.10000000.00000000.00000000 /9 128 Class B's |
|
| 34 | -255.0.0.0 11111111.00000000.00000000.00000000 /8 "Class A" |
|
| 35 | - |
|
| 36 | -254.0.0.0 11111110.00000000.00000000.00000000 /7 |
|
| 37 | -252.0.0.0 11111100.00000000.00000000.00000000 /6 |
|
| 38 | -248.0.0.0 11111000.00000000.00000000.00000000 /5 |
|
| 39 | -240.0.0.0 11110000.00000000.00000000.00000000 /4 |
|
| 40 | -224.0.0.0 11100000.00000000.00000000.00000000 /3 |
|
| 41 | -192.0.0.0 11000000.00000000.00000000.00000000 /2 |
|
| 42 | -128.0.0.0 10000000.00000000.00000000.00000000 /1 |
|
| 43 | -0.0.0.0 00000000.00000000.00000000.00000000 /0 IP space |
|
| 44 | -``` |
|
| 45 | - |
|
| 46 | -``` |
|
| 47 | - Net Host Total |
|
| 48 | -Net Addr Addr Addr Number |
|
| 49 | -Class Range NetMask Bits Bits of hosts |
|
| 50 | ----------------------------------------------------------- |
|
| 51 | -A 0-127 255.0.0.0 8 24 16777216 (i.e. 114.0.0.0) |
|
| 52 | -B 128-191 255.255.0.0 16 16 65536 (i.e. 150.0.0.0) |
|
| 53 | -C 192-254 255.255.255.0 24 8 256 (i.e. 199.0.0.0) |
|
| 54 | -D 224-239 (multicast) |
|
| 55 | -E 240-255 (reserved) |
|
| 56 | -F 208-215 255.255.255.240 28 4 16 |
|
| 57 | -G 216/8 ARIN - North America |
|
| 58 | -G 217/8 RIPE NCC - Europe |
|
| 59 | -G 218-219/8 APNIC |
|
| 60 | -H 220-221 255.255.255.248 29 3 8 (reserved) |
|
| 61 | -K 222-223 255.255.255.254 31 1 2 (reserved) |
|
| 62 | -(ref: RFC1375 & http://www.iana.org/assignments/ipv4-address-space ) |
|
| 63 | -( http://www.iana.org/numbers.htm ) |
|
| 64 | ----------------------------------------------------------- |
|
| 65 | -``` |
|
| 66 | - |
|
| 67 | -The current list of special use prefixes: |
|
| 68 | -``` |
|
| 69 | - 0.0.0.0/8 |
|
| 70 | - 127.0.0.0/8 |
|
| 71 | - 192.0.2.0/24 |
|
| 72 | - 10.0.0.0/8 |
|
| 73 | - 172.16.0.0/12 |
|
| 74 | - 192.168.0.0/16 |
|
| 75 | - 169.254.0.0/16 |
|
| 76 | - all D/E space |
|
| 77 | -``` |
|
| 78 | -- (ref: RFC1918 http://www.rfc-editor.org/rfc/rfc1918.txt ) |
|
| 79 | -- ( or ftp://ftp.isi.edu/in-notes/rfc1918.txt ) |
|
| 80 | -- (rfc search: http://www.rfc-editor.org/rfcsearch.html ) |
|
| 81 | -- ( http://www.ietf.org/ietf/1id-abstracts.txt ) |
|
| 82 | -- ( http://www.ietf.org/shadow.html ) |
|
| 83 | - |
|
| 84 | - |
|
| 85 | -Martians: (updates at: www.iana.org/assignments/ipv4-address-space ) |
|
| 86 | -``` |
|
| 87 | - no ip source-route |
|
| 88 | - access-list 100 deny ip host 0.0.0.0 any |
|
| 89 | - deny ip 0.0.0.0 0.255.255.255 any log ! antispoof |
|
| 90 | - deny ip 0.0.0.0 0.255.255.255 0.0.0.0 255.255.255.255 ! antispoof |
|
| 91 | - deny ip any 255.255.255.128 0.0.0.127 ! antispoof |
|
| 92 | - deny ip host 0.0.0.0 any log ! antispoof |
|
| 93 | - deny ip host [router intf] [router intf] ! antispoof |
|
| 94 | - deny ip xxx.xxx.xxx.0 0.0.0.255 any log ! lan area |
|
| 95 | - deny ip 0/8 0.255.255.255 any log ! IANA - Reserved |
|
| 96 | - deny ip 1/8 0.255.255.255 any log ! IANA - Reserved |
|
| 97 | - deny ip 2/8 0.255.255.255 any log ! IANA - Reserved |
|
| 98 | - deny ip 5/8 0.255.255.255 any log ! IANA - Reserved |
|
| 99 | - deny ip 7/8 0.255.255.255 any log ! IANA - Reserved |
|
| 100 | - deny ip 10.0.0.0 0.255.255.255 any log ! IANA - Private Use |
|
| 101 | - deny ip 23/8 0.255.255.255 any log ! IANA - Reserved |
|
| 102 | - deny ip 27/8 0.255.255.255 any log ! IANA - Reserved |
|
| 103 | - deny ip 31/8 0.255.255.255 any log ! IANA - Reserved |
|
| 104 | - deny ip 36-37/8 0.255.255.255 any log ! IANA - Reserved |
|
| 105 | - deny ip 39/8 0.255.255.255 any log ! IANA - Reserved |
|
| 106 | - deny ip 41-42/8 0.255.255.255 any log ! IANA - Reserved |
|
| 107 | - deny ip 50/8 0.255.255.255 any log ! IANA - Reserved |
|
| 108 | - deny ip 58-60/8 0.255.255.255 any log ! IANA - Reserved |
|
| 109 | - deny ip 69-79/8 0.255.255.255 any log ! IANA - Reserved |
|
| 110 | - deny ip 82-95/8 0.255.255.255 any log ! IANA - Reserved |
|
| 111 | - deny ip 96-126/8 0.255.255.255 any log ! IANA - Reserved |
|
| 112 | - deny ip 127/8 0.255.255.255 any log ! IANA - Reserved |
|
| 113 | - deny ip 169.254.0.0 0.0.255.255 any log ! link-local network |
|
| 114 | - deny ip 172.16.0.0 0.15.255.255 any log ! reserved |
|
| 115 | - deny ip 192.168.0.0 0.0.255.255 any log ! reserved |
|
| 116 | - deny ip 192.0.2.0 0.0.0.255 any log ! test network |
|
| 117 | - deny ip 197/8 0.255.255.255 any log ! IANA - Reserved |
|
| 118 | - deny ip 220/8 0.255.255.255 any log ! IANA - Reserved |
|
| 119 | - deny ip 222-223/8 0.255.255.255 any log ! IANA - Reserved |
|
| 120 | - deny ip 224.0.0.0 31.255.255.255 any log ! multicast |
|
| 121 | - deny ip 224.0.0.0 15.255.255.255 any log ! unless MBGP-learned routes |
|
| 122 | - deny ip 224-239/8 0.255.255.255 any log ! IANA - Multicast |
|
| 123 | - deny ip 240-255/8 0.255.255.255 any log ! IANA - Reserved |
|
| 124 | -``` |
|
| 125 | - |
|
| 126 | -``` |
|
| 127 | -filtered source addresses |
|
| 128 | - 0/8 ! broadcast |
|
| 129 | - 10/8 ! RFC 1918 private |
|
| 130 | - 127/8 ! loopback |
|
| 131 | - 169.254.0/16 ! link local |
|
| 132 | - 172.16.0.0/12 ! RFC 1918 private |
|
| 133 | - 192.0.2.0/24 ! TEST-NET |
|
| 134 | - 192.168.0/16 ! RFC 1918 private |
|
| 135 | - 224.0.0.0/4 ! class D multicast |
|
| 136 | - 240.0.0.0/5 ! class E reserved |
|
| 137 | - 248.0.0.0/5 ! reserved |
|
| 138 | - 255.255.255.255/32 ! broadcast |
|
| 139 | -``` |
|
| 140 | - |
|
| 141 | -ARIN administrated blocks: (http://www.arin.net/regserv/IPStats.html) |
|
| 142 | -``` |
|
| 143 | - 24.0.0.0/8 (portions of) |
|
| 144 | - 63.0.0.0/8 |
|
| 145 | - 64.0.0.0/8 |
|
| 146 | - 65.0.0.0/8 |
|
| 147 | - 66.0.0.0/8 |
|
| 148 | - 196.0.0.0/8 |
|
| 149 | - 198.0.0.0/8 |
|
| 150 | - 199.0.0.0/8 |
|
| 151 | - 200.0.0.0/8 |
|
| 152 | - 204.0.0.0/8 |
|
| 153 | - 205.0.0.0/8 |
|
| 154 | - 206.0.0.0/8 |
|
| 155 | - 207.0.0.0/8 |
|
| 156 | - 208.0.0.0/8 |
|
| 157 | - 209.0.0.0/8 |
|
| 158 | - 216.0.0.0/8 |
|
| 159 | -``` |
|
| 160 | ----------------------------------------------------------- |
|
| 161 | - |
|
| 162 | -well known ports: (rfc1700.txt) |
|
| 163 | - - www.iana.org/assignments/port-numbers |
|
| 164 | - |
|
| 165 | -protocol numbers: |
|
| 166 | - - www.iana.org/assignments/protocol-numbers |
|
| 167 | - - www.iana.org/numbers.htm |
|
| 168 | - |
|
| 169 | -ICMP(Types/Codes) |
|
| 170 | -``` |
|
| 171 | - Testing Destination Reachability & Status |
|
| 172 | - (0/0) Echo-Reply |
|
| 173 | - (8/0) Echo |
|
| 174 | - Unreachable Destinations |
|
| 175 | - (3/0) Network Unreachable |
|
| 176 | - (3/1) Host Unreachable |
|
| 177 | - (3/2) Protocol Unreachable |
|
| 178 | - (3/3) Port Unreachable |
|
| 179 | - (3/4) Fragmentaion Needed and DF set (Pkt too big) |
|
| 180 | - (3/5) Source Route Failed |
|
| 181 | - (3/6) Network Unknown |
|
| 182 | - (3/7) Host Unknown |
|
| 183 | - (3/9) DOD Net Prohibited |
|
| 184 | - (3/10) DOD Host Prohibited |
|
| 185 | - (3/11) Net TOS Unreachable |
|
| 186 | - (3/12) Host TOS Unreachable |
|
| 187 | - (3/13) Administratively Prohibited |
|
| 188 | - (3/14) Host Precedence Unreachable |
|
| 189 | - (3/15) Precedence Unreachable |
|
| 190 | - Flow Control |
|
| 191 | - (4/0) Source-Quench [RFC 1016] |
|
| 192 | - Route Change Requests from Gateways |
|
| 193 | - (5/0) Redirect Datagrams for the Net |
|
| 194 | - (5/1) Redirect Datagrams for the Host |
|
| 195 | - (5/2) Redirect Datagrams for the TOS and Net |
|
| 196 | - (5/3) Redirect Datagrams for the TOS and Host |
|
| 197 | - Router |
|
| 198 | - (6/-) Alternate-Address |
|
| 199 | - (9/0) Router-Advertisement |
|
| 200 | - (10/0) Router-Solicitation |
|
| 201 | - Detecting Circular or Excessively Long Routes |
|
| 202 | - (11/0) Time to Live Count Exceeded |
|
| 203 | - (11/1) Fragment Reassembly Time Exceeded |
|
| 204 | - Reporting Incorrect Datagram Headers |
|
| 205 | - (12/0) Parameter-Problem |
|
| 206 | - (12/1) Option Missing |
|
| 207 | - (12/2) No Room for Option |
|
| 208 | - Clock Synchronization and Transit Time Estimation |
|
| 209 | - (13/0) Timestamp-Request |
|
| 210 | - (14/0) Timestamp-Reply |
|
| 211 | - Obtaining a Network Address (RARP Alternative) |
|
| 212 | - (15/0) Information-Request |
|
| 213 | - (16/0) Information-Reply |
|
| 214 | - Obtaining a Subnet Mask [RFC 950] |
|
| 215 | - (17/0) Address Mask-Request |
|
| 216 | - (18/0) Address Mask-Reply |
|
| 217 | - Other |
|
| 218 | - (30/0) Traceroute |
|
| 219 | - (31/0) Conversion-Error |
|
| 220 | - (32/0) Mobile-Redirect |
|
| 221 | -``` |
|
| 222 | - |
|
| 223 | -Ref: [RFC 792] [RFC 896] [RFC 950] [RFC 1016] |
|
| 224 | - www.cisco.com/univercd/cc/td/doc/product/lan/cat6000/sw_5_3/cofigide/qos.htm#19774 |
|
| 225 | - |
|
| 226 | - |
|
| 227 | - |
|
| 228 | -``` |
|
| 229 | -Decimal system Prefix's |
|
| 230 | - Factor Exponent Prefix |
|
| 231 | ---------------------------------------------------- |
|
| 232 | - 1 000 000 000 000 000 000 000 000...10^24....yotta |
|
| 233 | - 1 000 000 000 000 000 000 000...10^21....zetta |
|
| 234 | - 1 000 000 000 000 000 000...10^18....exa |
|
| 235 | - 1 000 000 000 000 000...10^15....peta |
|
| 236 | - 1 000 000 000 000...10^12....tera |
|
| 237 | - 1 000 000 000...10^9.....giga |
|
| 238 | - 1 000 000...10^6.....mega |
|
| 239 | - 1 000...10^3.....kilo |
|
| 240 | - 100...10^2.....hecto |
|
| 241 | - 10...10^1.....deka |
|
| 242 | - 0.1...10^-1....deci |
|
| 243 | - 0.01...10^-2....centi |
|
| 244 | - 0.001...10^-3....milli |
|
| 245 | - 0.000 001...10^-6....micro |
|
| 246 | - 0.000 000 001...10^-9....nano |
|
| 247 | - 0.000 000 000 001...10^-12...pico |
|
| 248 | - 0.000 000 000 000 001...10^-15...femto |
|
| 249 | - 0.000 000 000 000 000 001...10^-18...atto |
|
| 250 | - 0.000 000 000 000 000 000 001...10^-21...zepto |
|
| 251 | - 0.000 000 000 000 000 000 000 001...10^-24...yocto |
|
| 252 | ---------------------------------------------------- |
|
| 253 | - |
|
| 254 | -``` |
|
| 255 | -- Convert Fahrenheit <> Celsius: |
|
| 256 | - - Celsius = (Fahrenheit - 32) / 1.8 |
|
| 257 | - - Fahrenheit = (Celsius * 1.8) + 32 |
|
| 258 | - |
|
| 259 | - |
|
| 260 | -last updated: 4jul02 |
|
| 261 | - |
|
| 262 | - |
|
| 263 | - |
software/svn.md
| ... | ... | @@ -1,23 +0,0 @@ |
| 1 | -# svn |
|
| 2 | - |
|
| 3 | -[dave child cheatsheet][] |
|
| 4 | - |
|
| 5 | -[abbey workshop howto][] |
|
| 6 | - |
|
| 7 | -``` |
|
| 8 | -svn checkout --username=pyratebeard http://example.com/svn/repo/trunk localrepo |
|
| 9 | - |
|
| 10 | -svn status |
|
| 11 | - |
|
| 12 | -svn update /path |
|
| 13 | -``` |
|
| 14 | - |
|
| 15 | -only need add for new directories or files |
|
| 16 | -``` |
|
| 17 | -svn add /path|file |
|
| 18 | - |
|
| 19 | -svn commit -m "message" /path|file |
|
| 20 | -``` |
|
| 21 | - |
|
| 22 | -[dave child cheatsheet]: https://www.cheatography.com/davechild/cheat-sheets/subversion/ |
|
| 23 | -[abbey workshop howto]: https://www.abbeyworkshop.com/howto/misc/svn01/ |
software/wifi_connect.md
| ... | ... | @@ -1,10 +0,0 @@ |
| 1 | - |
|
| 2 | -``` |
|
| 3 | -ip link show wlp2s0 |
|
| 4 | -ip link set wlp2s0 up |
|
| 5 | -iw wlp2s0 link |
|
| 6 | -sudo iw wlp2s0 scan | grep -i ssid |
|
| 7 | -ps -ef | grep wpa_supplicant |
|
| 8 | -sudo kill -9 <pid> |
|
| 9 | -connect lib/doc/wifi/home ; sudo dhclient wlp2s0 |
|
| 10 | -``` |
tech-index.md
| ... | ... | @@ -1,7 +1,7 @@ |
| 1 | 1 | # tech |
| 2 | 2 | ## everyday tools |
| 3 | 3 | * [vim](/software/vim) |
| 4 | -* [git](/software/git) |
|
| 4 | +* [git](/vcs/git) |
|
| 5 | 5 | * [tmux](/software/tmux) |
| 6 | 6 | * [mutt](/software/mutt) |
| 7 | 7 | * [vimwiki](/software/vimwiki) |
| ... | ... | @@ -21,12 +21,12 @@ |
| 21 | 21 | ## software |
| 22 | 22 | |
| 23 | 23 | ### vcs |
| 24 | -* [svn](/software/svn) |
|
| 24 | +* [svn](/vcs/svn) |
|
| 25 | 25 | |
| 26 | 26 | ### containers |
| 27 | -* [lxc](/software/lxc) |
|
| 28 | -* [docker](/software/docker) |
|
| 29 | -* [k8s](/software/kubernetes) |
|
| 27 | +* [lxc](/virtualisation/lxc) |
|
| 28 | +* [docker](/virtualisation/docker) |
|
| 29 | +* [k8s](/virtualisation/kubernetes) |
|
| 30 | 30 | |
| 31 | 31 | * [durdraw](/software/durdraw) |
| 32 | 32 | * [gollum](/software/gollum) |
| ... | ... | @@ -37,7 +37,7 @@ |
| 37 | 37 | * [ldap](/software/ldap) |
| 38 | 38 | * [exim4](/software/exim4) |
| 39 | 39 | * [ftp](/software/ftp) |
| 40 | -* [mosh](/software/mosh) |
|
| 40 | +* [mosh](/networking/mosh) |
|
| 41 | 41 | * [usenet](/software/usenet) |
| 42 | 42 | * [znc](/software/znc) |
| 43 | 43 | * [mariadb](/software/mariadb) |
| ... | ... | @@ -51,15 +51,15 @@ |
| 51 | 51 | * [snmp](/software/snmp) |
| 52 | 52 | * [tcpdump](/software/tcpdump) |
| 53 | 53 | * [bluetooth](/software/bluetooth) |
| 54 | -* [firewalls](/software/firewalls) |
|
| 55 | -* [haproxy](/software/haproxy) |
|
| 54 | +* [firewalls](/networking/firewalls) |
|
| 55 | +* [haproxy](/networking/haproxy) |
|
| 56 | 56 | * [openssl](/software/openssl) |
| 57 | -* [openvpn](/software/openvpn) |
|
| 58 | -* [envoy](/software/envoy) |
|
| 59 | -* [subnet_cheatsheet](/software/subnet_cheatsheet) |
|
| 60 | -* [wifi_connect](/software/wifi_connect) |
|
| 57 | +* [openvpn](/networking/openvpn) |
|
| 58 | +* [envoy](/networking/envoy) |
|
| 59 | +* [subnet_cheatsheet](/networking/subnet_cheatsheet) |
|
| 60 | +* [wifi_connect](/networking/wifi_connect) |
|
| 61 | 61 | * [esxi](/software/esxi) |
| 62 | -* [qemu](/software/qemu) |
|
| 62 | +* [qemu](/virtualisation/qemu) |
|
| 63 | 63 | * [certbot](/software/certbot) |
| 64 | 64 | * [django](/software/django) |
| 65 | 65 | * [gopher](/software/gopher) |
vcs/git.md
| ... | ... | @@ -0,0 +1,105 @@ |
| 1 | +# git |
|
| 2 | + |
|
| 3 | +undo merge that hasn't been pushed |
|
| 4 | +```zsh |
|
| 5 | +git reset --merge HEAD~1 |
|
| 6 | +``` |
|
| 7 | + |
|
| 8 | +roll back hard |
|
| 9 | +``` |
|
| 10 | +git reset --hard <commit/tag> |
|
| 11 | +``` |
|
| 12 | + |
|
| 13 | +force push of a previous commit |
|
| 14 | +``` |
|
| 15 | +git push -f origin <commit_id>:<branch> |
|
| 16 | +``` |
|
| 17 | + |
|
| 18 | +delete remote branch |
|
| 19 | +``` |
|
| 20 | +git push --delete origin <branch> |
|
| 21 | +``` |
|
| 22 | + |
|
| 23 | +reset local branch after a forced-update (above) |
|
| 24 | +``` |
|
| 25 | +git fetch |
|
| 26 | +git reset origin/<branch> --hard |
|
| 27 | +``` |
|
| 28 | + |
|
| 29 | +renaming branch and updating remote |
|
| 30 | +``` |
|
| 31 | +git branch -m old-name new-name |
|
| 32 | +git push origin --set-upstream new-name |
|
| 33 | +git push origin :old-name |
|
| 34 | +``` |
|
| 35 | + |
|
| 36 | +set username for [single repo][] |
|
| 37 | +``` |
|
| 38 | +git config user.username 'name' |
|
| 39 | +``` |
|
| 40 | + |
|
| 41 | +set signing key for local repo |
|
| 42 | +``` |
|
| 43 | +git config user.signingkey <id> |
|
| 44 | +``` |
|
| 45 | + |
|
| 46 | +[signing][] commits |
|
| 47 | +``` |
|
| 48 | +git commit -S -m 'msg' |
|
| 49 | +``` |
|
| 50 | + |
|
| 51 | +compare diff between two commits |
|
| 52 | +``` |
|
| 53 | +git diff <commit>...<commit> |
|
| 54 | +``` |
|
| 55 | + |
|
| 56 | +stash |
|
| 57 | +``` |
|
| 58 | +git stash |
|
| 59 | +git stash show |
|
| 60 | +``` |
|
| 61 | + |
|
| 62 | +unstash |
|
| 63 | +``` |
|
| 64 | +git stash pop |
|
| 65 | +``` |
|
| 66 | + |
|
| 67 | +add remote origin |
|
| 68 | +``` |
|
| 69 | +git remote add origin git@gitserver/path/to/repo |
|
| 70 | +``` |
|
| 71 | + |
|
| 72 | +add multiple push repos |
|
| 73 | +``` |
|
| 74 | +git remote set-url --add --push origin git@gitserver/original/repo |
|
| 75 | +git remote set-url --add --push origin https://gitserver/another/repo |
|
| 76 | +``` |
|
| 77 | + |
|
| 78 | +archive branch |
|
| 79 | +``` |
|
| 80 | +git archive --format zip --outpu /path/to/output.zip <branch> |
|
| 81 | +``` |
|
| 82 | + |
|
| 83 | +## using `hub` |
|
| 84 | +### pull requests |
|
| 85 | +``` |
|
| 86 | +hub pr list |
|
| 87 | +hub pr checkout <num> |
|
| 88 | +``` |
|
| 89 | + |
|
| 90 | +## helpful links |
|
| 91 | + |
|
| 92 | +[making a pull request][] |
|
| 93 | + |
|
| 94 | +[branching and rebasing][] |
|
| 95 | + |
|
| 96 | +[branching model][] |
|
| 97 | + |
|
| 98 | +[merging and rebasing][] |
|
| 99 | + |
|
| 100 | +[making a pull request]: https://www.atlassian.com/git/tutorials/making-a-pull-request |
|
| 101 | +[branching and rebasing]: https://git-scm.com/book/en/v2/Git-Branching-Rebasing |
|
| 102 | +[branching model]: https://nvie.com/posts/a-successful-git-branching-model/ |
|
| 103 | +[single repo]: https://help.github.com/articles/setting-your-username-in-git/ |
|
| 104 | +[merging and rebasing]: https://www.atlassian.com/git/tutorials/merging-vs-rebasing |
|
| 105 | +[signing]: https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work |
vcs/svn.md
| ... | ... | @@ -0,0 +1,23 @@ |
| 1 | +# svn |
|
| 2 | + |
|
| 3 | +[dave child cheatsheet][] |
|
| 4 | + |
|
| 5 | +[abbey workshop howto][] |
|
| 6 | + |
|
| 7 | +``` |
|
| 8 | +svn checkout --username=pyratebeard http://example.com/svn/repo/trunk localrepo |
|
| 9 | + |
|
| 10 | +svn status |
|
| 11 | + |
|
| 12 | +svn update /path |
|
| 13 | +``` |
|
| 14 | + |
|
| 15 | +only need add for new directories or files |
|
| 16 | +``` |
|
| 17 | +svn add /path|file |
|
| 18 | + |
|
| 19 | +svn commit -m "message" /path|file |
|
| 20 | +``` |
|
| 21 | + |
|
| 22 | +[dave child cheatsheet]: https://www.cheatography.com/davechild/cheat-sheets/subversion/ |
|
| 23 | +[abbey workshop howto]: https://www.abbeyworkshop.com/howto/misc/svn01/ |
virtualisation/docker.md
| ... | ... | @@ -0,0 +1,17 @@ |
| 1 | +# docker |
|
| 2 | + |
|
| 3 | +## pull files from inside container |
|
| 4 | +``` |
|
| 5 | +docker cp <container_id>:/path/to/file /path/to/save |
|
| 6 | +``` |
|
| 7 | + |
|
| 8 | +## clean up old images |
|
| 9 | +``` |
|
| 10 | +docker rmi -f $(docker images --filter "dangling=true" -q) |
|
| 11 | +docker image prune |
|
| 12 | +``` |
|
| 13 | + |
|
| 14 | + |
|
| 15 | +## ref |
|
| 16 | +- :1: https://stackoverflow.com/questions/44027873/how-to-create-a-new-docker-image-from-a-running-container-on-amazon |
|
| 17 | +- :2: https://stackoverflow.com/questions/43699368/configure-docker-daemon-port-to-enable-docker-apis/43713435#43713435 |
virtualisation/kubernetes.md
| ... | ... | @@ -0,0 +1,11 @@ |
| 1 | +# kubernetes |
|
| 2 | + |
|
| 3 | +- list pods for all namespaces |
|
| 4 | +``` |
|
| 5 | +kubectl get pods --all-namespaces |
|
| 6 | +``` |
|
| 7 | + |
|
| 8 | +- get list of containers in pod |
|
| 9 | +``` |
|
| 10 | +kubectl -n <namespace> get pods <pod_name> -o jsonpath='{.spec.containers[*].name}' |
|
| 11 | +``` |
virtualisation/lxc.md
| ... | ... | @@ -0,0 +1,292 @@ |
| 1 | +# lxc |
|
| 2 | + |
|
| 3 | +## set up |
|
| 4 | +### arch |
|
| 5 | +[archwiki_setup][] |
|
| 6 | +[redhat_guide][] |
|
| 7 | +[linux_containers_guide][] |
|
| 8 | + |
|
| 9 | +* install `lxc` |
|
| 10 | +``` |
|
| 11 | +pacman -S lxc dnsmasq |
|
| 12 | +``` |
|
| 13 | +* or on debian |
|
| 14 | +``` |
|
| 15 | +apt-get install lxc dnsmasq-base uidmap acl libpam-cgfs |
|
| 16 | +echo "kernel.unprivileged_userns_clone=1" >> /etc/sysctl.conf |
|
| 17 | +reboot |
|
| 18 | +``` |
|
| 19 | +* add the following line to '/etc/pam.d/system-login' |
|
| 20 | +* (debian '/etc/pam.d/login') |
|
| 21 | +``` |
|
| 22 | +session optional pam_cgfs.so -c freezer,memory,name=systemd,unified |
|
| 23 | +``` |
|
| 24 | +* create '/etc/default/lxc-net' config |
|
| 25 | +``` |
|
| 26 | +# Leave USE_LXC_BRIDGE as "true" if you want to use lxcbr0 for your |
|
| 27 | +# containers. Set to "false" if you'll use virbr0 or another existing |
|
| 28 | +# bridge, or mavlan to your host's NIC. |
|
| 29 | +USE_LXC_BRIDGE="true" |
|
| 30 | + |
|
| 31 | +# If you change the LXC_BRIDGE to something other than lxcbr0, then |
|
| 32 | +# you will also need to update your /etc/lxc/default.conf as well as the |
|
| 33 | +# configuration (/var/lib/lxc/<container>/config) for any containers |
|
| 34 | +# already created using the default config to reflect the new bridge |
|
| 35 | +# name. |
|
| 36 | +# If you have the dnsmasq daemon installed, you'll also have to update |
|
| 37 | +# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon. |
|
| 38 | +LXC_BRIDGE="lxcbr0" |
|
| 39 | +LXC_ADDR="10.0.3.1" |
|
| 40 | +LXC_NETMASK="255.255.255.0" |
|
| 41 | +LXC_NETWORK="10.0.3.0/24" |
|
| 42 | +LXC_DHCP_RANGE="10.0.3.2,10.0.3.254" |
|
| 43 | +LXC_DHCP_MAX="253" |
|
| 44 | +# Uncomment the next line if you'd like to use a conf-file for the lxcbr0 |
|
| 45 | +# dnsmasq. For instance, you can use 'dhcp-host=mail1,10.0.3.100' to have |
|
| 46 | +# container 'mail1' always get ip address 10.0.3.100. |
|
| 47 | +#LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf |
|
| 48 | + |
|
| 49 | +# Uncomment the next line if you want lxcbr0's dnsmasq to resolve the .lxc |
|
| 50 | +# domain. You can then add "server=/lxc/10.0.3.1' (or your actual $LXC_ADDR) |
|
| 51 | +# to your system dnsmasq configuration file (normally /etc/dnsmasq.conf, |
|
| 52 | +# or /etc/NetworkManager/dnsmasq.d/lxc.conf on systems that use NetworkManager). |
|
| 53 | +# Once these changes are made, restart the lxc-net and network-manager services. |
|
| 54 | +# 'container1.lxc' will then resolve on your host. |
|
| 55 | +#LXC_DOMAIN="lxc" |
|
| 56 | +``` |
|
| 57 | +* add the following lines to '/etc/lxc/default.conf' |
|
| 58 | +``` |
|
| 59 | +lxc.net.0.type = veth |
|
| 60 | +lxc.net.0.link = lxcbr0 |
|
| 61 | +lxc.net.0.flags = up |
|
| 62 | +lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx |
|
| 63 | +lxc.idmap = u 0 100000 65536 |
|
| 64 | +lxc.idmap = g 0 100000 65536 |
|
| 65 | +``` |
|
| 66 | +* start `lxc-net` |
|
| 67 | +``` |
|
| 68 | +systemctl restart lxc-net |
|
| 69 | +``` |
|
| 70 | +* check that `lxcbr0` bridge has been created |
|
| 71 | +``` |
|
| 72 | +ip a s lxcbr0 |
|
| 73 | +``` |
|
| 74 | +* create '/etc/subuid' |
|
| 75 | +``` |
|
| 76 | +pyratebeard:100000:65536 |
|
| 77 | +``` |
|
| 78 | +* create '/etc/subgid' |
|
| 79 | +``` |
|
| 80 | +pyratebeard:100000:65536 |
|
| 81 | +``` |
|
| 82 | +* create '/etc/lxc/lxc-usernet' for allowing user to create network devices |
|
| 83 | +``` |
|
| 84 | +pyratebeard veth lxcbr0 10 |
|
| 85 | +``` |
|
| 86 | + - `veth` - virtual ethernet |
|
| 87 | + - `lxcbr0` - network bridge |
|
| 88 | + - `10` - number of devices allowed |
|
| 89 | +* create local dirs |
|
| 90 | +``` |
|
| 91 | +mkdir ~/.{config,cache}/lxc |
|
| 92 | +mkdir ~/.local/share |
|
| 93 | +``` |
|
| 94 | +* create '~/.config/lxc/default.conf' |
|
| 95 | +``` |
|
| 96 | +lxc.net.0.type = veth |
|
| 97 | +lxc.net.0.link = lxcbr0 |
|
| 98 | +lxc.net.0.flags = up |
|
| 99 | +lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx |
|
| 100 | +lxc.idmap = u 0 100000 65536 |
|
| 101 | +lxc.idmap = g 0 100000 65536 |
|
| 102 | +``` |
|
| 103 | +* make '~/.local/share' executable and set acls |
|
| 104 | +``` |
|
| 105 | +chmod +x ~/.local/share |
|
| 106 | +setfacl -m u:100000:x /home/pyratebeard |
|
| 107 | +setfacl -m u:100000:x /home/pyratebeard/.local |
|
| 108 | +``` |
|
| 109 | + |
|
| 110 | +## create container |
|
| 111 | +``` |
|
| 112 | +lxc-create -t download -n <name> |
|
| 113 | +# or |
|
| 114 | +lxc-create -n <name> -t download -- --dist alpine --release 3.13 --arch amd64 |
|
| 115 | +lxc-start -d -n <name> |
|
| 116 | +lxc-attach -n <name> |
|
| 117 | +``` |
|
| 118 | +or |
|
| 119 | +``` |
|
| 120 | +vi ~/.local/share/lxc/powerzone/rootfs/etc/shadow |
|
| 121 | + # remove `!` from root user |
|
| 122 | +lxc-start -n powerzone |
|
| 123 | +lxc-console -n powerzone |
|
| 124 | +``` |
|
| 125 | + |
|
| 126 | +* python module for script api [5][] |
|
| 127 | + |
|
| 128 | +## alpine linux config |
|
| 129 | +``` |
|
| 130 | +apk update |
|
| 131 | +apk upgrade |
|
| 132 | +passwd |
|
| 133 | +adduser pyratebeard |
|
| 134 | +adduser pyratebeard wheel |
|
| 135 | +apk add doas vim openssh |
|
| 136 | +vim /etc/doas.conf |
|
| 137 | + permit nopass pyratebeard |
|
| 138 | +rc-update add sshd |
|
| 139 | +rc-service sshd start |
|
| 140 | +rc-status |
|
| 141 | +``` |
|
| 142 | +logout (`ctrl-a q` to exit console) |
|
| 143 | + |
|
| 144 | +## debian config |
|
| 145 | +``` |
|
| 146 | +passwd |
|
| 147 | +apt-get install openssh-server python3 |
|
| 148 | +vi /etc/ssh/sshd_config |
|
| 149 | + PermitRootLogin yes |
|
| 150 | +systemctl reload sshd |
|
| 151 | +``` |
|
| 152 | + |
|
| 153 | +### alpine services |
|
| 154 | +add files to /etc/init.d/ |
|
| 155 | +``` |
|
| 156 | +#!/sbin/openrc-run |
|
| 157 | +name="test" |
|
| 158 | +command="echo hello" |
|
| 159 | +``` |
|
| 160 | + |
|
| 161 | +## known errors |
|
| 162 | +* systemd containers fail to start |
|
| 163 | +``` |
|
| 164 | +Failed to mount cgroup at /sys/fs/cgroup/systemd: Operation not permitted |
|
| 165 | +[!!!!!!] Failed to mount API filesystems, freezing. |
|
| 166 | +Freezing execution. |
|
| 167 | +``` |
|
| 168 | + * '/sys/fs/cgroup/systemd' dir doesn't exist |
|
| 169 | + * to fix, create dir, mount cgroup, set permissions [lxc-users group post][] |
|
| 170 | +``` |
|
| 171 | +sudo mkdir /sys/fs/cgroup/systemd |
|
| 172 | +sudo mount -t cgroup -o none,name=systemd systemd /sys/fs/cgroup/systemd |
|
| 173 | +sudo chown pyratebeard:users /sys/fs/cgroup/systemd |
|
| 174 | +``` |
|
| 175 | +* keyserver not found on `lxc-create` |
|
| 176 | + * to fix add `DOWNLOAD_KEYSERVER="hkp://keyserver.ubuntu.com:80"` before `lxc-create` cmd |
|
| 177 | + * https://github.com/lxc/lxc/issues/3874 |
|
| 178 | + * https://github.com/lxc/lxc/commit/f2a5d95d00a55bed27ef9920d67617cc75fecad8 |
|
| 179 | +``` |
|
| 180 | +Setting up the GPG keyring |
|
| 181 | +ERROR: Unable to fetch GPG key from keyserver |
|
| 182 | +``` |
|
| 183 | +* wait_ondaemonized_startL 833 no such file or directory |
|
| 184 | + * `lxc-start` in foreground gives segmentation fault |
|
| 185 | +``` |
|
| 186 | +lxc-start -n test /bin/sh |
|
| 187 | +``` |
|
| 188 | + |
|
| 189 | +## moving containers |
|
| 190 | +[so answer] |
|
| 191 | +``` |
|
| 192 | +lxc-stop -n $NAME |
|
| 193 | +cd ~/.local/share/lxc/$NAME |
|
| 194 | +sudo tar --numeric-owner -czvf ../$NAME.tgz ./* |
|
| 195 | +chown pyratebeard: ../$NAME.tgz |
|
| 196 | +rsync -avh $NAME.tgz user@hostname:.local/share/lxc/ |
|
| 197 | +ssh user@hostname |
|
| 198 | +mkdir ~/.local/share/lxc/$NAME |
|
| 199 | +cd ~/.local/share/lxc/$NAME |
|
| 200 | +sudo tar --numeric-owner -xzvf ../$NAME.tgz . |
|
| 201 | +``` |
|
| 202 | +* tried this between wht-rht-obj and fka |
|
| 203 | + * container runs (after adding user gid to /etc/subgid) |
|
| 204 | + * no ip address though. veth is created but ip4 not given |
|
| 205 | +* check dir/file permissions |
|
| 206 | + * .local/share/lxc/$NAME = 755 100000:100000 |
|
| 207 | + * .local/share/lxc/$NAME/rootfs/* = 100000:100000 |
|
| 208 | + * .local/share/lxc/$NAME/config = pyratebeard:users |
|
| 209 | + |
|
| 210 | +## example |
|
| 211 | +### setting up multiple websites behind haproxy |
|
| 212 | +* install openzfs |
|
| 213 | +* start lx daemon |
|
| 214 | +``` |
|
| 215 | +sudo apt install zfsutils-linux |
|
| 216 | +sudo lxd init |
|
| 217 | +``` |
|
| 218 | +* answer questions |
|
| 219 | +* launch containers |
|
| 220 | +``` |
|
| 221 | +lxc launch ubuntu:18.04 subdomain1 |
|
| 222 | +lxc launch ubuntu:18.04 subdomain2 |
|
| 223 | +lxc launch ubuntu:18.04 haproxy |
|
| 224 | +lxc list |
|
| 225 | +``` |
|
| 226 | + |
|
| 227 | +[archwiki_setup]: https://wiki.archlinux.org/title/Linux_Containers#Setup |
|
| 228 | +[redhat_guide]: https://www.redhat.com/sysadmin/exploring-containers-lxc |
|
| 229 | +[linux_containers_guide]: https://linuxcontainers.org/lxc/getting-started/ |
|
| 230 | +[lxc-users group post]: https://groups.google.com/a/lists.linuxcontainers.org/g/lxc-users/c/r_8Eww6i9tA |
|
| 231 | +[so answer]: https://stackoverflow.com/questions/23427129/how-do-i-backup-move-lxc-containers#34194341 |
|
| 232 | +[5]: https://github.com/lxc/python3-lxc |
|
| 233 | + |
|
| 234 | +gollum haproxy log pastebin radicale site stagit znc ftp |
|
| 235 | + |
|
| 236 | +## debian test |
|
| 237 | +* debian 10 (aws instance) |
|
| 238 | + * 'admin' user |
|
| 239 | +* `apt-get install lxc dnsmasq-base uidmap` |
|
| 240 | +* follow setup (see own wiki) |
|
| 241 | +* building debian containers works well |
|
| 242 | +* ansible playbook runs using proxyjump in ssh config |
|
| 243 | +* attempting to run haproxy in container |
|
| 244 | +* iptables rules for prerouting |
|
| 245 | + * `sudo iptables -t nat -I PREROUTING -i eth0 -p TCP -d <public_ip>/24 --dport 80 -j DNAT --to-destination <haproxy_ip>:80` |
|
| 246 | + * `sudo iptables -t nat -I PREROUTING -i eth0 -p TCP -d <public_ip>/24 --dport 443 -j DNAT --to-destination <haproxy_ip>:443` |
|
| 247 | + * `sudo iptables -L -n -t nat` |
|
| 248 | + * `sudo apt-get install iptables-persistent` |
|
| 249 | +* haproxy container |
|
| 250 | + * `apt-get install haproxy` |
|
| 251 | + * add the following to the 'global' section |
|
| 252 | + ``` |
|
| 253 | + ... |
|
| 254 | + maxconn 2048 |
|
| 255 | + ... |
|
| 256 | + tune.ssl.default-dh-param 2048 |
|
| 257 | + ``` |
|
| 258 | + * add the following to the 'defaults' section |
|
| 259 | + ``` |
|
| 260 | + ... |
|
| 261 | + option forwardfor |
|
| 262 | + option http-server-close |
|
| 263 | + ... |
|
| 264 | + ``` |
|
| 265 | + * create frontend |
|
| 266 | + ``` |
|
| 267 | + frontend http_frontend |
|
| 268 | + bind *:80 |
|
| 269 | + acl infratuxture hdr(host) -i penguin.renre.com |
|
| 270 | + #acl anotherlxc hdr(host) -i anotherdomain.renre.com |
|
| 271 | + use_backend penguin if infratuxture |
|
| 272 | + #use_backend anotherdomain if anotherlxc |
|
| 273 | + ``` |
|
| 274 | + * create backend |
|
| 275 | + ``` |
|
| 276 | + backend penguin |
|
| 277 | + balance leastconn |
|
| 278 | + http-request set-header X-Client-IP %[src] |
|
| 279 | + server penguin 10.0.3.162:80 check |
|
| 280 | + |
|
| 281 | + #backend anotherdomain |
|
| 282 | + # balance leastconn |
|
| 283 | + # http-request set-header X-Client-IP %[src] |
|
| 284 | + # server anotherdomain an.oth.er.ip:80 check |
|
| 285 | + ``` |
|
| 286 | +* infratuxture container |
|
| 287 | + * `apt-get install git lighttpd` |
|
| 288 | + * pull git repo in html dir |
|
| 289 | + ``` |
|
| 290 | + cd /var/www/html |
|
| 291 | + git clone https://git.renre.com/infrastructure/linux-patching.github.io.git . |
|
| 292 | + ``` |
virtualisation/qemu.md
| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | +# qemu |
|
| 2 | + |
|
| 3 | +## create vm |
|
| 4 | +``` |
|
| 5 | +qemu-img create -f qcow2 <filename> 4g |
|
| 6 | +``` |
|
| 7 | +- `create [-f FMT] filename [size]` |
|
| 8 | + - size is disk image size in bytes |
|
| 9 | + |
|
| 10 | +## install system |
|
| 11 | +``` |
|
| 12 | +qemu-system-x86_64 -m 1g -cdrom /path/to/iso -boot order=d -drive file=<filename>,format=qcow2 |
|
| 13 | +``` |
|
| 14 | + |
|
| 15 | +## start system |
|
| 16 | +``` |
|
| 17 | +qemu-system-x86_64 <filename> |
|
| 18 | +``` |