我必须连接到runc
容器内运行的服务,我已经编写了下面的脚本并且能够从主机 ping 容器,并可以从容器内部连接到互联网。
但我无法从另一台主机 ping 该容器。
桥接设置
#!/bin/bash
sudo brctl addbr br0
sudo ip addr add 192.1xx.xxx.xx/24 dev br0
sudo ip link set br0 up
网络设置工具
bridge_name=br0
net_interface=alpine_network
cont_ip=192.1xx.xxx.xx
veth_host=veth_host
veth_guest=veth_guest
sudo ip link add $veth_host type veth peer name $veth_guest
sudo ip link set $veth_host up
sudo brctl addif $bridge_name $veth_host
sudo ip netns add $net_interface
sudo ip link set $veth_guest netns $net_interface
sudo ip netns exec $net_interface ip link set $veth_guest name eth1
sudo ip netns exec $net_interface ip addr add $cont_ip/24 dev eth1
sudo ip netns exec $net_interface ip link set eth1 up
ip netns exec $net_interface ip route add default via 192.168.20.1 #bridge ip as a deafult gateway
sudo iptables -t nat -A POSTROUTING -s 192.1xx.xxx.xx/24 -j MASQUERADE #connecting to the internet
sudo sysctl -w net.ipv4.ip_forward=1
答案1
这其他主机没有该子网位置的概念。
- 添加主机路由
- 添加路由到另一台主机的默认网关