それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

dns で vpn を iodine でやる。 vpn over dns

dnsvpn を iodine

受け側 Linux は、apt でインストール

sudo apt install iodine

抜ける側、ノートPCは brew でインストール

brew install iodine

サーバー側 idoned

iodined をサーバー側で起動 ( -d の d を忘れるミスに注意)

sudo iodined -f -P 7JOewIHrCKTZEaFg -d iodine0 -l 192.168.2.9 10.0.0.1 iodine.example.com

コマンド書式

sudo iodined -f -P <PASS> -d iodine0 -l <Listen> <ip> <dnsname>

DNS名は、名前解決のペイロードに、VPNを入れるので、dns名が必要

クライアント側 idone

クライアント側で iodineを起動

sudo iodine -f -P 7JOewIHrCKTZEaFg 126.93.36.233 iodine.example.com

2023-04-29

iodine を久しぶりに試したら、Inbound Port 53 Blocking / IP53B で53ポートへパケットが飛ばなくなっていた。通告なくポート塞がれるのは、プロバイダへの信頼が揺らぐ。

yahoo bb・ソフトバンク光 は ポートブロックに関して情報を開示してくれない。OP25Bは書いてあるが、IP53Bについては情報を掲載してないし、問い合わせても答えてくれない。表向きの回答は「個別ポートブロックや通信の監視を行いません。」だけど実際にやってるんだよなぁ。

しかも、広報を削除して平気なんですよね。

NAT 例

ルーターdns/udp/53 を 内部へ転送・・・

WAN_IP=$(ifstatus ybb | jsonfilter -e '@["ipv4-address"][0].address')
iptables -t nat -A PREROUTING -m udp -p udp --dst $WAN_IP --dport 53 -j DNAT --to-destination 192.168.2.9:53

または、uci

root@OpenWrt:~# uci show firewall.@redirect[0]
firewall.cfg133837=redirect
firewall.cfg133837.target='DNAT'
firewall.cfg133837.src='wan'
firewall.cfg133837.dest='lan'
firewall.cfg133837.proto='udp'
firewall.cfg133837.dest_ip='192.168.2.9'
firewall.cfg133837.dest_port='53'
firewall.cfg133837.name='iodine-vpn'
firewall.cfg133837.src_dport='53'

速度は、、、出ないですね。。。

takuya@~$ iperf3 -c  10.0.0.1
Connecting to host 10.0.0.1, port 5201
[  5] local 10.0.0.2 port 57718 connected to 10.0.0.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   131 KBytes  1.07 Mbits/sec
[  5]   1.00-2.00   sec  2.11 KBytes  17.3 Kbits/sec
[  5]   2.00-3.00   sec  4.21 KBytes  34.4 Kbits/sec
[  5]   3.00-4.00   sec  2.11 KBytes  17.2 Kbits/sec
[  5]   4.00-5.00   sec  4.21 KBytes  34.5 Kbits/sec
[  5]   5.00-6.00   sec  2.11 KBytes  17.2 Kbits/sec
[  5]   6.00-7.00   sec  4.21 KBytes  34.6 Kbits/sec
[  5]   7.00-8.01   sec  2.11 KBytes  17.2 Kbits/sec
[  5]   8.01-9.00   sec  2.11 KBytes  17.3 Kbits/sec
[  5]   9.00-10.00  sec  4.21 KBytes  34.7 Kbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   158 KBytes   129 Kbits/sec                  sender
[  5]   0.00-22.13  sec  63.2 KBytes  23.4 Kbits/sec                  receiver

iperf Done.

MASQUERADEで出ていく

サーバー側 - 10.0.0.0 は iodined で設定した トンネルネットワーク - -o は家庭内GWへ出ていく インターフェース

LAN_IF=br0
LAN_IP=192.168.2.5
IODONE_DEV=iodine0
IODINE_NET=10.0.0.0/24
sudo iptables -t nat -A POSTROUTING -s $IODINE_NET -o $LAN_IF -j MASQUERADE
sudo iptables -A FORWARD -i $IODONE_DEV -o $LAN_IF -j ACCEPT

クライアント側

デフォルトゲートウェイを切り替える。

IODINE_DEV=iodine
remote=10.0.0.1
ip=$( dig iodine.example.com +short ) 
LAN_IF=en0
## ルーティングを追加して
ip route add $ip dev $LAN_IF
## デフォルトルートを切り替える
ip route default 
ip route add default via $remoe dev $IODINE_DEV

macOSで動かすとき

指定したutun tun2 デバイスを使う。

sudo iodine -f -d tun2 -P 7JOewIHrCKTZEaFg  126.93.36.233 iodine.example.com

SSHなら動く

SSHが使えるのなら、ある程度データ転送はできるかとおもう。4G LTE通信制限を食らったくらいの速度(128kbps)程度は出るといいのだけど、30kbps 程度だしISDNにもテレホタイムにも勝てない。

公衆無線LANでは、DNS問い合わせを止めると証明書エラーになるので、DNSをストップすることはできない、極限状態でも外と通信ができるのがDNSである。恐ろしい。

Chromeで画像をオフにすると、ブラウジングもできる。

画像オフは流石に辛い。。。が