All Projects → sbezverk → Nfproxy

sbezverk / Nfproxy

Licence: apache-2.0
nftables based proxy for kubernetes

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Nfproxy

Cloak
A censorship circumvention tool to evade detection against state adversaries
Stars: ✭ 942 (+2938.71%)
Mutual labels:  proxy
Concent
State management that tailored for react, it is simple, predictable, progressive and efficient.
Stars: ✭ 882 (+2745.16%)
Mutual labels:  proxy
Xx Net
A proxy tool to bypass GFW.
Stars: ✭ 30,963 (+99780.65%)
Mutual labels:  proxy
Docker Apache Proxy
Apache web server like proxy to Docker
Stars: ✭ 9 (-70.97%)
Mutual labels:  proxy
Switcher
Run SSH and HTTP(S) on the same port
Stars: ✭ 877 (+2729.03%)
Mutual labels:  proxy
Proxly
Easiest way to proxy a list of objects/functions in Javascript
Stars: ✭ 15 (-51.61%)
Mutual labels:  proxy
Proxadd
A tool that adds proxy entries to Proxychains config
Stars: ✭ 26 (-16.13%)
Mutual labels:  proxy
Proxy Polyfill
Proxy object polyfill
Stars: ✭ 951 (+2967.74%)
Mutual labels:  proxy
Proxychains Ng
proxychains ng (new generation) - a preloader which hooks calls to sockets in dynamically linked programs and redirects it through one or more socks/http proxies. continuation of the unmaintained proxychains project. the sf.net page is currently not updated, use releases from github release page instead.
Stars: ✭ 7,553 (+24264.52%)
Mutual labels:  proxy
New Pac
翻墙-科学上网、免费翻墙、免费科学上网、免费自由上网、fanqiang、翻墙梯子、免费软件/方法,一键翻墙浏览器,免费shadowsocks/ss/ssr/v2ray/goflyway账号/节点分享,vps一键搭建翻墙服务器脚本/教程,电脑、手机、iOS、安卓、windows、Mac、Linux、路由器翻墙
Stars: ✭ 31,869 (+102703.23%)
Mutual labels:  proxy
Bbc Rss
BBC iPlayer programmes / Nitro API to RSS adaptor app
Stars: ✭ 10 (-67.74%)
Mutual labels:  proxy
Hacking With Golang
Golang安全资源合集
Stars: ✭ 876 (+2725.81%)
Mutual labels:  proxy
Broxy
An HTTP/HTTPS intercept proxy written in Go.
Stars: ✭ 912 (+2841.94%)
Mutual labels:  proxy
Nginx Tutorial
这是一个 Nginx 极简教程,目的在于帮助新手快速入门 Nginx。
Stars: ✭ 845 (+2625.81%)
Mutual labels:  proxy
Citadelcore
Cross platform filtering HTTP/S proxy based on .NET Standard 2.0.
Stars: ✭ 28 (-9.68%)
Mutual labels:  proxy
Danby
A webserver that's also a grpc proxy for browsers
Stars: ✭ 26 (-16.13%)
Mutual labels:  proxy
Grpc Tools
A suite of gRPC debugging tools. Like Fiddler/Charles but for gRPC.
Stars: ✭ 881 (+2741.94%)
Mutual labels:  proxy
Arbitrium Rat
Arbitrium is a cross-platform, fully undetectable remote access trojan, to control Android, Windows and Linux and doesn't require any firewall exceptions or port forwarding rules
Stars: ✭ 938 (+2925.81%)
Mutual labels:  proxy
S3proxy
Access other storage backends via the S3 API
Stars: ✭ 952 (+2970.97%)
Mutual labels:  proxy
Simple Traefik Proxy And Services
Get your own services running - within just a few minutes and with automatic SSL.
Stars: ✭ 21 (-32.26%)
Mutual labels:  proxy

Build Status

kubernetes proxy functionality based on nftables

Goal

The goal of nfproxy is to provide high performance and scalable kubernetes proxy supporting both ipv4 and ipv6. nfproxy is not a 1:1 copy of kube-proxy (iptables) in terms of features. nfproxy is not going to cover all corner cases and special features addressed by kube-proxy if these features compromise the design principle of nfproxy which is

"There is no rules per service or per endpoint".

Meaning that the number of rules in one chain will not correlate to a number of services or endpoints.

This principle will limit applications of nfproxy, but on the other hand for the cases where nfproxy can be used, it will offer superior performance and scalability when comparing with kube-proxy (iptables) implementation.

Build

To build nfproxy binary execute:

make nfproxy

Resulting binary will be placed in ./bin folder.

To build a container:

make container IMAGE_VERSION=X.X.X REGISTRY_NAME=docker.io/somename

This command will compile nfproxy binary and then will build a docker container tagged with REGISTRY_NAME/nfproxy:IMAGE_VERSION and placed it in a local docker image store.

Deployment

  1. Find a way to save kube-proxy's daemonset yaml, once you tired of playing with nfproxy, this yaml will allow you to restore the default kube-proxy functionality.

  2. Delete kube-proxy daemonset and clean up iptables entries if kube-proxy ran in iptables mode

kubectl delete daemonset -n kube-system kube-proxy

sudo iptables -F -t nat

sudo iptables -F -t filter
  1. Modify nfproxy deployment yaml file to specify your cluster's CIDR and location of nfproxy image if not default is used. nfproxy deployment file is located at ./deployment/nfproxy.yaml.

Change:

- "57.112.0.0/12"

For your cluster's cidr range.

- "X.Y.Z.0/L"

Where L is length in bits of your cluster's cidr.

Specify Api server public endpoint for API_PUBLIC_ENDPOINT variable, for example:

- name: API_PUBLIC_ENDPOINT
  value: "https://192.168.80.221:6443"

To use EndpointSlice controller instead of Endpoints controller add:

- --endpointslice
- "true"
  1. Deploy nfproxy
kubectl create -f ./deployment/nfproxy.yaml
  1. Check nfproxy pod's log
kubectl logs -n kube-system nfproxy-blah

If nfproxy started successfully, pod's log will contain messages about discovered services.

  1. To delete nfproxy
kubectl delete -f ./deployment/nfproxy.yaml

Status

nfproxy testing is done by running SIG-Network E2E tests in a 2 and 5 nodes clusters. The command line to run tests is the following:

 ./bazel-bin/test/e2e/e2e.test  -ginkgo.focus="\[sig-network\].*Service" -kubeconfig={location of kubeconfig file} -dns-domain={cluster's domain name}

Below is the summary of results:

2 and 5 nodes clusters, Calico CNI, Endpoints Controller

Summarizing 2 Failures:

[Fail] [sig-network] EndpointSlice [Feature:EndpointSlice] version v1 [It] should create Endpoints and EndpointSlices for Pods matching a Service 
test/e2e/network/endpointslice.go:216

[Fail] [sig-network] Services [It] should handle load balancer cleanup finalizer for service [Slow] 
test/e2e/framework/service/wait.go:79

Ran 28 of 4845 Specs in 2138.719 seconds
FAIL! -- 26 Passed | 2 Failed | 0 Pending | 4817 Skipped

First failure is related to EndpointSlice controller being not enabled. Second failure is not nfproxy related as it fails the same way in cases where nfproxy is not used.

2 and 5 nodes clusters, Calico CNI, EndpointSlice Controller

Summarizing 1 Failure:

[Fail] [sig-network] Services [It] should handle load balancer cleanup finalizer for service [Slow] 
test/e2e/framework/service/wait.go:79

Ran 28 of 4845 Specs in 2042.535 seconds
FAIL! -- 27 Passed | 1 Failed | 0 Pending | 4817 Skipped
--- FAIL: TestE2E (2042.55s)
FAIL

Failure is not nfproxy related as it fails the same way in cases where nfproxy is not used.

Contributors, reviewers, testers are welcome!!!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].