Skip to content

Commit d454a20

Browse files
authored
Merge pull request #231 from mediatemple/only_block_when_road_warrior
Only block external dns when default route is pushed
2 parents 24944b0 + c8ba567 commit d454a20

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

bin/ovpn_genconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -330,8 +330,8 @@ user nobody
330330
group nogroup
331331
EOF
332332

333-
#This was in the heredoc, we use the new function instead
334-
process_push_config "block-outside-dns"
333+
# only block outside dns when we take the default route
334+
[ "$OVPN_DEFROUTE" == "1" ] && process_push_config "block-outside-dns"
335335

336336
[ -n "$OVPN_TLS_CIPHER" ] && echo "tls-cipher $OVPN_TLS_CIPHER" >> "$conf"
337337
[ -n "$OVPN_CIPHER" ] && echo "cipher $OVPN_CIPHER" >> "$conf"

test/tests/conf_options/container.sh

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ CONFIG_REQUIRED_DEFAULT_ROUTE="^route 192.168.254.0 255.255.255.0"
5656
CONFIG_MATCH_DEFAULT_ROUTE=$(busybox grep 'route 192.168.254.0 255.255.255.0' /etc/openvpn/openvpn.conf)
5757

5858
# 9. Should see a push of 'block-outside-dns' by default
59-
CONFIG_REQUIRED_DEFAULT_ROUTE="^push block-outside-dns"
60-
CONFIG_MATCH_DEFAULT_ROUTE=$(busybox grep 'push block-outside-dns' /etc/openvpn/openvpn.conf)
59+
CONFIG_REQUIRED_BLOCK_OUTSIDE_DNS="^push block-outside-dns"
60+
CONFIG_MATCH_BLOCK_OUTSIDE_DNS=$(busybox grep 'push block-outside-dns' /etc/openvpn/openvpn.conf)
6161

6262
# 10. Should see a push of 'dhcp-option DNS' by default
6363
CONFIG_REQUIRED_DEFAULT_DNS_1="^push dhcp-option DNS 8.8.8.8"
@@ -127,6 +127,13 @@ else
127127
abort "==> Config match not found: $CONFIG_REQUIRED_DEFAULT_ROUTE != $CONFIG_MATCH_DEFAULT_ROUTE"
128128
fi
129129

130+
if [[ $CONFIG_MATCH_BLOCK_OUTSIDE_DNS =~ $CONFIG_REQUIRED_BLOCK_OUTSIDE_DNS ]]
131+
then
132+
echo "==> Config match found: $CONFIG_REQUIRED_BLOCK_OUTSIDE_DNS == $CONFIG_MATCH_BLOCK_OUTSIDE_DNS"
133+
else
134+
abort "==> Config match not found: $CONFIG_REQUIRED_BLOCK_OUTSIDE_DNS != $CONFIG_MATCH_BLOCK_OUTSIDE_DNS"
135+
fi
136+
130137
if [[ $CONFIG_MATCH_DEFAULT_DNS_1 =~ $CONFIG_REQUIRED_DEFAULT_DNS_1 ]]
131138
then
132139
echo "==> Config match found: $CONFIG_REQUIRED_DEFAULT_DNS_1 == $CONFIG_MATCH_DEFAULT_DNS_1"
@@ -192,3 +199,32 @@ then
192199
else
193200
abort "==> Config match not found: $CONFIG_REQUIRED_TCP_REMOTE_2 != $CONFIG_MATCH_TCP_REMOTE_2"
194201
fi
202+
203+
# Test non-defroute config
204+
205+
SERV_IP=$(ip -4 -o addr show scope global | awk '{print $4}' | sed -e 's:/.*::' | head -n1)
206+
ovpn_genconfig -d -u udp://$SERV_IP -r "172.33.33.0/24" -r "172.34.34.0/24"
207+
# nopass is insecure
208+
EASYRSA_BATCH=1 EASYRSA_REQ_CN="Travis-CI Test CA" ovpn_initpki nopass
209+
easyrsa build-client-full client-fallback nopass
210+
ovpn_getclient client-fallback | tee /etc/openvpn/config-fallback.ovpn
211+
212+
CONFIG_REQUIRED_BLOCK_OUTSIDE_DNS=""
213+
CONFIG_MATCH_BLOCK_OUTSIDE_DNS=$(busybox grep 'push block-outside-dns' /etc/openvpn/openvpn.conf)
214+
215+
if [[ $CONFIG_MATCH_BLOCK_OUTSIDE_DNS =~ $CONFIG_REQUIRED_BLOCK_OUTSIDE_DNS ]]
216+
then
217+
echo "==> Config match found: $CONFIG_REQUIRED_BLOCK_OUTSIDE_DNS == $CONFIG_MATCH_BLOCK_OUTSIDE_DNS"
218+
else
219+
abort "==> Config match not found: $CONFIG_REQUIRED_BLOCK_OUTSIDE_DNS != $CONFIG_MATCH_BLOCK_OUTSIDE_DNS"
220+
fi
221+
222+
CONFIG_REQUIRED_REDIRECT_GATEWAY=""
223+
CONFIG_MATCH_REDIRECT_GATEWAY=$(busybox grep "redirect-gateway def1" /etc/openvpn/config-fallback.ovpn)
224+
225+
if [[ $CONFIG_MATCH_REDIRECT_GATEWAY =~ $CONFIG_REQUIRED_REDIRECT_GATEWAY ]]
226+
then
227+
echo "==> Config match found: $CONFIG_REQUIRED_REDIRECT_GATEWAY == $CONFIG_MATCH_REDIRECT_GATEWAY"
228+
else
229+
abort "==> Config match not found: $CONFIG_REQUIRED_REDIRECT_GATEWAY != $CONFIG_MATCH_REDIRECT_GATEWAY"
230+
fi

0 commit comments

Comments
 (0)