Go では proxychains みたいな方法が利用できないので、プログラム側で対応してやる必要がある。Go で SOCKS5 プロキシを利用する - 詩と創作・思索のひろばと同様に golang.org/x/net/proxy
を利用して実現できる。
import ( "database/sql""net""golang.org/x/net/proxy""github.com/go-sql-driver/mysql" ) func main() { dialer := proxy.FromEnvironment() mysql.RegisterDial("tcp", func(network string) (net.Conn, error) { return dialer.Dial("tcp", network) }) db, err := sql.Open("mysql", dsn) .... }
という感じ。DSN を変える必要はない。
all_proxy=socks5://127.0.0.1:10000
などと環境変数を設定して起動してやる。