為了看小説
繼上次發現了可以用 Kindle App 直接買漫畫看之後,過了一個月。

似乎是因為 Google Play 條約沒辦法在 Kindle App 直接買書看,加上本來也對 e-ink 有興趣,於是決定買一部 Kindle 試試看。

本來想買最新版的,但到店裏才發現 Kindle 幾個版本都有現貨,於是臨時改變了主意買了屏幕最大的 Kindle Oasis。

(這玩意超棒!下一頁的按鈕是上面,改成下面的話發現不就手,於是改了回去。習慣了之後也沒問題了。)

弄了兩天,不知怎的還是沒辦法直接在裏面的 Store 買書,按講買的時候説「エラーが発生しました」沒有任何解釋,一頭霧水。唉沒辦法只好用 PC 買了。

後來懷疑是不是要弄個 VPN,可是 Kindle 沒有自帶 VPN 功能,有點麻煩⋯⋯總之能試的都先試過一遍吧。於是用軌道炮直接將 Kindle 的 packets 射到日本的 VPS(Virtual Private Server)上,還是不行。

最後重設了 Kindle 後就成功了,也就是説在 Kindle 連上網之前需要日本的 IP,麻煩死了。

發現新大陸

於是這樣過了半個月,逛 amazon 的時候手殘點進了 Prime Video 的部門。

嗯?這個好像可以免費看動畫?能看嗎?

能看!慢著,也就是説電視機的 Prime Video 功能也可以照搬嗎?軌道炮!

(可以!)

於是隨便點了幾個來看,啊原來這個跟這個也動畫化了。

玩了兩天厭了,動畫實在太多空氣,吃不消。

VPN 比較快

VPS 的網速實在有點慢,而且流量是收費的,加上我是臨急用 ssh 的 socks 5 弄出來的玩意,效率有點差。

於是這幾天就在弄這個,意外的困難。

首先在 docker hub 上找到了這個,總之弄個 deployment 推上 k8s 上面看看。

不行⋯⋯Google 救命,這裏加要 capabilities: NET_ADMIN 還要需要 host 的 tun device
...
        securityContext:
          capabilities:
            add: [ "NET_ADMIN" ]
...
        volumeMounts:
          - mountPath: /dev/net/tun
            readOnly: true
            name: tun-device
...
再來一次:
2024-04-07 13:35:18 ROUTE_GATEWAY 10.244.0.1/255.255.0.0 IFACE=eth0 HWADDR=de:03:e8:8b:70:e9
2024-04-07 13:35:18 TUN/TAP device tun0 opened
2024-04-07 13:35:18 /sbin/ip link set dev tun0 up mtu 1500
2024-04-07 13:35:18 /sbin/ip link set dev tun0 up
2024-04-07 13:35:18 /sbin/ip addr add dev tun0 10.8.1.7/24
2024-04-07 13:35:18 /etc/openvpn/up.sh tun0 1500 0 10.8.1.7 255.255.255.0 init
2024-04-07 13:35:18 /sbin/ip route add 5.181.235.51/32 via 10.244.0.1
2024-04-07 13:35:18 /sbin/ip route add 0.0.0.0/1 via 10.8.1.1
2024-04-07 13:35:19 /sbin/ip route add 128.0.0.0/1 via 10.8.1.1
2024-04-07 13:35:19 Initialization Sequence Completed
2024-04-07 13:35:19 Data Channel: cipher 'AES-256-GCM', peer-id: 2, compression: 'stub'
2024-04-07 13:35:19 Timers: ping 60, ping-restart 180
2024-04-07 13:35:19 Protocol options: explicit-exit-notify 1
好像可以了,簡單測試一下:
$ curl -x socks5://10.0.0.1:31486 https://whatismyip.k8s.astropenguin.net/i/
2.56.252.158
可以了。

到這裏為止只有 Pod 進入了 VPN,還得弄一個 danted 的 sidecar,再用 redsocks 將 host 的 packet 射到這個 pod 裏面:

弄好了後又發現,不知怎的 DNS 沒辦法 resolve,nslookup google.com 會噴 192.0.0.88 給我。於是決定不用 VPN 給的 name server ,這裏得改 route,還得改 vpn 的設定要他不要弄 /etc/resolv.conf

deployment.yaml
apiVersion: v1
data:
  GROUP: "Standard VPN servers"
  RANDOM_TOP: "10"
  RECREATE_VPN_CRON: "5 */3 * * *"
  OPENVPN_OPTS: "--mute-replay-warnings"
kind: ConfigMap
metadata:
  name: nordvpn-conf
  namespace: default

---

apiVersion: v1
kind: ConfigMap
metadata:
  name: nordvpn-danted-conf
data:
  PreInit: |
    #!/bin/sh
    sed -i "s/pull$/pull\npull-filter ignore \"dhcp-option DNS\"/g" /etc/nordvpn/template.ovpn
  FixDNSRoute: |
    #!/bin/sh
    for i in $( grep "nameserver" /etc/resolv.conf | cut -d ' ' -f2 ); do
      ip route add $i via 10.244.0.1 dev eth0
    done
  ConfigFile: |
    logoutput: stderr
    internal: 0.0.0.0 port = 43421
    external: tun0

    socksmethod: none
    clientmethod: none

    user.privileged: root
    user.unprivileged: nobody

    client pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: error
    }

    socks pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        command: bind connect udpassociate
        log: error
        socksmethod: none
    }

    socks pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        command: bindreply udpreply
        log: error # connect disconnect iooperation
    }

---

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: default
  labels:
    app: nordvpn-ja
  name: nordvpn-ja
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nordvpn-ja
  template:
    metadata:
      labels:
        app: nordvpn-ja
    spec:
      imagePullSecrets:
        - name: registry-auth
      containers:
      - image: registry.k8s.astropenguin.net/danted:2024.04.07.06
        name: danted
        volumeMounts:
          - name: danted-conf
            mountPath: "/etc/danted-runtime.conf"
            subPath: danted.conf
      - image: azinchen/nordvpn
        name: nordvpn
        securityContext:
          capabilities:
            add: [ "NET_ADMIN" ]
        envFrom:
          - configMapRef:
              name: nordvpn-conf
          - secretRef:
              name: nordvpn-auth
        command:
          - "sh"
          - "-c"
          - "/pre-init && /init"
        env:
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
          - name: COUNTRY
            value: "Japan"
        volumeMounts:
          - mountPath: /dev/net/tun
            readOnly: true
            name: tun-device
          - name: danted-conf
            mountPath: "/pre-init"
            subPath: pre-init
          - name: danted-conf
            mountPath: "/etc/nordvpn/init/49-fixdnsroute.sh"
            subPath: fix-dns-route
      volumes:
        - name: tun-device
          hostPath:
            path: /dev/net/tun
        - name: danted-conf
          configMap:
            items:
            - key: ConfigFile
              path: danted.conf
            - key: PreInit
              path: pre-init
              mode: 0755
            - key: FixDNSRoute
              path: fix-dns-route
              mode: 0755
            name: nordvpn-danted-conf

---

apiVersion: v1
kind: Service
metadata:
  name: nordvpn-ja-socks5
spec:
  selector:
    app: nordvpn-ja
  type: NodePort
  ports:
    - name: app
      port: 43421
      targetPort: 43421
      nodePort: 31486
重點是上面的 PreInitFixDNSRoute 吧。前者在 /init 之前在 /etc/nordvpn/template.ovpn(這裏我直接是解封 nordvpn 的 image 研究了一輪) 加個 pull-filter ignore "dhcp-option DNS" 讓 OpenVPN 不要改原來的 DNS 設定,後者設定 route,讓 DNS 的 packet 不要經 VPN

結果電視機反而偵測到我用 VPN 不讓我看了,什麼鬼。看來這邊只能繼續用 VPS,反正我也不怎麼看就是,沒大影響。

Kindle 方面沒有問題。

自帶的查字功能很方便,還會儲存查過的字,還可以 wikipedia 和 Google Translate!

小説的話最近才開始看,大概看了十幾本左右吧?直接看生菜才發現有的網譯版好快,有的差了 5~6 卷,通常翻了頭一兩卷就沒下文了。然後我主要就是重看這部分的,新的也有看一點,最近這本《 手に入れた催眠アプリで夢のハーレム生活を送りたい》好看!
Tag(s): diary
Profile picture
斟酌 鵬兄
Sun Apr 07 2024 14:55:23 GMT+0000 (Coordinated Universal Time)
Last modified: Sun Apr 07 2024 15:44:17 GMT+0000 (Coordinated Universal Time)
Comments
No comments here.
Do you even comment?
website: 
Not a valid website
Invalid email format
Please enter your email
*Name: 
Please enter a name
Submit
抱歉,Google Recaptcha 服務被牆掉了,所以不能回覆了