我有一个 Ubuntu18 服务器,有两个公共地址
我如何创建命名空间并通过第二个公共 IP 连接到互联网?
(需要启动一个程序并强制它使用第二个IP连接到互联网)
ip :
root@vm8950217476:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 9a:40:ef:c5:bb:62 brd ff:ff:ff:ff:ff:ff
inet 130.185.76.181/24 brd 130.185.76.255 scope global eth0
valid_lft forever preferred_lft forever
inet 130.185.76.18/24 brd 130.185.76.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::9840:efff:fec5:bb62/64 scope link
valid_lft forever preferred_lft forever
IP路由:
root@vm8950217476:~# ip route
default via 130.185.76.254 dev eth0 proto static
130.185.76.0/24 dev eth0 proto kernel scope link src 130.185.76.181
我已经达到了这里所述的一些解决方案:
- 将网络命名空间连接到互联网
- 每个命名空间一个公共 IP 地址
- 网络命名空间和公共IP
- https://askubuntu.com/questions/1214876/ubuntu-server-virtual-network-interface-with-internet-access
但经过几天的测试,仍然无法完成这项工作。这个过程对我来说看起来很混乱,特别是我不确定在 netns 命令中需要使用哪些地址( ip addr 、 route 、 gw ,...)
我尝试的最新步骤:
ip netns add test
ip netns exec test ip link set lo up
ip link add link eth0 name test0 type macvlan
ip link set test0 netns test
ip netns exec test ip addr add 130.185.76.18/24 brd + dev test0
ip netns exec test ip link set test0 up
ip netns exec test ip route add default via 130.185.76.254 dev test0
root@vm8950217476:~# ip netns exec test ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 130.185.76.18 icmp_seq=10 Destination Host Unreachable
From 130.185.76.18 icmp_seq=11 Destination Host Unreachable
From 130.185.76.18 icmp_seq=12 Destination Host Unreachable