Linux/SIMH4/Microvax 3900
Make a bridge, and stuff your external interface into the bridge. This should be possible with your startup scripts. If not, do it now. Then, create TUN/TAPs for any SIMH install(s) you want. Forward on the bridge using sysctl params and masq the private address space.
# Masquerade all rfc1918 ipv4 addresses
iptables -t nat -A POSTROUTING -m comment --comment "Masquerade all rfc1918 addresses" -s 192.168.0.0/16 -j MASQUERADE
ip link add name br0 type bridge
ip tuntap add dev tap0 mode tap
ip link set br0 type bridge stp_state 1
ip link set dev tap0 master br0
# Make more TAPs if you need them
If you use DHCP from your ISP, call that on the bridge for your global IP4 address. Set (also) a private address on the bridge (br0), such as 192.168.20.1. Set any TAP master to the bridge. In your SIMH .ini file, set the DECNET lladdr to correspond with your node number. Up the TAP. Start SIMH. You might have to pause SIMH and reattach the TAP. Once it works, continue. @NETCONFIG for DECNET (leeaving out DECNET config because you did not ask for that). For TCPIP, @TCPIP$CONFIG. Enable BIND client. @TCPIP$IP6_SETUP. If you can get an ip6 bank, you can use radvd for RA on the bridge.
# radvd.conf
# Bridge
interface br0 {
AdvSendAdvert on;
# DNS servers to use.
# Google's
# RDNSS 2001:4860:4860::8888 2001:4860:4860::8844 {
# OpenDNS's
RDNSS 2620:0:ccc::2 2620:0:ccd::2 {
};
# Some ISPs want these
AdvManagedFlag on;
AdvOtherConfigFlag on;
# The prefix you're serving.
# This prefix is gotten from 'dhclient -6 -v -P $EXT_INTERFACE'
prefix xxxx:70xx:6xxx:a711::/64
{
AdvOnLink on;
AdvAutonomous on;
};
};
SYS$SYSTEM:MODPARAMS.DAT needs fixing; make sure INTSTKPAGES=20. Example:
SCSNODE="TEOSTR"
SCSSYSTEMID=1037
VAXCLUSTER=0
WINDOW_SYSTEM=1
INTSTKPAGES=20
ADD_GBLPAGES=10000
ADD_GBLSECTIONS=100
ADD_NPAGEDYN=800000
ADD_NPAGEVIR=800000
MIN_SPTREQ=6000
Set static routes, give your SIMH VMS host a private IP such as 192.168.20.2. Set nameservers.
$ tcpip
TCPIP> SET NAME_SERVICE /SERVER=208.67.222.222 /enable /system
$! Some config files and stuff for networking can go in tcpip$etc
$ tcpip show interface
Packets
Interface IP_Addr Network mask Receive Send MTU
LO0 127.0.0.1 255.0.0.0 0 0 4096
QE0 192.168.20.2 255.255.255.0 26405 14 1500
$ tcpip show route
DYNAMIC
Type Destination Gateway
AN 0.0.0.0 192.168.20.1
AH 127.0.0.1 127.0.0.1
AN 192.168.20.0/24 192.168.20.2
AH 192.168.20.2 192.168.20.2
$ mc TCPIP$IFCONFIG -a
LO0: flags=100c89<UP,LOOPBACK,NOARP,MULTICAST,SIMPLEX,NOCHECKSUM>
inet 127.0.0.1 netmask ff000000 ipmtu 4096
inet6 ::1
QE0: flags=c43<UP,BROADCAST,RUNNING,MULTICAST,SIMPLEX>
inet 192.168.20.2 netmask ffffff00 broadcast 192.168.20.255 ipmtu 1500
inet6 fe80::a800:12f:5e10:d43
TN0: flags=80<NOARP>
$ show net
Product: DECNET Node: TEOSTR Address(es): 1.13
Product: TCP/IP Node: teostr.lan Address(es): 192.168.20.2
# ip -c addr show
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 pfifo_fast master br0 state UP group default qlen 1000
link/ether 6c:4b:90:15:7c:1a brd ff:ff:ff:ff:ff:ff
inet6 fe80::6e4b:90ff:fe17:7c1d/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 60:11:b3:5f:a3:bf brd ff:ff:ff:ff:ff:ff
inet 192.168.30.1/24 brd 192.168.30.255 scope global wlan0
valid_lft forever preferred_lft forever
inet6 xxxx:7080:603a:axxx::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::6114:b1ff:fe6f:a3bf/64 scope link
valid_lft forever preferred_lft forever
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 5c:4b:95:17:7c:2d brd ff:ff:ff:ff:ff:ff
inet xx.xx.xx.68/19 brd 255.255.255.255 scope global dynamic noprefixroute br0
valid_lft 60628sec preferred_lft 49828sec
inet 192.168.20.1/24 brd 192.168.20.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::614b:71f1:fa17:7c1d/64 scope link
valid_lft forever preferred_lft forever
5: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 92:79:8b:86:95:90 brd ff:ff:ff:ff:ff:ff
6: tap1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 06:2e:1c:2e:93:fb brd ff:ff:ff:ff:ff:ff
7: tap2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 85:03:09:27:aa:51 brd ff:ff:ff:ff:ff:ff
8: tap3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 9b:46:75:e9:0e:a9 brd ff:ff:ff:ff:ff:ff
inet6 fe80::9c11:75ab:fee9:ea9/64 scope link
valid_lft forever preferred_lft forever
$ mc tcpip$dig ipv6.google.com aaaa
; <<>> DiG 8.1 <<>> ipv6.google.com aaaa
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUERY SECTION:
;; ipv6.google.com, type = AAAA, class = IN
;; ANSWER SECTION:
ipv6.google.com. 1W IN CNAME ipv6.l.google.com.
ipv6.l.google.com. 5M IN AAAA 2607:f8b0:4009:819::200e
;; Total query time: 60 msec
;; FROM: teostr.lan to SERVER: default -- 208.67.222.222
;; WHEN: Thu Nov 24 02:28:30 2022
;; MSG SIZE sent: 33 rcvd: 82
Some addresses fudged for privacy reasons.
88A5 F7B4 06BF 9C81 744D 5785 7B21 C783 99C8 6100 |