Author Archives: Ethan Banks
Author Archives: Ethan Banks
Network design for high frequency trading and big data networks is the topic of today’s Heavy Networking. If you’re interested in what it’s like to carefully manage data center latency and maintain your sanity in a zero downtime environment, this is your show. Our guests are are Jeremy Filliben and Marc Washco of Jump Trading.
The post Heavy Networking 620: High Frequency Trading And Big Data Network Design appeared first on Packet Pushers.
If there’s an IPv6 netblock you’d like your host to stop responding to, one tactic is to blackhole the traffic. That is, send any traffic from your host destined to the troublesome IPv6 netblock into a blackhole. Blackholes are also called null routes.
Let’s say I’m getting repeated SQL injection attacks from various hosts in IPv6 block 2a09:8700:1::/48. Just a totally random example with no basis in reality whatsoever, whoever you are in Belize. There are various ways I can defend against this, but one (sorta ugly) option (I don’t actually recommend, read to the bottom to see my logic) is to create a blackhole aka a null route.
On many flavors of Linux, including Ubuntu 18.04, 20.04, and 22.04, I can accomplish this task with the ip route utility. Let’s take a look at our existing host routing table.
user@host:~$ ip route
default via 123.94.146.1 dev enp1s0 proto dhcp src 123.94.146.227 metric 100
169.254.169.254 via 123.94.146.1 dev enp1s0 proto dhcp src 123.94.146.227 metric 100
123.94.146.0/23 dev enp1s0 proto kernel scope link src 123.94.146. Continue reading
An ‘r’ before a string tells the Python interpreter to treat backslashes as a literal (raw) character. Normally, Python uses backslashes as escape characters. Prefacing the string definition with ‘r’ is a useful way to define a string where you need the backslash to be an actual backslash and not part of an escape code that means something else in the string.
1. In this example, Python will interpret each ‘\t’ found in this string as a tab. That is, the backslash+t is interpreted as an escape sequence with a special purpose.
>>> 'path\to\the\thing' 'path\to\the\thing' >>> print('path\to\the\thing') path o he hing >>>
2. By adding the leading r, Python will know that the backslashes are to be interpreted as literal characters and not escape sequences. Interestingly, note how Python represents the literal backslash–as an escape sequence of backslash + backslash.
>>> r'path\to\the\thing' 'path\\to\\the\\thing' >>> print(r'path\to\the\thing') path\to\the\thing >>>
3. This means another way to handle the literal backslash problem is to use backslash + backslash in your string definition. However, this feels like a clunkier way to define the string to me when compared to using ‘r’. Using ‘r’ makes for, I think, more readable Continue reading
I was a guest on the February 22, 2022 episode of the So You Wanna Be In IT podcast.
I chatted with hosts Pat & Dean about how my career got started. I’ve been around IT since the 90s, so my start was with Novell certification that became Microsoft certification that became Cisco certification. We talk about certs and the job opportunities I took advantage of driven by those certs.
Along the way, we discussed whether or not someone can have a successful IT career without a college degree. Put another way, are IT certifications good enough? I think that yes, you can have a successful IT career without a degree, but that the question, “College degree. Yes or no?” deserves more analysis than a simple yes or no answer offers. Like anything, choosing not to attend university has tradeoffs. We discuss this at some length in the podcast.
The degree vs. certifications part of the discussion transitioned into my takes on IT careers in 2022–especially related to infrastructure. 2022 is an interesting time to be in IT. There are Continue reading
On today’s Heavy Networking episode we talk with sponsor Console Connect, which provides software-defined interconnections for enterprises and service providers. Guests Paul Gampe and Jay Turner dig into the Console Connect catalog, including Internet On-Demand, CloudRouter, and some of the interesting partner integrations that provide unique connectivity options.
The post Heavy Networking 618: Building Virtual Networks With Console Connect (Sponsored) appeared first on Packet Pushers.
I pass access tokens, authentication keys, and other secrets to Python scripts via environment variables rather than encode these values into the scripts themselves. If I was a real boy, I’d use a solution like Hashicorp Vault or other secrets management tool (there’s a bunch of them), but I haven’t yet found the motivation to learn such a tool.
I’m not sure I’d want to build and maintain such a tool if I did find the motivation. I’m sort of lazy sometimes is what I’m saying. So for now, environment variables it is.
PyCharm allows for the passing of environment variables from the IDE to a script, whether that script is running locally or in a remote SSH deployment you’ve configured for your project.
To set the environment variables, select Edit Configurations from the Run menu.
Or in the project bar above the code window, click the dropdown with your script name, and select Edit Configurations.
Either way brings up the following configuration window for the scripts in your project. In the Environment variables: field, click the icon.
That will bring up the following window you can use to configure the environment variables.
Fantastic. But how do we assign the Continue reading
Today's Day Two Cloud is a sponsored episode with StrongDM, which helps engineers and IT professionals get access to databases, servers, Kubernetes clusters, switches, Web apps, and more from a desktop or laptop. We dive into StrongDM's proxy model, integrations with directories and ID stores, audit features, and more.
The post Day Two Cloud 134: Simplifying Infrastructure Access With StrongDM (Sponsored) appeared first on Packet Pushers.
Today's Heavy Networking makes the case for why network engineers should consider using the Go language instead for their automation needs. Guest Darren Parkinson makes a strong argument for adding Go to your tool kit.
The post Heavy Networking 617: Go Vs. Python For Network Engineers appeared first on Packet Pushers.
Today on the Tech Bytes podcast, we continue our conversation with sponsor Singtel on how to make your existing WAN communicate with cloud services more effectively. The traditional MPLS network lacks the flexibility to support modern cloud services, such as breaking out traffic for content inspection or security scanning. Our guest to help us understand how to get your traditional network more cloud-ready is Mark Seabrook, Global Solutions Manager at Singtel.
The post Tech Bytes: Getting Traditional Networks Cloud-Ready With Singtel (Sponsored) appeared first on Packet Pushers.
Today on the Day Two Cloud podcast we offer tips and advice for those on the job market, from finding new opportunities, building a professional network, prepping for interviews, handling curve-ball interview questions, managing nerves, and more.
The post Day Two Cloud 133: Tips For Tech Interview Success appeared first on Packet Pushers.
If you’re using CLI tool curl to retrieve data from a remote API, you might send forth a command like so.
curl -H "Authorization: Bearer access_token_goes_here" \ https://api.provider.com/thing/you_want/index.json
That results in a lovely JSON payload that makes you happy.
Let’s say that according to the API documentation, /thing/you_want/ accepts query parameters so that you can scope what you want to know about. Excellent! Instinctively, you try the following…
curl -H "Authorization: Bearer access_token_goes_here" \ https://api.provider.com/thing/you_want/index.json?scope=1
Rather than a scoped JSON payload that also makes you happy, you get back a message indicating that the API endpoint is displeased. Your sacrifice was deemed unworthy. Nay, YOU are unworthy. You are decidedly not happy.
What has gone wrong to anger the API gods so? You asked the wrong question of the API. More accurately, curl hasn’t formatted the request in quite the way you intuited it would.
To appease the API deities, the appropriate sacrifice comes in the form of a tweaked curl command. For example…
curl -G -H "Authorization: Bearer access_token_goes_here" \ https://api.provider.com/thing/you_want/index.json \ -d "query=scope=1"
We added a “-G” flag to make sure curl is sending a GET and not Continue reading
Web3 is the term for an emerging technology movement that aims to create a more decentralized Internet and put more ownership in the hands of individual users and consumers. At present Web3 is associated with cryptocurrencies and NFTs, but it's worth understanding the technological underpinnings of Web3, particularly blockchain and its broader applications. Our guide to Web3 infrastructure is Josh Neuroth.
The post Day Two Cloud 132: What Web3 Means For Infrastructure Engineers appeared first on Packet Pushers.