summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Palfrader <peter@palfrader.org>2016-11-26 18:20:14 +0100
committerPeter Palfrader <peter@palfrader.org>2016-11-26 18:20:14 +0100
commit1ad494571d02781603823b81026e1d74853f16d7 (patch)
tree103e7fdb94349800c428b8123463df669418e3b7
parent28923965fedd8735ac0b71b83f852b5f35185f96 (diff)
support multiple listening ports and addresses, support redirecting the default gw
-rwxr-xr-xGenerate23
1 files 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
##########