func ProtectConnections(dnsServer string, p SocketProtector) {
	protector.Configure(p.Protect, dnsServer)
	netx.OverrideDial(protector.DialContext)
	netx.OverrideResolve(protector.Resolve)
	netx.OverrideListenUDP(protector.ListenUDP)
	netx.OverrideDialUDP(protector.DialUDP)
}
ProtectConnections allows connections made by Lantern to be protected from
routing via a VPN. This is useful when running Lantern as a VPN on Android,
because it keeps Lantern's own connections from being captured by the VPN and
resulting in an infinite loop.
package gsnova
import (
	"github.com/yinqiwen/gsnova/common/netx"
	"github.com/yinqiwen/gsnova/common/protector"
)
type SocketProtector interface {
	Protect(fileDescriptor int) error
}