This is a simple TCP/UDP/SCTP port forwarder for network namespaces, so it will require root privileges.
Download all files from this gist in a folder and run:
$ go build ./netns-pf.go
| #!/bin/bash | |
| FW_MARK="$((RANDOM%2147483646 + 1))" | |
| if [ "$(ip -4 rule show fwmark ${FW_MARK})" ] || [ "$(ip -6 rule show fwmark ${FW_MARK})" ]; then | |
| while [ "$(ip -4 rule show fwmark ${FW_MARK})" ] || [ "$(ip -6 rule show fwmark ${FW_MARK})" ]; do | |
| FW_MARK="$((RANDOM%2147483646 + 1))" | |
| done | |
| fi | |
| TABLE="$((RANDOM%2147483396 + 1))" | |
| if [ ! "$(ip -4 route show table ${TABLE} 2>/dev/null || echo 1)" = "1" ] || [ ! "$(ip -6 route show table ${TABLE} 2>/dev/null || echo 1)" = "1" ]; then |
| #!/bin/bash | |
| FW_MARK="$((RANDOM%2147483646 + 1))" | |
| if [ "$(ip -4 rule show fwmark ${FW_MARK})" ] || [ "$(ip -6 rule show fwmark ${FW_MARK})" ]; then | |
| while [ "$(ip -4 rule show fwmark ${FW_MARK})" ] || [ "$(ip -6 rule show fwmark ${FW_MARK})" ]; do | |
| FW_MARK="$((RANDOM%2147483646 + 1))" | |
| done | |
| fi | |
| TABLE="$((RANDOM%2147483396 + 1))" | |
| if [ ! "$(ip -4 route show table ${TABLE} 2>/dev/null || echo 1)" = "1" ] || [ ! "$(ip -6 route show table ${TABLE} 2>/dev/null || echo 1)" = "1" ]; then |