| 
									
										
										
										
											2022-10-29 17:45:06 -04:00
										 |  |  | #!/usr/local/bin/bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cleanup() { | 
					
						
							| 
									
										
										
										
											2022-10-29 21:47:32 -04:00
										 |  |  |     ngctl shutdown host_link2: | 
					
						
							|  |  |  |     ngctl shutdown host_uplink0: | 
					
						
							|  |  |  |     ngctl shutdown host_bridge0: | 
					
						
							| 
									
										
										
										
											2022-10-29 22:44:35 -04:00
										 |  |  |     ngctl shutdown wg_link2: | 
					
						
							|  |  |  |     ngctl shutdown wg_uplink0: | 
					
						
							|  |  |  |     ngctl shutdown wg_bridge0: | 
					
						
							| 
									
										
										
										
											2022-10-31 21:28:35 -04:00
										 |  |  |     ngctl shutdown host_link3: | 
					
						
							|  |  |  |     ngctl shutdown host_uplink1: | 
					
						
							|  |  |  |     ngctl shutdown host_bridge1: | 
					
						
							| 
									
										
										
										
											2022-10-29 17:45:06 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | setup_netgraph_start() { | 
					
						
							|  |  |  |     cleanup | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-31 21:28:35 -04:00
										 |  |  |     # Create a bridge for jails that only speak wireguard | 
					
						
							| 
									
										
										
										
											2022-10-29 17:45:06 -04:00
										 |  |  |     ngctl -d -f - <<EOF | 
					
						
							|  |  |  | mkpeer . eiface hook ether | 
					
						
							| 
									
										
										
										
											2022-10-29 21:47:32 -04:00
										 |  |  | name .:hook host_uplink0 | 
					
						
							| 
									
										
										
										
											2022-10-29 17:45:06 -04:00
										 |  |  | EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ngctl -d -f - <<EOF | 
					
						
							| 
									
										
										
										
											2022-10-29 21:47:32 -04:00
										 |  |  | mkpeer host_uplink0: bridge ether link0 | 
					
						
							|  |  |  | name host_uplink0:ether host_bridge0 | 
					
						
							| 
									
										
										
										
											2022-10-29 17:45:06 -04:00
										 |  |  | EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ngctl -d -f - <<EOF | 
					
						
							| 
									
										
										
										
											2022-10-29 21:47:32 -04:00
										 |  |  | mkpeer host_bridge0: eiface link2 ether | 
					
						
							|  |  |  | name host_bridge0:link2 host_link2 | 
					
						
							| 
									
										
										
										
											2022-10-29 17:45:06 -04:00
										 |  |  | EOF | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-29 21:47:32 -04:00
										 |  |  |     ifconfig $(ngctl msg 'host_uplink0:' getifname | grep Args | cut -d '"' -f 2) name host_uplink0 10.193.223.1/24 up | 
					
						
							|  |  |  |     ifconfig $(ngctl msg 'host_bridge0:link2' getifname | grep Args | cut -d '"' -f 2) name host_link2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Create internal bridge for jails that are forced through wireguard | 
					
						
							| 
									
										
										
										
											2022-10-29 22:44:35 -04:00
										 |  |  |     ngctl -d -f - <<EOF | 
					
						
							|  |  |  | mkpeer . eiface hook ether | 
					
						
							|  |  |  | name .:hook wg_uplink0 | 
					
						
							|  |  |  | EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ngctl -d -f - <<EOF | 
					
						
							|  |  |  | mkpeer wg_uplink0: bridge ether link0 | 
					
						
							|  |  |  | name wg_uplink0:ether wg_bridge0 | 
					
						
							|  |  |  | EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ngctl -d -f - <<EOF | 
					
						
							|  |  |  | mkpeer wg_bridge0: eiface link2 ether | 
					
						
							|  |  |  | name wg_bridge0:link2 wg_link2 | 
					
						
							|  |  |  | EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ifconfig $(ngctl msg 'wg_uplink0:' getifname | grep Args | cut -d '"' -f 2) name wg_uplink0 10.241.199.1/24 up | 
					
						
							|  |  |  |     ifconfig $(ngctl msg 'wg_bridge0:link2' getifname | grep Args | cut -d '"' -f 2) name wg_link2 | 
					
						
							| 
									
										
										
										
											2022-10-31 21:28:35 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # Create a bridge for jails given full access to NAT | 
					
						
							|  |  |  |     ngctl -d -f - <<EOF | 
					
						
							|  |  |  | mkpeer . eiface hook ether | 
					
						
							|  |  |  | name .:hook host_uplink1 | 
					
						
							|  |  |  | EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ngctl -d -f - <<EOF | 
					
						
							|  |  |  | mkpeer host_uplink1: bridge ether link0 | 
					
						
							|  |  |  | name host_uplink1:ether host_bridge1 | 
					
						
							|  |  |  | EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ngctl -d -f - <<EOF | 
					
						
							|  |  |  | mkpeer host_bridge1: eiface link2 ether | 
					
						
							|  |  |  | name host_bridge1:link2 host_link3 | 
					
						
							|  |  |  | EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ifconfig $(ngctl msg 'host_uplink1:' getifname | grep Args | cut -d '"' -f 2) name host_uplink1 10.213.177.1/24 up | 
					
						
							|  |  |  |     ifconfig $(ngctl msg 'host_bridge1:link2' getifname | grep Args | cut -d '"' -f 2) name host_link3 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-29 17:45:06 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | setup_netgraph_stop() { | 
					
						
							|  |  |  |     cleanup | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [ "$1" = "start" ]; then | 
					
						
							|  |  |  |     setup_netgraph_start | 
					
						
							|  |  |  | elif [ "$1" = "stop" ]; then | 
					
						
							|  |  |  |     setup_netgraph_stop | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |     >&2 echo "Unrecognized command" | 
					
						
							|  |  |  | fi |