vpn: allow traffic outside vpn
This commit is contained in:
		
							parent
							
								
									b085e22f80
								
							
						
					
					
						commit
						364980bf63
					
				
					 1 changed files with 61 additions and 68 deletions
				
			
		
							
								
								
									
										129
									
								
								system/vpn.nix
									
										
									
									
									
								
							
							
						
						
									
										129
									
								
								system/vpn.nix
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -5,85 +5,78 @@
 | 
			
		|||
 | 
			
		||||
  networking.nftables = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    ruleset =
 | 
			
		||||
      let
 | 
			
		||||
        allowIncomming = port: ''
 | 
			
		||||
          table inet allow${toString port} {
 | 
			
		||||
              chain allowIncoming {
 | 
			
		||||
                  type filter hook input priority -100; policy accept;
 | 
			
		||||
                  tcp dport ${toString port} ct mark set 0x00000f41 meta mark set 0x6d6f6c65
 | 
			
		||||
              }
 | 
			
		||||
              chain allowOutgoing {
 | 
			
		||||
                  type route hook output priority -100; policy accept;
 | 
			
		||||
                  tcp sport ${toString port} ct mark set 0x00000f41 meta mark set 0x6d6f6c65
 | 
			
		||||
              }
 | 
			
		||||
    ruleset = ''
 | 
			
		||||
      table inet allowAll {
 | 
			
		||||
          chain allowIncoming {
 | 
			
		||||
              type filter hook input priority -100; policy accept;
 | 
			
		||||
              tcp dport 0-10999 ct mark set 0x00000f41 meta mark set 0x6d6f6c65
 | 
			
		||||
          }
 | 
			
		||||
        '';
 | 
			
		||||
      in
 | 
			
		||||
      ''
 | 
			
		||||
        ${allowIncomming 9022}
 | 
			
		||||
        ${allowIncomming 5000}
 | 
			
		||||
          chain allowOutgoing {
 | 
			
		||||
              type route hook output priority -100; policy accept;
 | 
			
		||||
              tcp sport 0-10999 ct mark set 0x00000f41 meta mark set 0x6d6f6c65
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
        ######################################
 | 
			
		||||
        #       _            _               #
 | 
			
		||||
        #    __| | ___   ___| | _____ _ __   #
 | 
			
		||||
        #   / _` |/ _ \ / __| |/ / _ \ '__|  #
 | 
			
		||||
        #  | (_| | (_) | (__|   <  __/ |     #
 | 
			
		||||
        #   \__,_|\___/ \___|_|\_\___|_|     #
 | 
			
		||||
        #                                    #
 | 
			
		||||
        ######################################
 | 
			
		||||
      ######################################
 | 
			
		||||
      #       _            _               #
 | 
			
		||||
      #    __| | ___   ___| | _____ _ __   #
 | 
			
		||||
      #   / _` |/ _ \ / __| |/ / _ \ '__|  #
 | 
			
		||||
      #  | (_| | (_) | (__|   <  __/ |     #
 | 
			
		||||
      #   \__,_|\___/ \___|_|\_\___|_|     #
 | 
			
		||||
      #                                    #
 | 
			
		||||
      ######################################
 | 
			
		||||
 | 
			
		||||
        # This gets sent to the vpn so it's safe
 | 
			
		||||
      # This gets sent to the vpn so it's safe
 | 
			
		||||
 | 
			
		||||
        table ip nat {
 | 
			
		||||
            chain DOCKER {
 | 
			
		||||
                iifname "docker0" counter packets 0 bytes 0 return
 | 
			
		||||
            }
 | 
			
		||||
      table ip nat {
 | 
			
		||||
          chain DOCKER {
 | 
			
		||||
              iifname "docker0" counter packets 0 bytes 0 return
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
            chain POSTROUTING {
 | 
			
		||||
                type nat hook postrouting priority srcnat; policy accept;
 | 
			
		||||
                oifname != "docker0" ip saddr 172.17.0.0/16 counter packets 0 bytes 0 masquerade
 | 
			
		||||
            }
 | 
			
		||||
          chain POSTROUTING {
 | 
			
		||||
              type nat hook postrouting priority srcnat; policy accept;
 | 
			
		||||
              oifname != "docker0" ip saddr 172.17.0.0/16 counter packets 0 bytes 0 masquerade
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
            chain PREROUTING {
 | 
			
		||||
                type nat hook prerouting priority dstnat; policy accept;
 | 
			
		||||
                fib daddr type local counter packets 5 bytes 252 jump DOCKER
 | 
			
		||||
            }
 | 
			
		||||
          chain PREROUTING {
 | 
			
		||||
              type nat hook prerouting priority dstnat; policy accept;
 | 
			
		||||
              fib daddr type local counter packets 5 bytes 252 jump DOCKER
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
            chain OUTPUT {
 | 
			
		||||
                type nat hook output priority -100; policy accept;
 | 
			
		||||
                ip daddr != 127.0.0.0/8 fib daddr type local counter packets 0 bytes 0 jump DOCKER
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        table ip filter {
 | 
			
		||||
            chain DOCKER {
 | 
			
		||||
            }
 | 
			
		||||
          chain OUTPUT {
 | 
			
		||||
              type nat hook output priority -100; policy accept;
 | 
			
		||||
              ip daddr != 127.0.0.0/8 fib daddr type local counter packets 0 bytes 0 jump DOCKER
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
      table ip filter {
 | 
			
		||||
          chain DOCKER {
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
            chain DOCKER-ISOLATION-STAGE-1 {
 | 
			
		||||
                iifname "docker0" oifname != "docker0" counter packets 0 bytes 0 jump DOCKER-ISOLATION-STAGE-2
 | 
			
		||||
                counter packets 0 bytes 0 return
 | 
			
		||||
            }
 | 
			
		||||
          chain DOCKER-ISOLATION-STAGE-1 {
 | 
			
		||||
              iifname "docker0" oifname != "docker0" counter packets 0 bytes 0 jump DOCKER-ISOLATION-STAGE-2
 | 
			
		||||
              counter packets 0 bytes 0 return
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
            chain DOCKER-ISOLATION-STAGE-2 {
 | 
			
		||||
                oifname "docker0" counter packets 0 bytes 0 drop
 | 
			
		||||
                counter packets 0 bytes 0 return
 | 
			
		||||
            }
 | 
			
		||||
          chain DOCKER-ISOLATION-STAGE-2 {
 | 
			
		||||
              oifname "docker0" counter packets 0 bytes 0 drop
 | 
			
		||||
              counter packets 0 bytes 0 return
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
            chain FORWARD {
 | 
			
		||||
                type filter hook forward priority filter; policy accept;
 | 
			
		||||
                counter packets 0 bytes 0 jump DOCKER-USER
 | 
			
		||||
                counter packets 0 bytes 0 jump DOCKER-ISOLATION-STAGE-1
 | 
			
		||||
                oifname "docker0" ct state related,established counter packets 0 bytes 0 accept
 | 
			
		||||
                oifname "docker0" counter packets 0 bytes 0 jump DOCKER
 | 
			
		||||
                iifname "docker0" oifname != "docker0" counter packets 0 bytes 0 accept
 | 
			
		||||
                iifname "docker0" oifname "docker0" counter packets 0 bytes 0 accept
 | 
			
		||||
            }
 | 
			
		||||
          chain FORWARD {
 | 
			
		||||
              type filter hook forward priority filter; policy accept;
 | 
			
		||||
              counter packets 0 bytes 0 jump DOCKER-USER
 | 
			
		||||
              counter packets 0 bytes 0 jump DOCKER-ISOLATION-STAGE-1
 | 
			
		||||
              oifname "docker0" ct state related,established counter packets 0 bytes 0 accept
 | 
			
		||||
              oifname "docker0" counter packets 0 bytes 0 jump DOCKER
 | 
			
		||||
              iifname "docker0" oifname != "docker0" counter packets 0 bytes 0 accept
 | 
			
		||||
              iifname "docker0" oifname "docker0" counter packets 0 bytes 0 accept
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
            chain DOCKER-USER {
 | 
			
		||||
                counter packets 0 bytes 0 return
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
          chain DOCKER-USER {
 | 
			
		||||
              counter packets 0 bytes 0 return
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      '';
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue