From 1ad494571d02781603823b81026e1d74853f16d7 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Sat, 26 Nov 2016 18:20:14 +0100 Subject: support multiple listening ports and addresses, support redirecting the default gw --- Generate | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Generate b/Generate index 3a8d53a..11a63a3 100755 --- a/Generate +++ b/Generate @@ -153,6 +153,11 @@ REMOTE_IP=$5 ACTION=$6 echo 0 > /proc/sys/net/ipv4/conf/$TUN_DEV/rp_filter + +#gw=$(ip route show 0.0.0.0/0 | awk \'{print $3; exit }\'); +#ip r add 141.70.64.0/20 via "$gw" +#ip r add 10.0.0.0/8 via "$gw" +true ' ###################################################################################### @@ -645,10 +650,23 @@ hostlist.each{ |host| mtu = 1200 conffile.puts "fragment #{mtu}" conffile.puts "ifconfig %s %s"%[host['vpn_address'], peer['vpn_address']] - conffile.puts "rport #{host['inet_port'][ peer['name'] ]['remote']}" + remote_addr = [] + remote_addr << peer['host_address'] if peer['host_address'] + remote_addr += peer['host_address_extra'] if peer['host_address_extra'] + remote_port = [ host['inet_port'][ peer['name'] ]['remote'] ] + remote_port += peer['host_port_extra'] if peer['host_port_extra'] + if remote_addr.size > 0 then + remote_addr.each do |raddr| + remote_port.each do |rport| + conffile.puts "remote #{raddr} #{rport}" + end + end + else + throw "have host_port_extra but no host_address(_extra)" if peer['host_port_extra'] + conffile.puts "rport #{host['inet_port'][ peer['name'] ]['remote']}" + end conffile.puts "lport #{host['inet_port'][ peer['name'] ]['local']}" unless host['accepts'].nil? conffile.puts "nobind" if host['accepts'].nil? - conffile.puts "remote %s"%[peer['host_address']] if peer['host_address'] if host['bind_address'] conffile.puts "local %s"%[host['bind_address']] elsif host['host_address'] @@ -678,6 +696,7 @@ hostlist.each{ |host| conffile.puts "keepalive 7 30" conffile.puts "verb 3" conffile.puts "script-security 2" if host['openvpn'] == '2.1' + conffile.puts "redirect-gateway def1" if host['default-via'] and host['default-via'] == peer['name'] conffile.close ########## -- cgit v1.2.3