redirectNFT.sh 971 B

12345678910111213141516171819
  1. #!/bin/bash
  2. ## systemctl enable nftables
  3. ## nft -a list ruleset
  4. RemoteAddr="${1:-}"
  5. LocalPort="${2:-443}"
  6. [ "$(cat /proc/sys/net/ipv4/ip_forward)" != "1" ] && echo "1" >/proc/sys/net/ipv4/ip_forward
  7. nft list table ip nat >/dev/null 2>&1 || nft add table ip nat
  8. nft list chain ip nat prerouting >/dev/null 2>&1 || nft add chain ip nat prerouting { type nat hook prerouting priority dstnat \; policy accept \; }
  9. nft list chain ip nat postrouting >/dev/null 2>&1 || nft add chain ip nat postrouting { type nat hook postrouting priority srcnat \; policy accept \; }
  10. nft insert rule ip nat prerouting tcp dport "${LocalPort}" dnat to "${RemoteAddr}"
  11. nft insert rule ip nat postrouting ip daddr "${RemoteAddr%:*}" tcp dport "${RemoteAddr#*:}" masquerade
  12. nft insert rule inet filter forward ip daddr "${RemoteAddr%:*}" tcp dport "${RemoteAddr#*:}" ip dscp set 46
  13. nft insert rule inet filter forward ip saddr "${RemoteAddr%:*}" tcp sport "${RemoteAddr#*:}" ip dscp set 46