Debian 11 (server)でのDNSの設定

/etc/network/interfacesに以下のようにdns-nameservers行を記載
auto enp6s0
iface enp6s0 inet static
  bridge_ports enp6s0
  address 192.168.1.100
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-nameservers 192.168.1.254
参考: https://wiki.debian.org/NetworkConfiguration

My favorite simple Linux software

Category Name
Window Manager OpenBOX
Task Bar Tint2
Terminal RXVT unicode
Filer PCManFM
Music Player Pragha

loopbackデバイス上のbtrfsパーテションを拡張する

loopback元のファイルを拡張 (ofとseekの右辺を適宜変更)
dd if=/dev/zero of=file_name.img bs=1 count=0 seek=100G
loopbackデバイスのサイズを更新(最後のloopbackデバイスを適宜変更)
losetup -c /dev/loop3
btrfsを拡張(最後のマウントポイントを適宜変更)
btrfs filesystem resize max /mnt/mount_point

sshでSOCKSプロキシを作成し、遠隔地経由でWebコンテツを取得する

概要

下図のように、My SiteからWeb Server Xには直接接続できないが、SSH接続可能な遠隔地のSSH Server(remote_server)経由なら接続できる場合に、My SiteのWebブラウザにWebServer Xのページを表示する方法を説明する。

ここでのremote_serverとして、AWSやAzureなども利用可能。その場合、HTTPリクエスト元の地域を接続するデータセンタの拠点にすることができる。

SOCKSプロキシの作成

My SiteのSSH clientで以下のように入力する。これは、My SiteにSOCKSプロキシを作成する。また、HTTPリクエストはremote_server経由で行われる。ポート番号8080は変更可能。
ssh -D 8080 remote_server

Webブラウザの設定

Webブラウザで、SOCKSプロキシを設定する。SSH Clientをlocalhost(同じマシン)で実行している場合、次のようにlocalhostを指定する。

Chrome

google-chrome --proxy-server="socks://localhost:8080"

Firefox

メニュー -> 設定 -> ネットワーク設定 -> 接続設定 でプロキシの設定画面が表示される。ここでSOCKSホスト欄にSSH clientのIPアドレスとポートを入力する。

Dockerコンテナに手動でvethインターフェスを追加する

vethペア作成

VETH0=veth-a1
VETH1=veth-b1
ip link add $VETH0 type veth peer name $VETH1
vethの片方をホストのbridgeに接続
sudo brctl addif br0 $VETH0
sudo ip link set $VETH0 up

Dockerコンテナを起動

コンテナを--network noneで起動する。NAMEの右辺(コンテナ名)は適宜変更可。
NAME=container
docker run --network none --rm -it --name $NAME debian 

ipコマンドのため、コンテナのnetnsを/var/run/netns以下にリンク

(CONTAINER_PID=`docker inspect $NAME --format '{{.State.Pid}}'` && sudo ln -s /proc/$CONTAINER_PID/ns/net /var/run/netns/$NAME)

コンテナにvethを設置し、IPアドレスを設定

CONTAINER_IP=192.168.19.11
CONTAINER_IP_PREFIX=24
sudo ip link set $VETH1 netns $NAME up
sudo ip netns exec $NAME ip addr add $CONTAINER_IP/$CONTAINER_IP_PREFIX dev $VETH1
/proc/sys/net/bridge/bridge-nf-call-iptablesが1で、かつ、iptablesのFORWARDチェーンのポリシーがDROPなら、次の設定も必要
iptables -A FORWARD -s $CONTAINER_IP -j ACCEPT
iptables -A FORWARD -d $CONTAINER_IP -j ACCEPT
あるいは、
iptables -A FORWARD -m physdev --physdev-in $VETH0 -j ACCEPT
iptables -A FORWARD -m physdev --physdev-out $VETH0 -j ACCEPT

noVNCの使い方例

準備

Ubuntuでは以下のパッケージをインストール
  • novnc
  • websockify

実行

以下では、localhostの5900ポートをリスンしているVNCを8001番ポートでHTTPとしてサーブ
websockify --web=/usr/share/novnc/ 8001 localhost:5900